//=- HexagonIntrinsicsV60.td - Target Description for Hexagon -*- tablegen *-=// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file describes the Hexagon V60 Compiler Intrinsics in TableGen format. // //===----------------------------------------------------------------------===// let AddedComplexity = 100 in { def : Pat < (v16i32 (int_hexagon_V6_lo (v32i32 VecDblRegs:$src1))), (v16i32 (EXTRACT_SUBREG (v32i32 VecDblRegs:$src1), vsub_lo)) >, Requires<[UseHVXSgl]>; def : Pat < (v16i32 (int_hexagon_V6_hi (v32i32 VecDblRegs:$src1))), (v16i32 (EXTRACT_SUBREG (v32i32 VecDblRegs:$src1), vsub_hi)) >, Requires<[UseHVXSgl]>; def : Pat < (v32i32 (int_hexagon_V6_lo_128B (v64i32 VecDblRegs128B:$src1))), (v32i32 (EXTRACT_SUBREG (v64i32 VecDblRegs128B:$src1), vsub_lo)) >, Requires<[UseHVXDbl]>; def : Pat < (v32i32 (int_hexagon_V6_hi_128B (v64i32 VecDblRegs128B:$src1))), (v32i32 (EXTRACT_SUBREG (v64i32 VecDblRegs128B:$src1), vsub_hi)) >, Requires<[UseHVXDbl]>; } def : Pat <(v512i1 (bitconvert (v16i32 VectorRegs:$src1))), (v512i1 (V6_vandvrt(v16i32 VectorRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v512i1 (bitconvert (v32i16 VectorRegs:$src1))), (v512i1 (V6_vandvrt(v32i16 VectorRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v512i1 (bitconvert (v64i8 VectorRegs:$src1))), (v512i1 (V6_vandvrt(v64i8 VectorRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v512i1 (bitconvert (v8i64 VectorRegs:$src1))), (v512i1 (V6_vandvrt(v8i64 VectorRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v16i32 (bitconvert (v512i1 VecPredRegs:$src1))), (v16i32 (V6_vandqrt(v512i1 VecPredRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v32i16 (bitconvert (v512i1 VecPredRegs:$src1))), (v32i16 (V6_vandqrt(v512i1 VecPredRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v64i8 (bitconvert (v512i1 VecPredRegs:$src1))), (v64i8 (V6_vandqrt(v512i1 VecPredRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v8i64 (bitconvert (v512i1 VecPredRegs:$src1))), (v8i64 (V6_vandqrt(v512i1 VecPredRegs:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(v1024i1 (bitconvert (v32i32 VectorRegs128B:$src1))), (v1024i1 (V6_vandvrt_128B(v32i32 VectorRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v1024i1 (bitconvert (v64i16 VectorRegs128B:$src1))), (v1024i1 (V6_vandvrt_128B(v64i16 VectorRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v1024i1 (bitconvert (v128i8 VectorRegs128B:$src1))), (v1024i1 (V6_vandvrt_128B(v128i8 VectorRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v1024i1 (bitconvert (v16i64 VectorRegs128B:$src1))), (v1024i1 (V6_vandvrt_128B(v16i64 VectorRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v32i32 (bitconvert (v1024i1 VecPredRegs128B:$src1))), (v32i32 (V6_vandqrt_128B(v1024i1 VecPredRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v64i16 (bitconvert (v1024i1 VecPredRegs128B:$src1))), (v64i16 (V6_vandqrt_128B(v1024i1 VecPredRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v128i8 (bitconvert (v1024i1 VecPredRegs128B:$src1))), (v128i8 (V6_vandqrt_128B(v1024i1 VecPredRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; def : Pat <(v16i64 (bitconvert (v1024i1 VecPredRegs128B:$src1))), (v16i64 (V6_vandqrt_128B(v1024i1 VecPredRegs128B:$src1), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; let AddedComplexity = 140 in { def : Pat <(store (v512i1 VecPredRegs:$src1), (i32 IntRegs:$addr)), (V6_vS32b_ai IntRegs:$addr, 0, (v16i32 (V6_vandqrt (v512i1 VecPredRegs:$src1), (A2_tfrsi 0x01010101))))>, Requires<[UseHVXSgl]>; def : Pat <(v512i1 (load (i32 IntRegs:$addr))), (v512i1 (V6_vandvrt (v16i32 (V6_vL32b_ai IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXSgl]>; def : Pat <(store (v1024i1 VecPredRegs128B:$src1), (i32 IntRegs:$addr)), (V6_vS32b_ai_128B IntRegs:$addr, 0, (v32i32 (V6_vandqrt_128B (v1024i1 VecPredRegs128B:$src1), (A2_tfrsi 0x01010101))))>, Requires<[UseHVXDbl]>; def : Pat <(v1024i1 (load (i32 IntRegs:$addr))), (v1024i1 (V6_vandvrt_128B (v32i32 (V6_vL32b_ai_128B IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>, Requires<[UseHVXDbl]>; } multiclass T_R_pat { def: Pat<(IntID IntRegs:$src1), (MI IntRegs:$src1)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") IntRegs:$src1), (!cast(MI#"_128B") IntRegs:$src1)>, Requires<[UseHVXDbl]>; } multiclass T_V_pat { def: Pat<(IntID VectorRegs:$src1), (MI VectorRegs:$src1)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1), (!cast(MI#"_128B") VectorRegs128B:$src1)>, Requires<[UseHVXDbl]>; } multiclass T_W_pat { def: Pat<(IntID VecDblRegs:$src1), (MI VecDblRegs:$src1)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1), (!cast(MI#"_128B") VecDblRegs128B:$src1)>, Requires<[UseHVXDbl]>; } multiclass T_Q_pat { def: Pat<(IntID VecPredRegs:$src1), (MI VecPredRegs:$src1)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1), (!cast(MI#"_128B") VecPredRegs128B:$src1)>, Requires<[UseHVXDbl]>; } multiclass T_WR_pat { def: Pat<(IntID VecDblRegs:$src1, IntRegs:$src2), (MI VecDblRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B")VecDblRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B")VecDblRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_VR_pat { def: Pat<(IntID VectorRegs:$src1, IntRegs:$src2), (MI VectorRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B")VectorRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B")VectorRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WV_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2), (MI VecDblRegs:$src1, VectorRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WW_pat { def: Pat<(IntID VecDblRegs:$src1, VecDblRegs:$src2), (MI VecDblRegs:$src1, VecDblRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2), (!cast(MI#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_VV_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2), (MI VectorRegs:$src1, VectorRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_QR_pat { def: Pat<(IntID VecPredRegs:$src1, IntRegs:$src2), (MI VecPredRegs:$src1, IntRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, IntRegs:$src2), (!cast(MI#"_128B") VecPredRegs128B:$src1, IntRegs:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_QQ_pat { def: Pat<(IntID VecPredRegs:$src1, VecPredRegs:$src2), (MI VecPredRegs:$src1, VecPredRegs:$src2)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, VecPredRegs128B:$src2), (!cast(MI#"_128B") VecPredRegs128B:$src1, VecPredRegs128B:$src2)>, Requires<[UseHVXDbl]>; } multiclass T_WWR_pat { def: Pat<(IntID VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3), (MI VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VVR_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, IntRegs:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_WVR_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2, IntRegs:$src3), (MI VecDblRegs:$src1, VectorRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VWR_pat { def: Pat<(IntID VectorRegs:$src1, VecDblRegs:$src2, IntRegs:$src3), (MI VectorRegs:$src1, VecDblRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VVV_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_WVV_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3), (MI VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_QVV_pat { def: Pat<(IntID VecPredRegs:$src1, VectorRegs:$src2, VectorRegs:$src3), (MI VecPredRegs:$src1, VectorRegs:$src2, VectorRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3), (!cast(MI#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VQR_pat { def: Pat<(IntID VectorRegs:$src1, VecPredRegs:$src2, IntRegs:$src3), (MI VectorRegs:$src1, VecPredRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VecPredRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VecPredRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_QVR_pat { def: Pat<(IntID VecPredRegs:$src1, VectorRegs:$src2, IntRegs:$src3), (MI VecPredRegs:$src1, VectorRegs:$src2, IntRegs:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3), (!cast(MI#"_128B") VecPredRegs128B:$src1, VectorRegs128B:$src2, IntRegs:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_VVI_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, imm:$src3), (MI VectorRegs:$src1, VectorRegs:$src2, imm:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, imm:$src3), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, imm:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_WRI_pat { def: Pat<(IntID VecDblRegs:$src1, IntRegs:$src2, imm:$src3), (MI VecDblRegs:$src1, IntRegs:$src2, imm:$src3)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, IntRegs:$src2, imm:$src3), (!cast(MI#"_128B") VecDblRegs128B:$src1, IntRegs:$src2, imm:$src3)>, Requires<[UseHVXDbl]>; } multiclass T_WWRI_pat { def: Pat<(IntID VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3, imm:$src4), (MI VecDblRegs:$src1, VecDblRegs:$src2, IntRegs:$src3, imm:$src4)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3, imm:$src4), (!cast(MI#"_128B") VecDblRegs128B:$src1, VecDblRegs128B:$src2, IntRegs:$src3, imm:$src4)>, Requires<[UseHVXDbl]>; } multiclass T_VVVR_pat { def: Pat<(IntID VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, IntRegs:$src4), (MI VectorRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, IntRegs:$src4)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, IntRegs:$src4), (!cast(MI#"_128B") VectorRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, IntRegs:$src4)>, Requires<[UseHVXDbl]>; } multiclass T_WVVR_pat { def: Pat<(IntID VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, IntRegs:$src4), (MI VecDblRegs:$src1, VectorRegs:$src2, VectorRegs:$src3, IntRegs:$src4)>, Requires<[UseHVXSgl]>; def: Pat<(!cast(IntID#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, IntRegs:$src4), (!cast(MI#"_128B") VecDblRegs128B:$src1, VectorRegs128B:$src2, VectorRegs128B:$src3, IntRegs:$src4)>, Requires<[UseHVXDbl]>; } defm : T_WR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_VR_pat ; defm : T_WR_pat ; defm : T_VR_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_WW_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_WW_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_WW_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VWR_pat ; defm : T_VWR_pat ; defm : T_WVR_pat ; defm : T_WVR_pat ; defm : T_WVR_pat ; defm : T_WVR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_WWR_pat ; defm : T_VVV_pat ; defm : T_WVV_pat ; defm : T_WVV_pat ; defm : T_WVV_pat ; defm : T_WVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; defm : T_WVV_pat ; defm : T_WVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; defm : T_VVV_pat ; // Compare instructions defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_V_pat ; defm : T_W_pat ; defm : T_W_pat ; defm : T_W_pat ; defm : T_WRI_pat ; defm : T_WRI_pat ; defm : T_WRI_pat ; defm : T_WWRI_pat ; defm : T_WWRI_pat ; defm : T_WWRI_pat ; // assembler mapped. //defm : T_V_pat ; // not present earlier.. need to add intrinsic defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_WV_pat ; defm : T_WV_pat ; defm : T_VVI_pat ; defm : T_VVI_pat ; defm : T_QVV_pat ; defm : T_QVV_pat ; defm : T_QQ_pat ; defm : T_QQ_pat ; defm : T_Q_pat ; defm : T_QQ_pat ; defm : T_QQ_pat ; defm : T_QQ_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VV_pat ; defm : T_VQR_pat ; defm : T_QVR_pat ; defm : T_QR_pat ; defm : T_R_pat ; defm : T_R_pat ; defm : T_VR_pat ; defm : T_VVR_pat ; defm : T_VVR_pat ; defm : T_VVVR_pat ; defm : T_WVVR_pat ; defm : T_QVR_pat ; def : T_PI_pat ; def : T_RI_pat ; def : T_PPI_pat ; def : T_PPI_pat ; def : T_PPI_pat ; def : T_PPI_pat ; def : T_PPI_pat ; def : T_RRI_pat ; def : T_RRI_pat ; def : T_RRI_pat ; def : T_RRI_pat ; def : T_RRI_pat ; defm : T_VR_pat ; defm : T_VR_pat ; //def : T_PPQ_pat ; def: Pat<(v64i16 (trunc v64i32:$Vdd)), (v64i16 (V6_vpackwh_sat_128B (v32i32 (V6_hi_128B VecDblRegs128B:$Vdd)), (v32i32 (V6_lo_128B VecDblRegs128B:$Vdd))))>, Requires<[UseHVXDbl]>; def: Pat<(int_hexagon_V6_vd0), (V6_vd0)>; def: Pat<(int_hexagon_V6_vd0_128B), (V6_vd0_128B)>;