[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / Hexagon / intrinsics-v60-alu.ll
blobca026ded3f91e364d47818f93c27493a6522f4c9
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; CHECK-LABEL: test1:
4 ; CHECK: v{{[0-9]+}} = vand(v{{[0-9]+}},v{{[0-9]+}})
5 define <16 x i32> @test1(<16 x i32> %a, <16 x i32> %b) #0 {
6 entry:
7   %0 = tail call <16 x i32> @llvm.hexagon.V6.vand(<16 x i32> %a, <16 x i32> %b)
8   ret <16 x i32> %0
11 ; CHECK-LABEL: test2:
12 ; CHECK: v{{[0-9]+}} = vor(v{{[0-9]+}},v{{[0-9]+}})
13 define <16 x i32> @test2(<16 x i32> %a, <16 x i32> %b) #0 {
14 entry:
15   %0 = tail call <16 x i32> @llvm.hexagon.V6.vor(<16 x i32> %a, <16 x i32> %b)
16   ret <16 x i32> %0
19 ; CHECK-LABEL: test3:
20 ; CHECK: v{{[0-9]+}} = vxor(v{{[0-9]+}},v{{[0-9]+}})
21 define <16 x i32> @test3(<16 x i32> %a, <16 x i32> %b) #0 {
22 entry:
23   %0 = tail call <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32> %a, <16 x i32> %b)
24   ret <16 x i32> %0
27 ; CHECK-LABEL: test4:
28 ; CHECK: v{{[0-9]+}}.w = vadd(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
29 define <16 x i32> @test4(<16 x i32> %a, <16 x i32> %b) #0 {
30 entry:
31   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32> %a, <16 x i32> %b)
32   ret <16 x i32> %0
35 ; CHECK-LABEL: test5:
36 ; CHECK: v{{[0-9]+}}.ub = vadd(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):sat
37 define <16 x i32> @test5(<16 x i32> %a, <16 x i32> %b) #0 {
38 entry:
39   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32> %a, <16 x i32> %b)
40   ret <16 x i32> %0
43 ; CHECK-LABEL: test6:
44 ; CHECK: v{{[0-9]+}}.uh = vadd(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):sat
45 define <16 x i32> @test6(<16 x i32> %a, <16 x i32> %b) #0 {
46 entry:
47   %0 = tail call <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32> %a, <16 x i32> %b)
48   ret <16 x i32> %0
51 ; CHECK-LABEL: test7:
52 ; CHECK: v{{[0-9]+}}.h = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
53 define <16 x i32> @test7(<16 x i32> %a, <16 x i32> %b) #0 {
54 entry:
55   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32> %a, <16 x i32> %b)
56   ret <16 x i32> %0
59 ; CHECK-LABEL: test8:
60 ; CHECK: v{{[0-9]+}}.w = vadd(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat
61 define <16 x i32> @test8(<16 x i32> %a, <16 x i32> %b) #0 {
62 entry:
63   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32> %a, <16 x i32> %b)
64   ret <16 x i32> %0
67 ; CHECK-LABEL: test9:
68 ; CHECK: v{{[0-9]+}}.b = vsub(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
69 define <16 x i32> @test9(<16 x i32> %a, <16 x i32> %b) #0 {
70 entry:
71   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32> %a, <16 x i32> %b)
72   ret <16 x i32> %0
75 ; CHECK-LABEL: test10:
76 ; CHECK: v{{[0-9]+}}.h = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
77 define <16 x i32> @test10(<16 x i32> %a, <16 x i32> %b) #0 {
78 entry:
79   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32> %a, <16 x i32> %b)
80   ret <16 x i32> %0
83 ; CHECK-LABEL: test11:
84 ; CHECK: v{{[0-9]+}}.w = vsub(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
85 define <16 x i32> @test11(<16 x i32> %a, <16 x i32> %b) #0 {
86 entry:
87   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32> %a, <16 x i32> %b)
88   ret <16 x i32> %0
91 ; CHECK-LABEL: test12:
92 ; CHECK: v{{[0-9]+}}.ub = vsub(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):sat
93 define <16 x i32> @test12(<16 x i32> %a, <16 x i32> %b) #0 {
94 entry:
95   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32> %a, <16 x i32> %b)
96   ret <16 x i32> %0
99 ; CHECK-LABEL: test13:
100 ; CHECK: v{{[0-9]+}}.uh = vsub(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):sat
101 define <16 x i32> @test13(<16 x i32> %a, <16 x i32> %b) #0 {
102 entry:
103   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32> %a, <16 x i32> %b)
104   ret <16 x i32> %0
107 ; CHECK-LABEL: test14:
108 ; CHECK: v{{[0-9]+}}.h = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
109 define <16 x i32> @test14(<16 x i32> %a, <16 x i32> %b) #0 {
110 entry:
111   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32> %a, <16 x i32> %b)
112   ret <16 x i32> %0
115 ; CHECK-LABEL: test15:
116 ; CHECK: v{{[0-9]+}}.w = vsub(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat
117 define <16 x i32> @test15(<16 x i32> %a, <16 x i32> %b) #0 {
118 entry:
119   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32> %a, <16 x i32> %b)
120   ret <16 x i32> %0
123 ; CHECK-LABEL: test16:
124 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vadd(v{{[0-9]+}}:{{[0-9]+}}.b,v{{[0-9]+}}:{{[0-9]+}}.b)
125 define <32 x i32> @test16(<32 x i32> %a, <32 x i32> %b) #0 {
126 entry:
127   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32> %a, <32 x i32> %b)
128   ret <32 x i32> %0
131 ; CHECK-LABEL: test17:
132 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h)
133 define <32 x i32> @test17(<32 x i32> %a, <32 x i32> %b) #0 {
134 entry:
135   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32> %a, <32 x i32> %b)
136   ret <32 x i32> %0
139 ; CHECK-LABEL: test18:
140 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w)
141 define <32 x i32> @test18(<32 x i32> %a, <32 x i32> %b) #0 {
142 entry:
143   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32> %a, <32 x i32> %b)
144   ret <32 x i32> %0
147 ; CHECK-LABEL: test19:
148 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.ub = vadd(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub):sat
149 define <32 x i32> @test19(<32 x i32> %a, <32 x i32> %b) #0 {
150 entry:
151   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32> %a, <32 x i32> %b)
152   ret <32 x i32> %0
155 ; CHECK-LABEL: test20:
156 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vadd(v{{[0-9]+}}:{{[0-9]+}}.uh,v{{[0-9]+}}:{{[0-9]+}}.uh):sat
157 define <32 x i32> @test20(<32 x i32> %a, <32 x i32> %b) #0 {
158 entry:
159   %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32> %a, <32 x i32> %b)
160   ret <32 x i32> %0
163 ; CHECK-LABEL: test21:
164 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h):sat
165 define <32 x i32> @test21(<32 x i32> %a, <32 x i32> %b) #0 {
166 entry:
167   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32> %a, <32 x i32> %b)
168   ret <32 x i32> %0
171 ; CHECK-LABEL: test22:
172 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w):sat
173 define <32 x i32> @test22(<32 x i32> %a, <32 x i32> %b) #0 {
174 entry:
175   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32> %a, <32 x i32> %b)
176   ret <32 x i32> %0
179 ; CHECK-LABEL: test23:
180 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vsub(v{{[0-9]+}}:{{[0-9]+}}.b,v{{[0-9]+}}:{{[0-9]+}}.b)
181 define <32 x i32> @test23(<32 x i32> %a, <32 x i32> %b) #0 {
182 entry:
183   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32> %a, <32 x i32> %b)
184   ret <32 x i32> %0
187 ; CHECK-LABEL: test24:
188 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h)
189 define <32 x i32> @test24(<32 x i32> %a, <32 x i32> %b) #0 {
190 entry:
191   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32> %a, <32 x i32> %b)
192   ret <32 x i32> %0
195 ; CHECK-LABEL: test25:
196 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w)
197 define <32 x i32> @test25(<32 x i32> %a, <32 x i32> %b) #0 {
198 entry:
199   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32> %a, <32 x i32> %b)
200   ret <32 x i32> %0
203 ; CHECK-LABEL: test26:
204 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.ub = vsub(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub):sat
205 define <32 x i32> @test26(<32 x i32> %a, <32 x i32> %b) #0 {
206 entry:
207   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32> %a, <32 x i32> %b)
208   ret <32 x i32> %0
211 ; CHECK-LABEL: test27:
212 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vsub(v{{[0-9]+}}:{{[0-9]+}}.uh,v{{[0-9]+}}:{{[0-9]+}}.uh):sat
213 define <32 x i32> @test27(<32 x i32> %a, <32 x i32> %b) #0 {
214 entry:
215   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32> %a, <32 x i32> %b)
216   ret <32 x i32> %0
219 ; CHECK-LABEL: test28:
220 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h):sat
221 define <32 x i32> @test28(<32 x i32> %a, <32 x i32> %b) #0 {
222 entry:
223   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32> %a, <32 x i32> %b)
224   ret <32 x i32> %0
227 ; CHECK-LABEL: test29:
228 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w):sat
229 define <32 x i32> @test29(<32 x i32> %a, <32 x i32> %b) #0 {
230 entry:
231   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32> %a, <32 x i32> %b)
232   ret <32 x i32> %0
235 ; CHECK-LABEL: test30:
236 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
237 define <32 x i32> @test30(<16 x i32> %a, <16 x i32> %b) #0 {
238 entry:
239   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32> %a, <16 x i32> %b)
240   ret <32 x i32> %0
243 ; CHECK-LABEL: test31:
244 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
245 define <32 x i32> @test31(<16 x i32> %a, <16 x i32> %b) #0 {
246 entry:
247   %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32> %a, <16 x i32> %b)
248   ret <32 x i32> %0
251 ; CHECK-LABEL: test32:
252 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
253 define <32 x i32> @test32(<16 x i32> %a, <16 x i32> %b) #0 {
254 entry:
255   %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32> %a, <16 x i32> %b)
256   ret <32 x i32> %0
259 ; CHECK-LABEL: test33:
260 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
261 define <32 x i32> @test33(<16 x i32> %a, <16 x i32> %b) #0 {
262 entry:
263   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32> %a, <16 x i32> %b)
264   ret <32 x i32> %0
267 ; CHECK-LABEL: test34:
268 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
269 define <32 x i32> @test34(<16 x i32> %a, <16 x i32> %b) #0 {
270 entry:
271   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32> %a, <16 x i32> %b)
272   ret <32 x i32> %0
275 ; CHECK-LABEL: test35:
276 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
277 define <32 x i32> @test35(<16 x i32> %a, <16 x i32> %b) #0 {
278 entry:
279   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32> %a, <16 x i32> %b)
280   ret <32 x i32> %0
283 ; CHECK-LABEL: test36:
284 ; CHECK: v{{[0-9]+}}.ub = vabsdiff(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
285 define <16 x i32> @test36(<16 x i32> %a, <16 x i32> %b) #0 {
286 entry:
287   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32> %a, <16 x i32> %b)
288   ret <16 x i32> %0
291 ; CHECK-LABEL: test37:
292 ; CHECK: v{{[0-9]+}}.uh = vabsdiff(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
293 define <16 x i32> @test37(<16 x i32> %a, <16 x i32> %b) #0 {
294 entry:
295   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32> %a, <16 x i32> %b)
296   ret <16 x i32> %0
299 ; CHECK-LABEL: test38:
300 ; CHECK: v{{[0-9]+}}.uh = vabsdiff(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
301 define <16 x i32> @test38(<16 x i32> %a, <16 x i32> %b) #0 {
302 entry:
303   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32> %a, <16 x i32> %b)
304   ret <16 x i32> %0
307 ; CHECK-LABEL: test39:
308 ; CHECK: v{{[0-9]+}}.uw = vabsdiff(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
309 define <16 x i32> @test39(<16 x i32> %a, <16 x i32> %b) #0 {
310 entry:
311   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32> %a, <16 x i32> %b)
312   ret <16 x i32> %0
315 ; CHECK-LABEL: test40:
316 ; CHECK: v{{[0-9]+}}.ub = vavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
317 define <16 x i32> @test40(<16 x i32> %a, <16 x i32> %b) #0 {
318 entry:
319   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32> %a, <16 x i32> %b)
320   ret <16 x i32> %0
323 ; CHECK-LABEL: test41:
324 ; CHECK: v{{[0-9]+}}.uh = vavg(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
325 define <16 x i32> @test41(<16 x i32> %a, <16 x i32> %b) #0 {
326 entry:
327   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32> %a, <16 x i32> %b)
328   ret <16 x i32> %0
331 ; CHECK-LABEL: test42:
332 ; CHECK: v{{[0-9]+}}.h = vavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
333 define <16 x i32> @test42(<16 x i32> %a, <16 x i32> %b) #0 {
334 entry:
335   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32> %a, <16 x i32> %b)
336   ret <16 x i32> %0
339 ; CHECK-LABEL: test43:
340 ; CHECK: v{{[0-9]+}}.w = vavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
341 define <16 x i32> @test43(<16 x i32> %a, <16 x i32> %b) #0 {
342 entry:
343   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32> %a, <16 x i32> %b)
344   ret <16 x i32> %0
347 ; CHECK-LABEL: test44:
348 ; CHECK: v{{[0-9]+}}.b = vnavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
349 define <16 x i32> @test44(<16 x i32> %a, <16 x i32> %b) #0 {
350 entry:
351   %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32> %a, <16 x i32> %b)
352   ret <16 x i32> %0
355 ; CHECK-LABEL: test45:
356 ; CHECK: v{{[0-9]+}}.h = vnavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
357 define <16 x i32> @test45(<16 x i32> %a, <16 x i32> %b) #0 {
358 entry:
359   %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32> %a, <16 x i32> %b)
360   ret <16 x i32> %0
363 ; CHECK-LABEL: test46:
364 ; CHECK: v{{[0-9]+}}.w = vnavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
365 define <16 x i32> @test46(<16 x i32> %a, <16 x i32> %b) #0 {
366 entry:
367   %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32> %a, <16 x i32> %b)
368   ret <16 x i32> %0
371 ; CHECK-LABEL: test47:
372 ; CHECK: v{{[0-9]+}}.ub = vavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):rnd
373 define <16 x i32> @test47(<16 x i32> %a, <16 x i32> %b) #0 {
374 entry:
375   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32> %a, <16 x i32> %b)
376   ret <16 x i32> %0
379 ; CHECK-LABEL: test48:
380 ; CHECK: v{{[0-9]+}}.uh = vavg(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):rnd
381 define <16 x i32> @test48(<16 x i32> %a, <16 x i32> %b) #0 {
382 entry:
383   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32> %a, <16 x i32> %b)
384   ret <16 x i32> %0
387 ; CHECK-LABEL: test49:
388 ; CHECK: v{{[0-9]+}}.h = vavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h):rnd
389 define <16 x i32> @test49(<16 x i32> %a, <16 x i32> %b) #0 {
390 entry:
391   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32> %a, <16 x i32> %b)
392   ret <16 x i32> %0
395 ; CHECK-LABEL: test50:
396 ; CHECK: v{{[0-9]+}}.w = vavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w):rnd
397 define <16 x i32> @test50(<16 x i32> %a, <16 x i32> %b) #0 {
398 entry:
399   %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32> %a, <16 x i32> %b)
400   ret <16 x i32> %0
403 ; CHECK-LABEL: test51:
404 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpa(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub)
405 define <32 x i32> @test51(<32 x i32> %a, <32 x i32> %b) #0 {
406 entry:
407   %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32> %a, <32 x i32> %b)
408   ret <32 x i32> %0
411 ; CHECK-LABEL: test52:
412 ; CHECK: v{{[0-9]+}}.ub = vmin(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
413 define <16 x i32> @test52(<16 x i32> %a, <16 x i32> %b) #0 {
414 entry:
415   %0 = tail call <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32> %a, <16 x i32> %b)
416   ret <16 x i32> %0
419 ; CHECK-LABEL: test53:
420 ; CHECK: v{{[0-9]+}}.uh = vmin(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
421 define <16 x i32> @test53(<16 x i32> %a, <16 x i32> %b) #0 {
422 entry:
423   %0 = tail call <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32> %a, <16 x i32> %b)
424   ret <16 x i32> %0
427 ; CHECK-LABEL: test54:
428 ; CHECK: v{{[0-9]+}}.h = vmin(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
429 define <16 x i32> @test54(<16 x i32> %a, <16 x i32> %b) #0 {
430 entry:
431   %0 = tail call <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32> %a, <16 x i32> %b)
432   ret <16 x i32> %0
435 ; CHECK-LABEL: test55:
436 ; CHECK: v{{[0-9]+}}.w = vmin(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
437 define <16 x i32> @test55(<16 x i32> %a, <16 x i32> %b) #0 {
438 entry:
439   %0 = tail call <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32> %a, <16 x i32> %b)
440   ret <16 x i32> %0
443 ; CHECK-LABEL: test56:
444 ; CHECK: v{{[0-9]+}}.ub = vmax(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
445 define <16 x i32> @test56(<16 x i32> %a, <16 x i32> %b) #0 {
446 entry:
447   %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32> %a, <16 x i32> %b)
448   ret <16 x i32> %0
451 ; CHECK-LABEL: test57:
452 ; CHECK: v{{[0-9]+}}.uh = vmax(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
453 define <16 x i32> @test57(<16 x i32> %a, <16 x i32> %b) #0 {
454 entry:
455   %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32> %a, <16 x i32> %b)
456   ret <16 x i32> %0
459 ; CHECK-LABEL: test58:
460 ; CHECK: v{{[0-9]+}}.h = vmax(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
461 define <16 x i32> @test58(<16 x i32> %a, <16 x i32> %b) #0 {
462 entry:
463   %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32> %a, <16 x i32> %b)
464   ret <16 x i32> %0
467 ; CHECK-LABEL: test59:
468 ; CHECK: v{{[0-9]+}}.w = vmax(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
469 define <16 x i32> @test59(<16 x i32> %a, <16 x i32> %b) #0 {
470 entry:
471   %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32> %a, <16 x i32> %b)
472   ret <16 x i32> %0
475 ; CHECK-LABEL: test60:
476 ; CHECK: v{{[0-9]+}} = vdelta(v{{[0-9]+}},v{{[0-9]+}})
477 define <16 x i32> @test60(<16 x i32> %a, <16 x i32> %b) #0 {
478 entry:
479   %0 = tail call <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32> %a, <16 x i32> %b)
480   ret <16 x i32> %0
483 ; CHECK-LABEL: test61:
484 ; CHECK: v{{[0-9]+}} = vrdelta(v{{[0-9]+}},v{{[0-9]+}})
485 define <16 x i32> @test61(<16 x i32> %a, <16 x i32> %b) #0 {
486 entry:
487   %0 = tail call <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32> %a, <16 x i32> %b)
488   ret <16 x i32> %0
491 ; CHECK-LABEL: test62:
492 ; CHECK: v{{[0-9]+}}.b = vdeale(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
493 define <16 x i32> @test62(<16 x i32> %a, <16 x i32> %b) #0 {
494 entry:
495   %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32> %a, <16 x i32> %b)
496   ret <16 x i32> %0
499 ; CHECK-LABEL: test63:
500 ; CHECK: v{{[0-9]+}}.b = vshuffe(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
501 define <16 x i32> @test63(<16 x i32> %a, <16 x i32> %b) #0 {
502 entry:
503   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32> %a, <16 x i32> %b)
504   ret <16 x i32> %0
507 ; CHECK-LABEL: test64:
508 ; CHECK: v{{[0-9]+}}.b = vshuffo(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
509 define <16 x i32> @test64(<16 x i32> %a, <16 x i32> %b) #0 {
510 entry:
511   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32> %a, <16 x i32> %b)
512   ret <16 x i32> %0
515 ; CHECK-LABEL: test65:
516 ; CHECK: v{{[0-9]+}}.h = vshuffe(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
517 define <16 x i32> @test65(<16 x i32> %a, <16 x i32> %b) #0 {
518 entry:
519   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32> %a, <16 x i32> %b)
520   ret <16 x i32> %0
523 ; CHECK-LABEL: test66:
524 ; CHECK: v{{[0-9]+}}.h = vshuffo(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
525 define <16 x i32> @test66(<16 x i32> %a, <16 x i32> %b) #0 {
526 entry:
527   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32> %a, <16 x i32> %b)
528   ret <16 x i32> %0
531 ; CHECK-LABEL: test67:
532 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vshuffoe(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
533 define <32 x i32> @test67(<16 x i32> %a, <16 x i32> %b) #0 {
534 entry:
535   %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32> %a, <16 x i32> %b)
536   ret <32 x i32> %0
539 ; CHECK-LABEL: test68:
540 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vshuffoe(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
541 define <32 x i32> @test68(<16 x i32> %a, <16 x i32> %b) #0 {
542 entry:
543   %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32> %a, <16 x i32> %b)
544   ret <32 x i32> %0
547 ; CHECK-LABEL: test69:
548 ; CHECK: v{{[0-9]+}}:{{[0-9]+}} = vcombine(v{{[0-9]+}},v{{[0-9]+}})
549 define <32 x i32> @test69(<16 x i32> %a, <16 x i32> %b) #0 {
550 entry:
551   %0 = tail call <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32> %a, <16 x i32> %b)
552   ret <32 x i32> %0
555 ; CHECK-LABEL: test70:
556 ; CHECK: v{{[0-9]+}}.ub = vsat(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
557 define <16 x i32> @test70(<16 x i32> %a, <16 x i32> %b) #0 {
558 entry:
559   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32> %a, <16 x i32> %b)
560   ret <16 x i32> %0
563 ; CHECK-LABEL: test71:
564 ; CHECK: v{{[0-9]+}}.h = vsat(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
565 define <16 x i32> @test71(<16 x i32> %a, <16 x i32> %b) #0 {
566 entry:
567   %0 = tail call <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32> %a, <16 x i32> %b)
568   ret <16 x i32> %0
571 ; CHECK-LABEL: test72:
572 ; CHECK: v{{[0-9]+}}.h = vround(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat
573 define <16 x i32> @test72(<16 x i32> %a, <16 x i32> %b) #0 {
574 entry:
575   %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32> %a, <16 x i32> %b)
576   ret <16 x i32> %0
579 ; CHECK-LABEL: test73:
580 ; CHECK: v{{[0-9]+}}.uh = vround(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat
581 define <16 x i32> @test73(<16 x i32> %a, <16 x i32> %b) #0 {
582 entry:
583   %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32> %a, <16 x i32> %b)
584   ret <16 x i32> %0
587 ; CHECK-LABEL: test74:
588 ; CHECK: v{{[0-9]+}}.b = vround(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
589 define <16 x i32> @test74(<16 x i32> %a, <16 x i32> %b) #0 {
590 entry:
591   %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32> %a, <16 x i32> %b)
592   ret <16 x i32> %0
595 ; CHECK-LABEL: test75:
596 ; CHECK: v{{[0-9]+}}.ub = vround(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
597 define <16 x i32> @test75(<16 x i32> %a, <16 x i32> %b) #0 {
598 entry:
599   %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32> %a, <16 x i32> %b)
600   ret <16 x i32> %0
603 ; CHECK-LABEL: test76:
604 ; CHECK: v{{[0-9]+}}.w = vasr(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
605 define <16 x i32> @test76(<16 x i32> %a, <16 x i32> %b) #0 {
606 entry:
607   %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32> %a, <16 x i32> %b)
608   ret <16 x i32> %0
611 ; CHECK-LABEL: test77:
612 ; CHECK: v{{[0-9]+}}.w = vlsr(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
613 define <16 x i32> @test77(<16 x i32> %a, <16 x i32> %b) #0 {
614 entry:
615   %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32> %a, <16 x i32> %b)
616   ret <16 x i32> %0
619 ; CHECK-LABEL: test78:
620 ; CHECK: v{{[0-9]+}}.h = vlsr(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
621 define <16 x i32> @test78(<16 x i32> %a, <16 x i32> %b) #0 {
622 entry:
623   %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32> %a, <16 x i32> %b)
624   ret <16 x i32> %0
627 ; CHECK-LABEL: test79:
628 ; CHECK: v{{[0-9]+}}.h = vasr(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
629 define <16 x i32> @test79(<16 x i32> %a, <16 x i32> %b) #0 {
630 entry:
631   %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32> %a, <16 x i32> %b)
632   ret <16 x i32> %0
635 ; CHECK-LABEL: test80:
636 ; CHECK: v{{[0-9]+}}.w = vasl(v{{[0-9]+}}.w,v{{[0-9]+}}.w)
637 define <16 x i32> @test80(<16 x i32> %a, <16 x i32> %b) #0 {
638 entry:
639   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32> %a, <16 x i32> %b)
640   ret <16 x i32> %0
643 ; CHECK-LABEL: test81:
644 ; CHECK: v{{[0-9]+}}.h = vasl(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
645 define <16 x i32> @test81(<16 x i32> %a, <16 x i32> %b) #0 {
646 entry:
647   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32> %a, <16 x i32> %b)
648   ret <16 x i32> %0
651 ; CHECK-LABEL: test82:
652 ; CHECK: v{{[0-9]+}}.b = vadd(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
653 define <16 x i32> @test82(<16 x i32> %a, <16 x i32> %b) #0 {
654 entry:
655   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32> %a, <16 x i32> %b)
656   ret <16 x i32> %0
659 ; CHECK-LABEL: test83:
660 ; CHECK: v{{[0-9]+}}.h = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
661 define <16 x i32> @test83(<16 x i32> %a, <16 x i32> %b) #0 {
662 entry:
663   %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32> %a, <16 x i32> %b)
664   ret <16 x i32> %0
667 ; CHECK-LABEL: test84:
668 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.b += v{{[0-9]+}}.b
669 define <16 x i32> @test84(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
670 entry:
671   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
672   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddbq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
673   ret <16 x i32> %1
676 ; CHECK-LABEL: test85:
677 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.h += v{{[0-9]+}}.h
678 define <16 x i32> @test85(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
679 entry:
680   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
681   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddhq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
682   ret <16 x i32> %1
685 ; CHECK-LABEL: test86:
686 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.w += v{{[0-9]+}}.w
687 define <16 x i32> @test86(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
688 entry:
689   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
690   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddwq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
691   ret <16 x i32> %1
694 ; CHECK-LABEL: test87:
695 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.b += v{{[0-9]+}}.b
696 define <16 x i32> @test87(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
697 entry:
698   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
699   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddbnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
700   ret <16 x i32> %1
703 ; CHECK-LABEL: test88:
704 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.h += v{{[0-9]+}}.h
705 define <16 x i32> @test88(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
706 entry:
707   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
708   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddhnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
709   ret <16 x i32> %1
712 ; CHECK-LABEL: test89:
713 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.w += v{{[0-9]+}}.w
714 define <16 x i32> @test89(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
715 entry:
716   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
717   %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddwnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
718   ret <16 x i32> %1
721 ; CHECK-LABEL: test90:
722 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.b -= v{{[0-9]+}}.b
723 define <16 x i32> @test90(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
724 entry:
725   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
726   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubbq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
727   ret <16 x i32> %1
730 ; CHECK-LABEL: test91:
731 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.h -= v{{[0-9]+}}.h
732 define <16 x i32> @test91(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
733 entry:
734   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
735   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubhq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
736   ret <16 x i32> %1
739 ; CHECK-LABEL: test92:
740 ; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.w -= v{{[0-9]+}}.w
741 define <16 x i32> @test92(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
742 entry:
743   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
744   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubwq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
745   ret <16 x i32> %1
748 ; CHECK-LABEL: test93:
749 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.b -= v{{[0-9]+}}.b
750 define <16 x i32> @test93(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
751 entry:
752   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
753   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubbnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
754   ret <16 x i32> %1
757 ; CHECK-LABEL: test94:
758 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.h -= v{{[0-9]+}}.h
759 define <16 x i32> @test94(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
760 entry:
761   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
762   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubhnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
763   ret <16 x i32> %1
766 ; CHECK-LABEL: test95:
767 ; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.w -= v{{[0-9]+}}.w
768 define <16 x i32> @test95(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 {
769 entry:
770   %0 = tail call <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32> %a, i32 -1)
771   %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubwnq(<64 x i1> %0, <16 x i32> %c, <16 x i32> %b)
772   ret <16 x i32> %1
775 ; CHECK-LABEL: test96:
776 ; CHECK: v{{[0-9]+}}.h = vabs(v{{[0-9]+}}.h)
777 define <16 x i32> @test96(<16 x i32> %a) #0 {
778 entry:
779   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32> %a)
780   ret <16 x i32> %0
783 ; CHECK-LABEL: test97:
784 ; CHECK: v{{[0-9]+}}.h = vabs(v{{[0-9]+}}.h):sat
785 define <16 x i32> @test97(<16 x i32> %a) #0 {
786 entry:
787   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32> %a)
788   ret <16 x i32> %0
791 ; CHECK-LABEL: test98:
792 ; CHECK: v{{[0-9]+}}.w = vabs(v{{[0-9]+}}.w)
793 define <16 x i32> @test98(<16 x i32> %a) #0 {
794 entry:
795   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32> %a)
796   ret <16 x i32> %0
799 ; CHECK-LABEL: test99:
800 ; CHECK: v{{[0-9]+}}.w = vabs(v{{[0-9]+}}.w):sat
801 define <16 x i32> @test99(<16 x i32> %a) #0 {
802 entry:
803   %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32> %a)
804   ret <16 x i32> %0
807 ; CHECK-LABEL: test100:
808 ; CHECK: v{{[0-9]+}} = vnot(v{{[0-9]+}})
809 define <16 x i32> @test100(<16 x i32> %a) #0 {
810 entry:
811   %0 = tail call <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32> %a)
812   ret <16 x i32> %0
815 ; CHECK-LABEL: test101:
816 ; CHECK: v{{[0-9]+}}.h = vdeal(v{{[0-9]+}}.h)
817 define <16 x i32> @test101(<16 x i32> %a) #0 {
818 entry:
819   %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32> %a)
820   ret <16 x i32> %0
823 ; CHECK-LABEL: test102:
824 ; CHECK: v{{[0-9]+}}.b = vdeal(v{{[0-9]+}}.b)
825 define <16 x i32> @test102(<16 x i32> %a) #0 {
826 entry:
827   %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32> %a)
828   ret <16 x i32> %0
831 ; CHECK-LABEL: test103:
832 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vunpack(v{{[0-9]+}}.ub)
833 define <32 x i32> @test103(<16 x i32> %a) #0 {
834 entry:
835   %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32> %a)
836   ret <32 x i32> %0
839 ; CHECK-LABEL: test104:
840 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vunpack(v{{[0-9]+}}.uh)
841 define <32 x i32> @test104(<16 x i32> %a) #0 {
842 entry:
843   %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32> %a)
844   ret <32 x i32> %0
847 ; CHECK-LABEL: test105:
848 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vunpack(v{{[0-9]+}}.b)
849 define <32 x i32> @test105(<16 x i32> %a) #0 {
850 entry:
851   %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32> %a)
852   ret <32 x i32> %0
855 ; CHECK-LABEL: test106:
856 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vunpack(v{{[0-9]+}}.h)
857 define <32 x i32> @test106(<16 x i32> %a) #0 {
858 entry:
859   %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32> %a)
860   ret <32 x i32> %0
863 ; CHECK-LABEL: test107:
864 ; CHECK: v{{[0-9]+}}.h = vshuff(v{{[0-9]+}}.h)
865 define <16 x i32> @test107(<16 x i32> %a) #0 {
866 entry:
867   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32> %a)
868   ret <16 x i32> %0
871 ; CHECK-LABEL: test108:
872 ; CHECK: v{{[0-9]+}}.b = vshuff(v{{[0-9]+}}.b)
873 define <16 x i32> @test108(<16 x i32> %a) #0 {
874 entry:
875   %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32> %a)
876   ret <16 x i32> %0
879 ; CHECK-LABEL: test109:
880 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vzxt(v{{[0-9]+}}.ub)
881 define <32 x i32> @test109(<16 x i32> %a) #0 {
882 entry:
883   %0 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %a)
884   ret <32 x i32> %0
887 ; CHECK-LABEL: test110:
888 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vzxt(v{{[0-9]+}}.uh)
889 define <32 x i32> @test110(<16 x i32> %a) #0 {
890 entry:
891   %0 = tail call <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32> %a)
892   ret <32 x i32> %0
895 ; CHECK-LABEL: test111:
896 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsxt(v{{[0-9]+}}.b)
897 define <32 x i32> @test111(<16 x i32> %a) #0 {
898 entry:
899   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32> %a)
900   ret <32 x i32> %0
903 ; CHECK-LABEL: test112:
904 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsxt(v{{[0-9]+}}.h)
905 define <32 x i32> @test112(<16 x i32> %a) #0 {
906 entry:
907   %0 = tail call <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32> %a)
908   ret <32 x i32> %0
911 ; CHECK-LABEL: test113:
912 ; CHECK: v{{[0-9]+}} = v{{[0-9]+}}
913 define <16 x i32> @test113(<16 x i32> %a) #0 {
914 entry:
915   %0 = tail call <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32> %a)
916   ret <16 x i32> %0
919 declare <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32>, <16 x i32>) #0
920 declare <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32>, <16 x i32>) #0
921 declare <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32>, <16 x i32>) #0
922 declare <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32>, <16 x i32>) #0
923 declare <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32>, <16 x i32>) #0
924 declare <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32>, <16 x i32>) #0
925 declare <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32>, <16 x i32>) #0
926 declare <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32>, <16 x i32>) #0
927 declare <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32>, <16 x i32>) #0
928 declare <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32>, <16 x i32>) #0
929 declare <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32>, <32 x i32>) #0
930 declare <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32>, <32 x i32>) #0
931 declare <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32>, <32 x i32>) #0
932 declare <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32>, <32 x i32>) #0
933 declare <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32>, <32 x i32>) #0
934 declare <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32>, <32 x i32>) #0
935 declare <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32>, <32 x i32>) #0
936 declare <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32>, <32 x i32>) #0
937 declare <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32>, <32 x i32>) #0
938 declare <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32>, <32 x i32>) #0
939 declare <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32>, <32 x i32>) #0
940 declare <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32>, <32 x i32>) #0
941 declare <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32>, <32 x i32>) #0
942 declare <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32>, <32 x i32>) #0
943 declare <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32>, <16 x i32>) #0
944 declare <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32>, <16 x i32>) #0
945 declare <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32>, <16 x i32>) #0
946 declare <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32>, <16 x i32>) #0
947 declare <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32>, <16 x i32>) #0
948 declare <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32>, <16 x i32>) #0
949 declare <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32>, <16 x i32>) #0
950 declare <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32>, <16 x i32>) #0
951 declare <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32>, <16 x i32>) #0
952 declare <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32>, <16 x i32>) #0
953 declare <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32>, <16 x i32>) #0
954 declare <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32>, <16 x i32>) #0
955 declare <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32>, <16 x i32>) #0
956 declare <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32>, <16 x i32>) #0
957 declare <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32>, <16 x i32>) #0
958 declare <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32>, <16 x i32>) #0
959 declare <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32>, <16 x i32>) #0
960 declare <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32>, <16 x i32>) #0
961 declare <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32>, <16 x i32>) #0
962 declare <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32>, <16 x i32>) #0
963 declare <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32>, <16 x i32>) #0
964 declare <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32>, <32 x i32>) #0
965 declare <16 x i32> @llvm.hexagon.V6.vand(<16 x i32>, <16 x i32>) #0
966 declare <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32>, <16 x i32>) #0
967 declare <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32>, <16 x i32>) #0
968 declare <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32>, <16 x i32>) #0
969 declare <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32>, <16 x i32>) #0
970 declare <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32>, <16 x i32>) #0
971 declare <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32>, <16 x i32>) #0
972 declare <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32>, <16 x i32>) #0
973 declare <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32>, <16 x i32>) #0
974 declare <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32>, <16 x i32>) #0
975 declare <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32>, <16 x i32>) #0
976 declare <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32>, <16 x i32>) #0
977 declare <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32>, <16 x i32>) #0
978 declare <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32>, <16 x i32>) #0
979 declare <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32>, <16 x i32>) #0
980 declare <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32>, <16 x i32>) #0
981 declare <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32>, <16 x i32>) #0
982 declare <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32>, <16 x i32>) #0
983 declare <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32>, <16 x i32>) #0
984 declare <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32>, <16 x i32>) #0
985 declare <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32>, <16 x i32>) #0
986 declare <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32>, <16 x i32>) #0
987 declare <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32>, <16 x i32>) #0
988 declare <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32>, <16 x i32>) #0
989 declare <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32>, <16 x i32>) #0
990 declare <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32>, <16 x i32>) #0
991 declare <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32>, <16 x i32>) #0
992 declare <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32>, <16 x i32>) #0
993 declare <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32>, <16 x i32>) #0
994 declare <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32>, <16 x i32>) #0
995 declare <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32>, <16 x i32>) #0
996 declare <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32>, <16 x i32>) #0
997 declare <16 x i32> @llvm.hexagon.V6.vor(<16 x i32>, <16 x i32>) #0
998 declare <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32>, <16 x i32>) #0
999 declare <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32>, <16 x i32>) #0
1000 declare <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32>, <16 x i32>) #0
1001 declare <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32>, <16 x i32>) #0
1002 declare <16 x i32> @llvm.hexagon.V6.vaddbq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1003 declare <16 x i32> @llvm.hexagon.V6.vaddhq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1004 declare <16 x i32> @llvm.hexagon.V6.vaddwq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1005 declare <16 x i32> @llvm.hexagon.V6.vaddbnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1006 declare <16 x i32> @llvm.hexagon.V6.vaddhnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1007 declare <16 x i32> @llvm.hexagon.V6.vaddwnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1008 declare <16 x i32> @llvm.hexagon.V6.vsubbq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1009 declare <16 x i32> @llvm.hexagon.V6.vsubhq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1010 declare <16 x i32> @llvm.hexagon.V6.vsubwq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1011 declare <16 x i32> @llvm.hexagon.V6.vsubbnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1012 declare <16 x i32> @llvm.hexagon.V6.vsubhnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1013 declare <16 x i32> @llvm.hexagon.V6.vsubwnq(<64 x i1>, <16 x i32>, <16 x i32>) #0
1014 declare <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32>) #0
1015 declare <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32>) #0
1016 declare <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32>) #0
1017 declare <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32>) #0
1018 declare <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32>) #0
1019 declare <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32>) #0
1020 declare <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32>) #0
1021 declare <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32>) #0
1022 declare <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32>) #0
1023 declare <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32>) #0
1024 declare <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32>) #0
1025 declare <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32>) #0
1026 declare <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32>) #0
1027 declare <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32>) #0
1028 declare <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32>) #0
1029 declare <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32>) #0
1030 declare <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32>) #0
1031 declare <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32>) #0
1032 declare <64 x i1> @llvm.hexagon.V6.vandvrt(<16 x i32>, i32) #0
1034 attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }