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