Home | History | Annotate | Download | only in Hexagon
      1 //=- HexagonIntrinsicsV60.td - Target Description for Hexagon -*- tablegen *-=//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file describes the Hexagon V60 Compiler Intrinsics in TableGen format.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 
     15 let AddedComplexity = 100 in {
     16 def : Pat < (v16i32 (int_hexagon_V6_lo (v32i32 HvxWR:$src1))),
     17             (v16i32 (EXTRACT_SUBREG (v32i32 HvxWR:$src1), vsub_lo)) >;
     18 
     19 def : Pat < (v16i32 (int_hexagon_V6_hi (v32i32 HvxWR:$src1))),
     20             (v16i32 (EXTRACT_SUBREG (v32i32 HvxWR:$src1), vsub_hi)) >;
     21 
     22 def : Pat < (v32i32 (int_hexagon_V6_lo_128B (v64i32 HvxWR:$src1))),
     23             (v32i32 (EXTRACT_SUBREG (v64i32 HvxWR:$src1), vsub_lo)) >;
     24 
     25 def : Pat < (v32i32 (int_hexagon_V6_hi_128B (v64i32 HvxWR:$src1))),
     26             (v32i32 (EXTRACT_SUBREG (v64i32 HvxWR:$src1), vsub_hi)) >;
     27 }
     28 
     29 def : Pat <(v512i1 (bitconvert (v16i32 HvxVR:$src1))),
     30            (v512i1 (V6_vandvrt(v16i32 HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     31 
     32 def : Pat <(v512i1 (bitconvert (v32i16 HvxVR:$src1))),
     33            (v512i1 (V6_vandvrt(v32i16 HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     34 
     35 def : Pat <(v512i1 (bitconvert (v64i8  HvxVR:$src1))),
     36            (v512i1 (V6_vandvrt(v64i8  HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     37 
     38 def : Pat <(v16i32 (bitconvert (v512i1 HvxQR:$src1))),
     39            (v16i32 (V6_vandqrt(v512i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     40 
     41 def : Pat <(v32i16 (bitconvert (v512i1 HvxQR:$src1))),
     42            (v32i16 (V6_vandqrt(v512i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     43 
     44 def : Pat <(v64i8  (bitconvert (v512i1 HvxQR:$src1))),
     45            (v64i8  (V6_vandqrt(v512i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     46 
     47 def : Pat <(v1024i1 (bitconvert (v32i32 HvxVR:$src1))),
     48            (v1024i1 (V6_vandvrt (v32i32 HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     49 
     50 def : Pat <(v1024i1 (bitconvert (v64i16 HvxVR:$src1))),
     51            (v1024i1 (V6_vandvrt (v64i16 HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     52 
     53 def : Pat <(v1024i1 (bitconvert (v128i8  HvxVR:$src1))),
     54            (v1024i1 (V6_vandvrt (v128i8  HvxVR:$src1), (A2_tfrsi 0x01010101)))>;
     55 
     56 def : Pat <(v32i32 (bitconvert (v1024i1 HvxQR:$src1))),
     57            (v32i32 (V6_vandqrt (v1024i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     58 
     59 def : Pat <(v64i16 (bitconvert (v1024i1 HvxQR:$src1))),
     60            (v64i16 (V6_vandqrt (v1024i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     61 
     62 def : Pat <(v128i8  (bitconvert (v1024i1 HvxQR:$src1))),
     63            (v128i8  (V6_vandqrt (v1024i1 HvxQR:$src1), (A2_tfrsi 0x01010101)))>;
     64 
     65 let AddedComplexity = 140 in {
     66 def : Pat <(store (v512i1 HvxQR:$src1), (i32 IntRegs:$addr)),
     67            (V6_vS32b_ai IntRegs:$addr, 0,
     68            (v16i32 (V6_vandqrt (v512i1 HvxQR:$src1),
     69                                        (A2_tfrsi 0x01010101))))>;
     70 
     71 def : Pat <(v512i1 (load (i32 IntRegs:$addr))),
     72            (v512i1 (V6_vandvrt
     73            (v16i32 (V6_vL32b_ai IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>;
     74 
     75 def : Pat <(store (v1024i1 HvxQR:$src1), (i32 IntRegs:$addr)),
     76            (V6_vS32b_ai IntRegs:$addr, 0,
     77            (v32i32 (V6_vandqrt (v1024i1 HvxQR:$src1),
     78                                        (A2_tfrsi 0x01010101))))>;
     79 
     80 def : Pat <(v1024i1 (load (i32 IntRegs:$addr))),
     81            (v1024i1 (V6_vandvrt
     82            (v32i32 (V6_vL32b_ai IntRegs:$addr, 0)), (A2_tfrsi 0x01010101)))>;
     83 }
     84 
     85 multiclass T_R_pat <InstHexagon MI, Intrinsic IntID> {
     86   def: Pat<(IntID IntRegs:$src1), (MI IntRegs:$src1)>;
     87   def: Pat<(!cast<Intrinsic>(IntID#"_128B") IntRegs:$src1),
     88            (MI IntRegs:$src1)>;
     89 }
     90 
     91 multiclass T_V_pat <InstHexagon MI, Intrinsic IntID> {
     92   def: Pat<(IntID HvxVR:$src1),
     93            (MI    HvxVR:$src1)>;
     94 
     95   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1),
     96            (MI HvxVR:$src1)>;
     97 }
     98 
     99 multiclass T_W_pat <InstHexagon MI, Intrinsic IntID> {
    100   def: Pat<(IntID HvxWR:$src1),
    101            (MI    HvxWR:$src1)>;
    102 
    103   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1),
    104            (MI HvxWR:$src1)>;
    105 }
    106 
    107 multiclass T_Q_pat <InstHexagon MI, Intrinsic IntID> {
    108   def: Pat<(IntID HvxQR:$src1),
    109            (MI    HvxQR:$src1)>;
    110 
    111   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1),
    112            (MI HvxQR:$src1)>;
    113 }
    114 
    115 multiclass T_WR_pat <InstHexagon MI, Intrinsic IntID> {
    116   def: Pat<(IntID HvxWR:$src1, IntRegs:$src2),
    117            (MI    HvxWR:$src1, IntRegs:$src2)>;
    118 
    119   def: Pat<(!cast<Intrinsic>(IntID#"_128B")HvxWR:$src1, IntRegs:$src2),
    120            (MI HvxWR:$src1, IntRegs:$src2)>;
    121 }
    122 
    123 multiclass T_VR_pat <InstHexagon MI, Intrinsic IntID> {
    124   def: Pat<(IntID HvxVR:$src1, IntRegs:$src2),
    125            (MI    HvxVR:$src1, IntRegs:$src2)>;
    126 
    127   def: Pat<(!cast<Intrinsic>(IntID#"_128B")HvxVR:$src1, IntRegs:$src2),
    128            (MI HvxVR:$src1, IntRegs:$src2)>;
    129 }
    130 
    131 multiclass T_WV_pat <InstHexagon MI, Intrinsic IntID> {
    132   def: Pat<(IntID HvxWR:$src1, HvxVR:$src2),
    133            (MI    HvxWR:$src1, HvxVR:$src2)>;
    134 
    135   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2),
    136            (MI  HvxWR:$src1, HvxVR:$src2)>;
    137 }
    138 
    139 multiclass T_WW_pat <InstHexagon MI, Intrinsic IntID> {
    140   def: Pat<(IntID HvxWR:$src1, HvxWR:$src2),
    141            (MI    HvxWR:$src1, HvxWR:$src2)>;
    142 
    143   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxWR:$src2),
    144            (MI  HvxWR:$src1, HvxWR:$src2)>;
    145 }
    146 
    147 multiclass T_VV_pat <InstHexagon MI, Intrinsic IntID> {
    148   def: Pat<(IntID HvxVR:$src1, HvxVR:$src2),
    149            (MI    HvxVR:$src1, HvxVR:$src2)>;
    150 
    151   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2),
    152            (MI  HvxVR:$src1, HvxVR:$src2)>;
    153 }
    154 
    155 multiclass T_QR_pat <InstHexagon MI, Intrinsic IntID> {
    156   def: Pat<(IntID HvxQR:$src1, IntRegs:$src2),
    157            (MI    HvxQR:$src1, IntRegs:$src2)>;
    158 
    159   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, IntRegs:$src2),
    160            (MI  HvxQR:$src1, IntRegs:$src2)>;
    161 }
    162 
    163 multiclass T_QQ_pat <InstHexagon MI, Intrinsic IntID> {
    164   def: Pat<(IntID HvxQR:$src1, HvxQR:$src2),
    165            (MI    HvxQR:$src1, HvxQR:$src2)>;
    166 
    167   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, HvxQR:$src2),
    168            (MI  HvxQR:$src1, HvxQR:$src2)>;
    169 }
    170 
    171 multiclass T_WWR_pat <InstHexagon MI, Intrinsic IntID> {
    172   def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3),
    173            (MI    HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>;
    174 
    175   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxWR:$src2,
    176                                             IntRegs:$src3),
    177            (MI  HvxWR:$src1, HvxWR:$src2, IntRegs:$src3)>;
    178 }
    179 
    180 multiclass T_VVR_pat <InstHexagon MI, Intrinsic IntID> {
    181   def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, IntRegs:$src3),
    182            (MI    HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    183 
    184   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2,
    185                                             IntRegs:$src3),
    186            (MI  HvxVR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    187 }
    188 
    189 multiclass T_WVR_pat <InstHexagon MI, Intrinsic IntID> {
    190   def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, IntRegs:$src3),
    191            (MI    HvxWR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    192 
    193   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2,
    194                                             IntRegs:$src3),
    195            (MI  HvxWR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    196 }
    197 
    198 multiclass T_VWR_pat <InstHexagon MI, Intrinsic IntID> {
    199   def: Pat<(IntID HvxVR:$src1, HvxWR:$src2, IntRegs:$src3),
    200            (MI    HvxVR:$src1, HvxWR:$src2, IntRegs:$src3)>;
    201 
    202   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxWR:$src2,
    203                                             IntRegs:$src3),
    204            (MI  HvxVR:$src1, HvxWR:$src2, IntRegs:$src3)>;
    205 }
    206 
    207 multiclass T_VVV_pat <InstHexagon MI, Intrinsic IntID> {
    208   def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3),
    209            (MI    HvxVR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    210 
    211   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2,
    212                                             HvxVR:$src3),
    213            (MI  HvxVR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    214 }
    215 
    216 multiclass T_WVV_pat <InstHexagon MI, Intrinsic IntID> {
    217   def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3),
    218            (MI    HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    219 
    220   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2,
    221                                             HvxVR:$src3),
    222            (MI  HvxWR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    223 }
    224 
    225 multiclass T_QVV_pat <InstHexagon MI, Intrinsic IntID> {
    226   def: Pat<(IntID HvxQR:$src1, HvxVR:$src2, HvxVR:$src3),
    227            (MI    HvxQR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    228 
    229   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, HvxVR:$src2,
    230                                             HvxVR:$src3),
    231            (MI  HvxQR:$src1, HvxVR:$src2, HvxVR:$src3)>;
    232 }
    233 
    234 multiclass T_VQR_pat <InstHexagon MI, Intrinsic IntID> {
    235   def: Pat<(IntID HvxVR:$src1, HvxQR:$src2, IntRegs:$src3),
    236            (MI    HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>;
    237 
    238   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxQR:$src2,
    239                                             IntRegs:$src3),
    240            (MI  HvxVR:$src1, HvxQR:$src2, IntRegs:$src3)>;
    241 }
    242 
    243 
    244 multiclass T_QVR_pat <InstHexagon MI, Intrinsic IntID> {
    245   def: Pat<(IntID HvxQR:$src1, HvxVR:$src2, IntRegs:$src3),
    246            (MI    HvxQR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    247 
    248   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxQR:$src1, HvxVR:$src2,
    249                                             IntRegs:$src3),
    250            (MI  HvxQR:$src1, HvxVR:$src2, IntRegs:$src3)>;
    251 }
    252 
    253 multiclass T_VVI_pat <InstHexagon MI, Intrinsic IntID> {
    254   def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, imm:$src3),
    255            (MI    HvxVR:$src1, HvxVR:$src2, imm:$src3)>;
    256 
    257   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1,
    258                                             HvxVR:$src2, imm:$src3),
    259            (MI  HvxVR:$src1, HvxVR:$src2, imm:$src3)>;
    260 }
    261 
    262 multiclass T_WRI_pat <InstHexagon MI, Intrinsic IntID> {
    263   def: Pat<(IntID HvxWR:$src1, IntRegs:$src2, imm:$src3),
    264            (MI    HvxWR:$src1, IntRegs:$src2, imm:$src3)>;
    265 
    266   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1,
    267                                             IntRegs:$src2, imm:$src3),
    268            (MI  HvxWR:$src1, IntRegs:$src2, imm:$src3)>;
    269 }
    270 
    271 multiclass T_WWRI_pat <InstHexagon MI, Intrinsic IntID> {
    272   def: Pat<(IntID HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4),
    273            (MI   HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4)>;
    274 
    275   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxWR:$src2,
    276                                             IntRegs:$src3, imm:$src4),
    277            (MI  HvxWR:$src1, HvxWR:$src2, IntRegs:$src3, imm:$src4)>;
    278 }
    279 
    280 multiclass T_VVVR_pat <InstHexagon MI, Intrinsic IntID> {
    281   def: Pat<(IntID HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4),
    282            (MI    HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>;
    283 
    284   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxVR:$src1, HvxVR:$src2,
    285                                             HvxVR:$src3, IntRegs:$src4),
    286            (MI  HvxVR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>;
    287 }
    288 
    289 multiclass T_WVVR_pat <InstHexagon MI, Intrinsic IntID> {
    290   def: Pat<(IntID HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4),
    291            (MI    HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>;
    292 
    293   def: Pat<(!cast<Intrinsic>(IntID#"_128B") HvxWR:$src1, HvxVR:$src2,
    294                                             HvxVR:$src3, IntRegs:$src4),
    295            (MI  HvxWR:$src1, HvxVR:$src2, HvxVR:$src3, IntRegs:$src4)>;
    296 }
    297 
    298 defm : T_WR_pat <V6_vtmpyb, int_hexagon_V6_vtmpyb>;
    299 defm : T_WR_pat <V6_vtmpybus, int_hexagon_V6_vtmpybus>;
    300 defm : T_VR_pat <V6_vdmpyhb, int_hexagon_V6_vdmpyhb>;
    301 defm : T_VR_pat <V6_vrmpyub, int_hexagon_V6_vrmpyub>;
    302 defm : T_VR_pat <V6_vrmpybus, int_hexagon_V6_vrmpybus>;
    303 defm : T_WR_pat <V6_vdsaduh, int_hexagon_V6_vdsaduh>;
    304 defm : T_VR_pat <V6_vdmpybus, int_hexagon_V6_vdmpybus>;
    305 defm : T_WR_pat <V6_vdmpybus_dv, int_hexagon_V6_vdmpybus_dv>;
    306 defm : T_VR_pat <V6_vdmpyhsusat, int_hexagon_V6_vdmpyhsusat>;
    307 defm : T_WR_pat <V6_vdmpyhsuisat, int_hexagon_V6_vdmpyhsuisat>;
    308 defm : T_VR_pat <V6_vdmpyhsat, int_hexagon_V6_vdmpyhsat>;
    309 defm : T_WR_pat <V6_vdmpyhisat, int_hexagon_V6_vdmpyhisat>;
    310 defm : T_WR_pat <V6_vdmpyhb_dv, int_hexagon_V6_vdmpyhb_dv>;
    311 defm : T_VR_pat <V6_vmpybus, int_hexagon_V6_vmpybus>;
    312 defm : T_WR_pat <V6_vmpabus, int_hexagon_V6_vmpabus>;
    313 defm : T_WR_pat <V6_vmpahb, int_hexagon_V6_vmpahb>;
    314 defm : T_VR_pat <V6_vmpyh, int_hexagon_V6_vmpyh>;
    315 defm : T_VR_pat <V6_vmpyhss, int_hexagon_V6_vmpyhss>;
    316 defm : T_VR_pat <V6_vmpyhsrs, int_hexagon_V6_vmpyhsrs>;
    317 defm : T_VR_pat <V6_vmpyuh, int_hexagon_V6_vmpyuh>;
    318 defm : T_VR_pat <V6_vmpyihb, int_hexagon_V6_vmpyihb>;
    319 defm : T_VR_pat <V6_vror, int_hexagon_V6_vror>;
    320 defm : T_VR_pat <V6_vasrw, int_hexagon_V6_vasrw>;
    321 defm : T_VR_pat <V6_vasrh, int_hexagon_V6_vasrh>;
    322 defm : T_VR_pat <V6_vaslw, int_hexagon_V6_vaslw>;
    323 defm : T_VR_pat <V6_vaslh, int_hexagon_V6_vaslh>;
    324 defm : T_VR_pat <V6_vlsrw, int_hexagon_V6_vlsrw>;
    325 defm : T_VR_pat <V6_vlsrh, int_hexagon_V6_vlsrh>;
    326 defm : T_VR_pat <V6_vmpyiwh, int_hexagon_V6_vmpyiwh>;
    327 defm : T_VR_pat <V6_vmpyiwb, int_hexagon_V6_vmpyiwb>;
    328 defm : T_WR_pat <V6_vtmpyhb, int_hexagon_V6_vtmpyhb>;
    329 defm : T_VR_pat <V6_vmpyub, int_hexagon_V6_vmpyub>;
    330 
    331 defm : T_VV_pat <V6_vrmpyubv, int_hexagon_V6_vrmpyubv>;
    332 defm : T_VV_pat <V6_vrmpybv, int_hexagon_V6_vrmpybv>;
    333 defm : T_VV_pat <V6_vrmpybusv, int_hexagon_V6_vrmpybusv>;
    334 defm : T_VV_pat <V6_vdmpyhvsat, int_hexagon_V6_vdmpyhvsat>;
    335 defm : T_VV_pat <V6_vmpybv, int_hexagon_V6_vmpybv>;
    336 defm : T_VV_pat <V6_vmpyubv, int_hexagon_V6_vmpyubv>;
    337 defm : T_VV_pat <V6_vmpybusv, int_hexagon_V6_vmpybusv>;
    338 defm : T_VV_pat <V6_vmpyhv, int_hexagon_V6_vmpyhv>;
    339 defm : T_VV_pat <V6_vmpyuhv, int_hexagon_V6_vmpyuhv>;
    340 defm : T_VV_pat <V6_vmpyhvsrs, int_hexagon_V6_vmpyhvsrs>;
    341 defm : T_VV_pat <V6_vmpyhus, int_hexagon_V6_vmpyhus>;
    342 defm : T_WW_pat <V6_vmpabusv, int_hexagon_V6_vmpabusv>;
    343 defm : T_VV_pat <V6_vmpyih, int_hexagon_V6_vmpyih>;
    344 defm : T_VV_pat <V6_vand, int_hexagon_V6_vand>;
    345 defm : T_VV_pat <V6_vor, int_hexagon_V6_vor>;
    346 defm : T_VV_pat <V6_vxor, int_hexagon_V6_vxor>;
    347 defm : T_VV_pat <V6_vaddw, int_hexagon_V6_vaddw>;
    348 defm : T_VV_pat <V6_vaddubsat, int_hexagon_V6_vaddubsat>;
    349 defm : T_VV_pat <V6_vadduhsat, int_hexagon_V6_vadduhsat>;
    350 defm : T_VV_pat <V6_vaddhsat, int_hexagon_V6_vaddhsat>;
    351 defm : T_VV_pat <V6_vaddwsat, int_hexagon_V6_vaddwsat>;
    352 defm : T_VV_pat <V6_vsubb, int_hexagon_V6_vsubb>;
    353 defm : T_VV_pat <V6_vsubh, int_hexagon_V6_vsubh>;
    354 defm : T_VV_pat <V6_vsubw, int_hexagon_V6_vsubw>;
    355 defm : T_VV_pat <V6_vsububsat, int_hexagon_V6_vsububsat>;
    356 defm : T_VV_pat <V6_vsubuhsat, int_hexagon_V6_vsubuhsat>;
    357 defm : T_VV_pat <V6_vsubhsat, int_hexagon_V6_vsubhsat>;
    358 defm : T_VV_pat <V6_vsubwsat, int_hexagon_V6_vsubwsat>;
    359 defm : T_WW_pat <V6_vaddb_dv, int_hexagon_V6_vaddb_dv>;
    360 defm : T_WW_pat <V6_vaddh_dv, int_hexagon_V6_vaddh_dv>;
    361 defm : T_WW_pat <V6_vaddw_dv, int_hexagon_V6_vaddw_dv>;
    362 defm : T_WW_pat <V6_vaddubsat_dv, int_hexagon_V6_vaddubsat_dv>;
    363 defm : T_WW_pat <V6_vadduhsat_dv, int_hexagon_V6_vadduhsat_dv>;
    364 defm : T_WW_pat <V6_vaddhsat_dv, int_hexagon_V6_vaddhsat_dv>;
    365 defm : T_WW_pat <V6_vaddwsat_dv, int_hexagon_V6_vaddwsat_dv>;
    366 defm : T_WW_pat <V6_vsubb_dv, int_hexagon_V6_vsubb_dv>;
    367 defm : T_WW_pat <V6_vsubh_dv, int_hexagon_V6_vsubh_dv>;
    368 defm : T_WW_pat <V6_vsubw_dv, int_hexagon_V6_vsubw_dv>;
    369 defm : T_WW_pat <V6_vsububsat_dv, int_hexagon_V6_vsububsat_dv>;
    370 defm : T_WW_pat <V6_vsubuhsat_dv, int_hexagon_V6_vsubuhsat_dv>;
    371 defm : T_WW_pat <V6_vsubhsat_dv, int_hexagon_V6_vsubhsat_dv>;
    372 defm : T_WW_pat <V6_vsubwsat_dv, int_hexagon_V6_vsubwsat_dv>;
    373 defm : T_VV_pat <V6_vaddubh, int_hexagon_V6_vaddubh>;
    374 defm : T_VV_pat <V6_vadduhw, int_hexagon_V6_vadduhw>;
    375 defm : T_VV_pat <V6_vaddhw, int_hexagon_V6_vaddhw>;
    376 defm : T_VV_pat <V6_vsububh, int_hexagon_V6_vsububh>;
    377 defm : T_VV_pat <V6_vsubuhw, int_hexagon_V6_vsubuhw>;
    378 defm : T_VV_pat <V6_vsubhw, int_hexagon_V6_vsubhw>;
    379 defm : T_VV_pat <V6_vabsdiffub, int_hexagon_V6_vabsdiffub>;
    380 defm : T_VV_pat <V6_vabsdiffh, int_hexagon_V6_vabsdiffh>;
    381 defm : T_VV_pat <V6_vabsdiffuh, int_hexagon_V6_vabsdiffuh>;
    382 defm : T_VV_pat <V6_vabsdiffw, int_hexagon_V6_vabsdiffw>;
    383 defm : T_VV_pat <V6_vavgub, int_hexagon_V6_vavgub>;
    384 defm : T_VV_pat <V6_vavguh, int_hexagon_V6_vavguh>;
    385 defm : T_VV_pat <V6_vavgh, int_hexagon_V6_vavgh>;
    386 defm : T_VV_pat <V6_vavgw, int_hexagon_V6_vavgw>;
    387 defm : T_VV_pat <V6_vnavgub, int_hexagon_V6_vnavgub>;
    388 defm : T_VV_pat <V6_vnavgh, int_hexagon_V6_vnavgh>;
    389 defm : T_VV_pat <V6_vnavgw, int_hexagon_V6_vnavgw>;
    390 defm : T_VV_pat <V6_vavgubrnd, int_hexagon_V6_vavgubrnd>;
    391 defm : T_VV_pat <V6_vavguhrnd, int_hexagon_V6_vavguhrnd>;
    392 defm : T_VV_pat <V6_vavghrnd, int_hexagon_V6_vavghrnd>;
    393 defm : T_VV_pat <V6_vavgwrnd, int_hexagon_V6_vavgwrnd>;
    394 defm : T_WW_pat <V6_vmpabuuv, int_hexagon_V6_vmpabuuv>;
    395 
    396 defm : T_VVR_pat <V6_vdmpyhb_acc, int_hexagon_V6_vdmpyhb_acc>;
    397 defm : T_VVR_pat <V6_vrmpyub_acc, int_hexagon_V6_vrmpyub_acc>;
    398 defm : T_VVR_pat <V6_vrmpybus_acc, int_hexagon_V6_vrmpybus_acc>;
    399 defm : T_VVR_pat <V6_vdmpybus_acc, int_hexagon_V6_vdmpybus_acc>;
    400 defm : T_VVR_pat <V6_vdmpyhsusat_acc, int_hexagon_V6_vdmpyhsusat_acc>;
    401 defm : T_VVR_pat <V6_vdmpyhsat_acc, int_hexagon_V6_vdmpyhsat_acc>;
    402 defm : T_VVR_pat <V6_vmpyiwb_acc, int_hexagon_V6_vmpyiwb_acc>;
    403 defm : T_VVR_pat <V6_vmpyiwh_acc, int_hexagon_V6_vmpyiwh_acc>;
    404 defm : T_VVR_pat <V6_vmpyihb_acc, int_hexagon_V6_vmpyihb_acc>;
    405 defm : T_VVR_pat <V6_vaslw_acc, int_hexagon_V6_vaslw_acc>;
    406 defm : T_VVR_pat <V6_vasrw_acc, int_hexagon_V6_vasrw_acc>;
    407 
    408 defm : T_VWR_pat <V6_vdmpyhsuisat_acc, int_hexagon_V6_vdmpyhsuisat_acc>;
    409 defm : T_VWR_pat <V6_vdmpyhisat_acc, int_hexagon_V6_vdmpyhisat_acc>;
    410 
    411 defm : T_WVR_pat <V6_vmpybus_acc, int_hexagon_V6_vmpybus_acc>;
    412 defm : T_WVR_pat <V6_vmpyhsat_acc, int_hexagon_V6_vmpyhsat_acc>;
    413 defm : T_WVR_pat <V6_vmpyuh_acc, int_hexagon_V6_vmpyuh_acc>;
    414 defm : T_WVR_pat <V6_vmpyub_acc, int_hexagon_V6_vmpyub_acc>;
    415 
    416 defm : T_WWR_pat <V6_vtmpyb_acc, int_hexagon_V6_vtmpyb_acc>;
    417 defm : T_WWR_pat <V6_vtmpybus_acc, int_hexagon_V6_vtmpybus_acc>;
    418 defm : T_WWR_pat <V6_vtmpyhb_acc, int_hexagon_V6_vtmpyhb_acc>;
    419 defm : T_WWR_pat <V6_vdmpybus_dv_acc, int_hexagon_V6_vdmpybus_dv_acc>;
    420 defm : T_WWR_pat <V6_vdmpyhb_dv_acc, int_hexagon_V6_vdmpyhb_dv_acc>;
    421 defm : T_WWR_pat <V6_vmpabus_acc, int_hexagon_V6_vmpabus_acc>;
    422 defm : T_WWR_pat <V6_vmpahb_acc, int_hexagon_V6_vmpahb_acc>;
    423 defm : T_WWR_pat <V6_vdsaduh_acc, int_hexagon_V6_vdsaduh_acc>;
    424 
    425 defm : T_VVV_pat <V6_vdmpyhvsat_acc, int_hexagon_V6_vdmpyhvsat_acc>;
    426 defm : T_WVV_pat <V6_vmpybusv_acc, int_hexagon_V6_vmpybusv_acc>;
    427 defm : T_WVV_pat <V6_vmpybv_acc, int_hexagon_V6_vmpybv_acc>;
    428 defm : T_WVV_pat <V6_vmpyhus_acc, int_hexagon_V6_vmpyhus_acc>;
    429 defm : T_WVV_pat <V6_vmpyhv_acc, int_hexagon_V6_vmpyhv_acc>;
    430 defm : T_VVV_pat <V6_vmpyiewh_acc, int_hexagon_V6_vmpyiewh_acc>;
    431 defm : T_VVV_pat <V6_vmpyiewuh_acc, int_hexagon_V6_vmpyiewuh_acc>;
    432 defm : T_VVV_pat <V6_vmpyih_acc, int_hexagon_V6_vmpyih_acc>;
    433 defm : T_VVV_pat <V6_vmpyowh_rnd_sacc, int_hexagon_V6_vmpyowh_rnd_sacc>;
    434 defm : T_VVV_pat <V6_vmpyowh_sacc, int_hexagon_V6_vmpyowh_sacc>;
    435 defm : T_WVV_pat <V6_vmpyubv_acc, int_hexagon_V6_vmpyubv_acc>;
    436 defm : T_WVV_pat <V6_vmpyuhv_acc, int_hexagon_V6_vmpyuhv_acc>;
    437 defm : T_VVV_pat <V6_vrmpybusv_acc, int_hexagon_V6_vrmpybusv_acc>;
    438 defm : T_VVV_pat <V6_vrmpybv_acc, int_hexagon_V6_vrmpybv_acc>;
    439 defm : T_VVV_pat <V6_vrmpyubv_acc, int_hexagon_V6_vrmpyubv_acc>;
    440 
    441 // Compare instructions
    442 defm : T_QVV_pat <V6_veqb_and, int_hexagon_V6_veqb_and>;
    443 defm : T_QVV_pat <V6_veqh_and, int_hexagon_V6_veqh_and>;
    444 defm : T_QVV_pat <V6_veqw_and, int_hexagon_V6_veqw_and>;
    445 defm : T_QVV_pat <V6_vgtb_and, int_hexagon_V6_vgtb_and>;
    446 defm : T_QVV_pat <V6_vgth_and, int_hexagon_V6_vgth_and>;
    447 defm : T_QVV_pat <V6_vgtw_and, int_hexagon_V6_vgtw_and>;
    448 defm : T_QVV_pat <V6_vgtub_and, int_hexagon_V6_vgtub_and>;
    449 defm : T_QVV_pat <V6_vgtuh_and, int_hexagon_V6_vgtuh_and>;
    450 defm : T_QVV_pat <V6_vgtuw_and, int_hexagon_V6_vgtuw_and>;
    451 defm : T_QVV_pat <V6_veqb_or, int_hexagon_V6_veqb_or>;
    452 defm : T_QVV_pat <V6_veqh_or, int_hexagon_V6_veqh_or>;
    453 defm : T_QVV_pat <V6_veqw_or, int_hexagon_V6_veqw_or>;
    454 defm : T_QVV_pat <V6_vgtb_or, int_hexagon_V6_vgtb_or>;
    455 defm : T_QVV_pat <V6_vgth_or, int_hexagon_V6_vgth_or>;
    456 defm : T_QVV_pat <V6_vgtw_or, int_hexagon_V6_vgtw_or>;
    457 defm : T_QVV_pat <V6_vgtub_or, int_hexagon_V6_vgtub_or>;
    458 defm : T_QVV_pat <V6_vgtuh_or, int_hexagon_V6_vgtuh_or>;
    459 defm : T_QVV_pat <V6_vgtuw_or, int_hexagon_V6_vgtuw_or>;
    460 defm : T_QVV_pat <V6_veqb_xor, int_hexagon_V6_veqb_xor>;
    461 defm : T_QVV_pat <V6_veqh_xor, int_hexagon_V6_veqh_xor>;
    462 defm : T_QVV_pat <V6_veqw_xor, int_hexagon_V6_veqw_xor>;
    463 defm : T_QVV_pat <V6_vgtb_xor, int_hexagon_V6_vgtb_xor>;
    464 defm : T_QVV_pat <V6_vgth_xor, int_hexagon_V6_vgth_xor>;
    465 defm : T_QVV_pat <V6_vgtw_xor, int_hexagon_V6_vgtw_xor>;
    466 defm : T_QVV_pat <V6_vgtub_xor, int_hexagon_V6_vgtub_xor>;
    467 defm : T_QVV_pat <V6_vgtuh_xor, int_hexagon_V6_vgtuh_xor>;
    468 defm : T_QVV_pat <V6_vgtuw_xor, int_hexagon_V6_vgtuw_xor>;
    469 
    470 defm : T_VV_pat <V6_vminub, int_hexagon_V6_vminub>;
    471 defm : T_VV_pat <V6_vminuh, int_hexagon_V6_vminuh>;
    472 defm : T_VV_pat <V6_vminh, int_hexagon_V6_vminh>;
    473 defm : T_VV_pat <V6_vminw, int_hexagon_V6_vminw>;
    474 defm : T_VV_pat <V6_vmaxub, int_hexagon_V6_vmaxub>;
    475 defm : T_VV_pat <V6_vmaxuh, int_hexagon_V6_vmaxuh>;
    476 defm : T_VV_pat <V6_vmaxh, int_hexagon_V6_vmaxh>;
    477 defm : T_VV_pat <V6_vmaxw, int_hexagon_V6_vmaxw>;
    478 defm : T_VV_pat <V6_vdelta, int_hexagon_V6_vdelta>;
    479 defm : T_VV_pat <V6_vrdelta, int_hexagon_V6_vrdelta>;
    480 defm : T_VV_pat <V6_vdealb4w, int_hexagon_V6_vdealb4w>;
    481 defm : T_VV_pat <V6_vmpyowh_rnd, int_hexagon_V6_vmpyowh_rnd>;
    482 defm : T_VV_pat <V6_vshuffeb, int_hexagon_V6_vshuffeb>;
    483 defm : T_VV_pat <V6_vshuffob, int_hexagon_V6_vshuffob>;
    484 defm : T_VV_pat <V6_vshufeh, int_hexagon_V6_vshufeh>;
    485 defm : T_VV_pat <V6_vshufoh, int_hexagon_V6_vshufoh>;
    486 defm : T_VV_pat <V6_vshufoeh, int_hexagon_V6_vshufoeh>;
    487 defm : T_VV_pat <V6_vshufoeb, int_hexagon_V6_vshufoeb>;
    488 defm : T_VV_pat <V6_vcombine, int_hexagon_V6_vcombine>;
    489 defm : T_VV_pat <V6_vmpyieoh, int_hexagon_V6_vmpyieoh>;
    490 defm : T_VV_pat <V6_vsathub, int_hexagon_V6_vsathub>;
    491 defm : T_VV_pat <V6_vsatwh, int_hexagon_V6_vsatwh>;
    492 defm : T_VV_pat <V6_vroundwh, int_hexagon_V6_vroundwh>;
    493 defm : T_VV_pat <V6_vroundwuh, int_hexagon_V6_vroundwuh>;
    494 defm : T_VV_pat <V6_vroundhb, int_hexagon_V6_vroundhb>;
    495 defm : T_VV_pat <V6_vroundhub, int_hexagon_V6_vroundhub>;
    496 defm : T_VV_pat <V6_vasrwv, int_hexagon_V6_vasrwv>;
    497 defm : T_VV_pat <V6_vlsrwv, int_hexagon_V6_vlsrwv>;
    498 defm : T_VV_pat <V6_vlsrhv, int_hexagon_V6_vlsrhv>;
    499 defm : T_VV_pat <V6_vasrhv, int_hexagon_V6_vasrhv>;
    500 defm : T_VV_pat <V6_vaslwv, int_hexagon_V6_vaslwv>;
    501 defm : T_VV_pat <V6_vaslhv, int_hexagon_V6_vaslhv>;
    502 defm : T_VV_pat <V6_vaddb, int_hexagon_V6_vaddb>;
    503 defm : T_VV_pat <V6_vaddh, int_hexagon_V6_vaddh>;
    504 defm : T_VV_pat <V6_vmpyiewuh, int_hexagon_V6_vmpyiewuh>;
    505 defm : T_VV_pat <V6_vmpyiowh, int_hexagon_V6_vmpyiowh>;
    506 defm : T_VV_pat <V6_vpackeb, int_hexagon_V6_vpackeb>;
    507 defm : T_VV_pat <V6_vpackeh, int_hexagon_V6_vpackeh>;
    508 defm : T_VV_pat <V6_vpackhub_sat, int_hexagon_V6_vpackhub_sat>;
    509 defm : T_VV_pat <V6_vpackhb_sat, int_hexagon_V6_vpackhb_sat>;
    510 defm : T_VV_pat <V6_vpackwuh_sat, int_hexagon_V6_vpackwuh_sat>;
    511 defm : T_VV_pat <V6_vpackwh_sat, int_hexagon_V6_vpackwh_sat>;
    512 defm : T_VV_pat <V6_vpackob, int_hexagon_V6_vpackob>;
    513 defm : T_VV_pat <V6_vpackoh, int_hexagon_V6_vpackoh>;
    514 defm : T_VV_pat <V6_vmpyewuh, int_hexagon_V6_vmpyewuh>;
    515 defm : T_VV_pat <V6_vmpyowh, int_hexagon_V6_vmpyowh>;
    516 
    517 defm : T_QVV_pat <V6_vaddbq, int_hexagon_V6_vaddbq>;
    518 defm : T_QVV_pat <V6_vaddhq, int_hexagon_V6_vaddhq>;
    519 defm : T_QVV_pat <V6_vaddwq, int_hexagon_V6_vaddwq>;
    520 defm : T_QVV_pat <V6_vaddbnq, int_hexagon_V6_vaddbnq>;
    521 defm : T_QVV_pat <V6_vaddhnq, int_hexagon_V6_vaddhnq>;
    522 defm : T_QVV_pat <V6_vaddwnq, int_hexagon_V6_vaddwnq>;
    523 defm : T_QVV_pat <V6_vsubbq, int_hexagon_V6_vsubbq>;
    524 defm : T_QVV_pat <V6_vsubhq, int_hexagon_V6_vsubhq>;
    525 defm : T_QVV_pat <V6_vsubwq, int_hexagon_V6_vsubwq>;
    526 defm : T_QVV_pat <V6_vsubbnq, int_hexagon_V6_vsubbnq>;
    527 defm : T_QVV_pat <V6_vsubhnq, int_hexagon_V6_vsubhnq>;
    528 defm : T_QVV_pat <V6_vsubwnq, int_hexagon_V6_vsubwnq>;
    529 
    530 defm : T_V_pat <V6_vabsh, int_hexagon_V6_vabsh>;
    531 defm : T_V_pat <V6_vabsw, int_hexagon_V6_vabsw>;
    532 defm : T_V_pat <V6_vabsw_sat, int_hexagon_V6_vabsw_sat>;
    533 defm : T_V_pat <V6_vabsh_sat, int_hexagon_V6_vabsh_sat>;
    534 defm : T_V_pat <V6_vnot, int_hexagon_V6_vnot>;
    535 defm : T_V_pat <V6_vassign, int_hexagon_V6_vassign>;
    536 defm : T_V_pat <V6_vzb, int_hexagon_V6_vzb>;
    537 defm : T_V_pat <V6_vzh, int_hexagon_V6_vzh>;
    538 defm : T_V_pat <V6_vsb, int_hexagon_V6_vsb>;
    539 defm : T_V_pat <V6_vsh, int_hexagon_V6_vsh>;
    540 defm : T_V_pat <V6_vdealh, int_hexagon_V6_vdealh>;
    541 defm : T_V_pat <V6_vdealb, int_hexagon_V6_vdealb>;
    542 defm : T_V_pat <V6_vunpackub, int_hexagon_V6_vunpackub>;
    543 defm : T_V_pat <V6_vunpackuh, int_hexagon_V6_vunpackuh>;
    544 defm : T_V_pat <V6_vunpackb, int_hexagon_V6_vunpackb>;
    545 defm : T_V_pat <V6_vunpackh, int_hexagon_V6_vunpackh>;
    546 defm : T_V_pat <V6_vshuffh, int_hexagon_V6_vshuffh>;
    547 defm : T_V_pat <V6_vshuffb, int_hexagon_V6_vshuffb>;
    548 defm : T_V_pat <V6_vcl0w, int_hexagon_V6_vcl0w>;
    549 defm : T_V_pat <V6_vpopcounth, int_hexagon_V6_vpopcounth>;
    550 defm : T_V_pat <V6_vcl0h, int_hexagon_V6_vcl0h>;
    551 defm : T_V_pat <V6_vnormamtw, int_hexagon_V6_vnormamtw>;
    552 defm : T_V_pat <V6_vnormamth, int_hexagon_V6_vnormamth>;
    553 
    554 defm : T_W_pat <V6_lo, int_hexagon_V6_lo>;
    555 defm : T_W_pat <V6_hi, int_hexagon_V6_hi>;
    556 defm : T_W_pat <V6_vassignp, int_hexagon_V6_vassignp>;
    557 
    558 defm : T_WRI_pat <V6_vrmpybusi, int_hexagon_V6_vrmpybusi>;
    559 defm : T_WRI_pat <V6_vrsadubi, int_hexagon_V6_vrsadubi>;
    560 defm : T_WRI_pat <V6_vrmpyubi, int_hexagon_V6_vrmpyubi>;
    561 
    562 defm : T_WWRI_pat <V6_vrmpybusi_acc, int_hexagon_V6_vrmpybusi_acc>;
    563 defm : T_WWRI_pat <V6_vrsadubi_acc, int_hexagon_V6_vrsadubi_acc>;
    564 defm : T_WWRI_pat <V6_vrmpyubi_acc, int_hexagon_V6_vrmpyubi_acc>;
    565 
    566 // assembler mapped.
    567 //defm : T_V_pat <V6_vtran2x2, int_hexagon_V6_vtran2x2>;
    568 // not present earlier.. need to add intrinsic
    569 defm : T_VVR_pat <V6_valignb, int_hexagon_V6_valignb>;
    570 defm : T_VVR_pat <V6_vlalignb, int_hexagon_V6_vlalignb>;
    571 defm : T_VVR_pat <V6_vasrwh, int_hexagon_V6_vasrwh>;
    572 defm : T_VVR_pat <V6_vasrwhsat, int_hexagon_V6_vasrwhsat>;
    573 defm : T_VVR_pat <V6_vasrwhrndsat, int_hexagon_V6_vasrwhrndsat>;
    574 defm : T_VVR_pat <V6_vasrwuhsat, int_hexagon_V6_vasrwuhsat>;
    575 defm : T_VVR_pat <V6_vasrhubsat, int_hexagon_V6_vasrhubsat>;
    576 defm : T_VVR_pat <V6_vasrhubrndsat, int_hexagon_V6_vasrhubrndsat>;
    577 defm : T_VVR_pat <V6_vasrhbrndsat, int_hexagon_V6_vasrhbrndsat>;
    578 
    579 defm : T_VVR_pat <V6_vshuffvdd, int_hexagon_V6_vshuffvdd>;
    580 defm : T_VVR_pat <V6_vdealvdd, int_hexagon_V6_vdealvdd>;
    581 
    582 defm : T_WV_pat <V6_vunpackob, int_hexagon_V6_vunpackob>;
    583 defm : T_WV_pat <V6_vunpackoh, int_hexagon_V6_vunpackoh>;
    584 defm : T_VVI_pat <V6_valignbi, int_hexagon_V6_valignbi>;
    585 defm : T_VVI_pat <V6_vlalignbi, int_hexagon_V6_vlalignbi>;
    586 
    587 defm : T_QVV_pat <V6_vswap, int_hexagon_V6_vswap>;
    588 defm : T_QVV_pat <V6_vmux, int_hexagon_V6_vmux>;
    589 defm : T_QQ_pat <V6_pred_and, int_hexagon_V6_pred_and>;
    590 defm : T_QQ_pat <V6_pred_or, int_hexagon_V6_pred_or>;
    591 defm : T_Q_pat <V6_pred_not, int_hexagon_V6_pred_not>;
    592 defm : T_QQ_pat <V6_pred_xor, int_hexagon_V6_pred_xor>;
    593 defm : T_QQ_pat <V6_pred_or_n, int_hexagon_V6_pred_or_n>;
    594 defm : T_QQ_pat <V6_pred_and_n, int_hexagon_V6_pred_and_n>;
    595 defm : T_VV_pat <V6_veqb, int_hexagon_V6_veqb>;
    596 defm : T_VV_pat <V6_veqh, int_hexagon_V6_veqh>;
    597 defm : T_VV_pat <V6_veqw, int_hexagon_V6_veqw>;
    598 defm : T_VV_pat <V6_vgtb, int_hexagon_V6_vgtb>;
    599 defm : T_VV_pat <V6_vgth, int_hexagon_V6_vgth>;
    600 defm : T_VV_pat <V6_vgtw, int_hexagon_V6_vgtw>;
    601 defm : T_VV_pat <V6_vgtub, int_hexagon_V6_vgtub>;
    602 defm : T_VV_pat <V6_vgtuh, int_hexagon_V6_vgtuh>;
    603 defm : T_VV_pat <V6_vgtuw, int_hexagon_V6_vgtuw>;
    604 
    605 defm : T_VQR_pat <V6_vandqrt_acc, int_hexagon_V6_vandqrt_acc>;
    606 defm : T_QVR_pat <V6_vandvrt_acc, int_hexagon_V6_vandvrt_acc>;
    607 defm : T_QR_pat <V6_vandqrt, int_hexagon_V6_vandqrt>;
    608 defm : T_R_pat <V6_lvsplatw, int_hexagon_V6_lvsplatw>;
    609 defm : T_R_pat <V6_pred_scalar2, int_hexagon_V6_pred_scalar2>;
    610 defm : T_VR_pat <V6_vandvrt, int_hexagon_V6_vandvrt>;
    611 
    612 defm : T_VVR_pat <V6_vlutvvb, int_hexagon_V6_vlutvvb>;
    613 defm : T_VVR_pat <V6_vlutvwh, int_hexagon_V6_vlutvwh>;
    614 defm : T_VVVR_pat <V6_vlutvvb_oracc, int_hexagon_V6_vlutvvb_oracc>;
    615 defm : T_WVVR_pat <V6_vlutvwh_oracc, int_hexagon_V6_vlutvwh_oracc>;
    616 
    617 defm : T_QVR_pat <V6_vandvrt_acc, int_hexagon_V6_vandvrt_acc>;
    618 def : T_PI_pat <S6_rol_i_p, int_hexagon_S6_rol_i_p>;
    619 def : T_RI_pat <S6_rol_i_r, int_hexagon_S6_rol_i_r>;
    620 def : T_PPI_pat <S6_rol_i_p_nac, int_hexagon_S6_rol_i_p_nac>;
    621 def : T_PPI_pat <S6_rol_i_p_acc, int_hexagon_S6_rol_i_p_acc>;
    622 def : T_PPI_pat <S6_rol_i_p_and, int_hexagon_S6_rol_i_p_and>;
    623 def : T_PPI_pat <S6_rol_i_p_or, int_hexagon_S6_rol_i_p_or>;
    624 def : T_PPI_pat <S6_rol_i_p_xacc, int_hexagon_S6_rol_i_p_xacc>;
    625 def : T_RRI_pat <S6_rol_i_r_nac, int_hexagon_S6_rol_i_r_nac>;
    626 def : T_RRI_pat <S6_rol_i_r_acc, int_hexagon_S6_rol_i_r_acc>;
    627 def : T_RRI_pat <S6_rol_i_r_and, int_hexagon_S6_rol_i_r_and>;
    628 def : T_RRI_pat <S6_rol_i_r_or, int_hexagon_S6_rol_i_r_or>;
    629 def : T_RRI_pat <S6_rol_i_r_xacc, int_hexagon_S6_rol_i_r_xacc>;
    630 
    631 defm : T_VR_pat <V6_extractw, int_hexagon_V6_extractw>;
    632 defm : T_VR_pat <V6_vinsertwr, int_hexagon_V6_vinsertwr>;
    633 
    634 //def : T_PPQ_pat <S2_cabacencbin, int_hexagon_S2_cabacencbin>;
    635 
    636 def: Pat<(v64i16 (trunc v64i32:$Vdd)),
    637          (v64i16 (V6_vpackwh_sat
    638                  (v32i32 (V6_hi HvxWR:$Vdd)),
    639                  (v32i32 (V6_lo HvxWR:$Vdd))))>;
    640 
    641 def: Pat<(int_hexagon_V6_vd0),      (V6_vd0)>;
    642 def: Pat<(int_hexagon_V6_vd0_128B), (V6_vd0)>;
    643 
    644