|
14 | 14 | // |
15 | 15 | // All Hexagon intrinsics start with "llvm.hexagon.". |
16 | 16 | let TargetPrefix = "hexagon" in { |
17 | | - /// Hexagon_Intrinsic - Base class for majority of Hexagon intrinsics. |
| 17 | + /// Hexagon_Intrinsic - Base class for the majority of Hexagon intrinsics. |
18 | 18 | class Hexagon_Intrinsic<string GCCIntSuffix, list<LLVMType> ret_types, |
19 | 19 | list<LLVMType> param_types, |
20 | 20 | list<IntrinsicProperty> properties> |
@@ -435,84 +435,6 @@ def int_hexagon_V6_vmaskedstorenq_128B: Hexagon_custom_vms_Intrinsic_128B; |
435 | 435 | def int_hexagon_V6_vmaskedstorentq_128B: Hexagon_custom_vms_Intrinsic_128B; |
436 | 436 | def int_hexagon_V6_vmaskedstorentnq_128B: Hexagon_custom_vms_Intrinsic_128B; |
437 | 437 |
|
438 | | -// Carryo |
439 | | -// The script can't autogenerate clang builtins for vaddcarryo/vsubarryo, |
440 | | -// and they are marked in HexagonIset.py as not having intrinsics at all. |
441 | | -// The script could generate intrinsics, but instead of doing intrinsics |
442 | | -// without builtins, just put the intrinsics here. |
443 | | - |
444 | | -// tag : V6_vaddcarryo |
445 | | -class Hexagon_custom_v16i32v64i1_v16i32v16i32_Intrinsic< |
446 | | - list<IntrinsicProperty> intr_properties = [IntrNoMem]> |
447 | | - : Hexagon_NonGCC_Intrinsic< |
448 | | - [llvm_v16i32_ty,llvm_v64i1_ty], [llvm_v16i32_ty,llvm_v16i32_ty], |
449 | | - intr_properties>; |
450 | | - |
451 | | -// tag : V6_vaddcarryo |
452 | | -class Hexagon_custom_v32i32v128i1_v32i32v32i32_Intrinsic_128B< |
453 | | - list<IntrinsicProperty> intr_properties = [IntrNoMem]> |
454 | | - : Hexagon_NonGCC_Intrinsic< |
455 | | - [llvm_v32i32_ty,llvm_v128i1_ty], [llvm_v32i32_ty,llvm_v32i32_ty], |
456 | | - intr_properties>; |
457 | | - |
458 | | -// Pseudo intrinsics for widening vector isntructions that |
459 | | -// get replaced with the real Hexagon instructions during |
460 | | -// instruction lowering. |
461 | | -class Hexagon_widenvec_Intrinsic |
462 | | - : Hexagon_NonGCC_Intrinsic< |
463 | | - [llvm_anyvector_ty], |
464 | | - [LLVMTruncatedType<0>, LLVMTruncatedType<0>], |
465 | | - [IntrNoMem]>; |
466 | | - |
467 | | -class Hexagon_non_widenvec_Intrinsic |
468 | | - : Hexagon_NonGCC_Intrinsic< |
469 | | - [llvm_anyvector_ty], |
470 | | - [LLVMMatchType<0>, LLVMMatchType<0>], |
471 | | - [IntrNoMem]>; |
472 | | - |
473 | | -// Widening vector add |
474 | | -def int_hexagon_vadd_su: Hexagon_widenvec_Intrinsic; |
475 | | -def int_hexagon_vadd_uu: Hexagon_widenvec_Intrinsic; |
476 | | -def int_hexagon_vadd_ss: Hexagon_widenvec_Intrinsic; |
477 | | -def int_hexagon_vadd_us: Hexagon_widenvec_Intrinsic; |
478 | | - |
479 | | - |
480 | | -// Widening vector subtract |
481 | | -def int_hexagon_vsub_su: Hexagon_widenvec_Intrinsic; |
482 | | -def int_hexagon_vsub_uu: Hexagon_widenvec_Intrinsic; |
483 | | -def int_hexagon_vsub_ss: Hexagon_widenvec_Intrinsic; |
484 | | -def int_hexagon_vsub_us: Hexagon_widenvec_Intrinsic; |
485 | | - |
486 | | -// Widening vector multiply |
487 | | -def int_hexagon_vmpy_su: Hexagon_widenvec_Intrinsic; |
488 | | -def int_hexagon_vmpy_uu: Hexagon_widenvec_Intrinsic; |
489 | | -def int_hexagon_vmpy_ss: Hexagon_widenvec_Intrinsic; |
490 | | -def int_hexagon_vmpy_us: Hexagon_widenvec_Intrinsic; |
491 | | - |
492 | | -def int_hexagon_vavgu: Hexagon_non_widenvec_Intrinsic; |
493 | | -def int_hexagon_vavgs: Hexagon_non_widenvec_Intrinsic; |
494 | | - |
495 | | -class Hexagon_vasr_Intrinsic |
496 | | - : Hexagon_NonGCC_Intrinsic< |
497 | | - [LLVMSubdivide2VectorType<0>], |
498 | | - [llvm_anyvector_ty, LLVMMatchType<0>, llvm_i32_ty], |
499 | | - [IntrNoMem]>; |
500 | | - |
501 | | -def int_hexagon_vasrsat_su: Hexagon_vasr_Intrinsic; |
502 | | -def int_hexagon_vasrsat_uu: Hexagon_vasr_Intrinsic; |
503 | | -def int_hexagon_vasrsat_ss: Hexagon_vasr_Intrinsic; |
504 | | - |
505 | | -class Hexagon_widen_vec_scalar_Intrinsic |
506 | | - : Hexagon_NonGCC_Intrinsic< |
507 | | - [llvm_anyvector_ty], |
508 | | - [LLVMTruncatedType<0>, llvm_i32_ty], |
509 | | - [IntrNoMem]>; |
510 | | - |
511 | | -// Widening vector scalar multiply |
512 | | -def int_hexagon_vmpy_ub_b: Hexagon_widen_vec_scalar_Intrinsic; |
513 | | -def int_hexagon_vmpy_ub_ub: Hexagon_widen_vec_scalar_Intrinsic; |
514 | | -def int_hexagon_vmpy_uh_uh: Hexagon_widen_vec_scalar_Intrinsic; |
515 | | -def int_hexagon_vmpy_h_h: Hexagon_widen_vec_scalar_Intrinsic; |
516 | 438 |
|
517 | 439 | // Intrinsic for instrumentation based profiling using a custom handler. The |
518 | 440 | // name of the handler is passed as the first operand to the intrinsic. The |
|
0 commit comments