1 ; RUN: llc -march=hexagon < %s | FileCheck %s
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 {
7 %0 = tail call <16 x i32> @llvm.hexagon.V6.vand(<16 x i32> %a, <16 x i32> %b)
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 {
15 %0 = tail call <16 x i32> @llvm.hexagon.V6.vor(<16 x i32> %a, <16 x i32> %b)
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 {
23 %0 = tail call <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32> %a, <16 x i32> %b)
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 {
31 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32> %a, <16 x i32> %b)
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 {
39 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32> %a, <16 x i32> %b)
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 {
47 %0 = tail call <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32> %a, <16 x i32> %b)
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 {
55 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32> %a, <16 x i32> %b)
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 {
63 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32> %a, <16 x i32> %b)
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 {
71 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32> %a, <16 x i32> %b)
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 {
79 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32> %a, <16 x i32> %b)
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 {
87 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32> %a, <16 x i32> %b)
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 {
95 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32> %a, <16 x i32> %b)
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 {
103 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32> %a, <16 x i32> %b)
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 {
111 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32> %a, <16 x i32> %b)
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 {
119 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32> %a, <16 x i32> %b)
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 {
127 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32> %a, <32 x i32> %b)
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 {
135 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32> %a, <32 x i32> %b)
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 {
143 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32> %a, <32 x i32> %b)
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 {
151 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
159 %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
167 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
175 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
183 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32> %a, <32 x i32> %b)
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 {
191 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32> %a, <32 x i32> %b)
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 {
199 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32> %a, <32 x i32> %b)
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 {
207 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
215 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
223 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
231 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32> %a, <32 x i32> %b)
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 {
239 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32> %a, <16 x i32> %b)
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 {
247 %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32> %a, <16 x i32> %b)
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 {
255 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32> %a, <16 x i32> %b)
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 {
263 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32> %a, <16 x i32> %b)
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 {
271 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32> %a, <16 x i32> %b)
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 {
279 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32> %a, <16 x i32> %b)
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 {
287 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32> %a, <16 x i32> %b)
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 {
295 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32> %a, <16 x i32> %b)
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 {
303 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32> %a, <16 x i32> %b)
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 {
311 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32> %a, <16 x i32> %b)
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 {
319 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32> %a, <16 x i32> %b)
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 {
327 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32> %a, <16 x i32> %b)
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 {
335 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32> %a, <16 x i32> %b)
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 {
343 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32> %a, <16 x i32> %b)
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 {
351 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32> %a, <16 x i32> %b)
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 {
359 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32> %a, <16 x i32> %b)
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 {
367 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32> %a, <16 x i32> %b)
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 {
375 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32> %a, <16 x i32> %b)
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 {
383 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32> %a, <16 x i32> %b)
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 {
391 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32> %a, <16 x i32> %b)
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 {
399 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32> %a, <16 x i32> %b)
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 {
407 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32> %a, <32 x i32> %b)
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 {
415 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32> %a, <16 x i32> %b)
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 {
423 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32> %a, <16 x i32> %b)
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 {
431 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32> %a, <16 x i32> %b)
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 {
439 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32> %a, <16 x i32> %b)
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 {
447 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32> %a, <16 x i32> %b)
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 {
455 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32> %a, <16 x i32> %b)
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 {
463 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32> %a, <16 x i32> %b)
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 {
471 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32> %a, <16 x i32> %b)
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 {
479 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32> %a, <16 x i32> %b)
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 {
487 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32> %a, <16 x i32> %b)
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 {
495 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32> %a, <16 x i32> %b)
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 {
503 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32> %a, <16 x i32> %b)
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 {
511 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32> %a, <16 x i32> %b)
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 {
519 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32> %a, <16 x i32> %b)
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 {
527 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32> %a, <16 x i32> %b)
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 {
535 %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32> %a, <16 x i32> %b)
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 {
543 %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32> %a, <16 x i32> %b)
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 {
551 %0 = tail call <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32> %a, <16 x i32> %b)
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 {
559 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32> %a, <16 x i32> %b)
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 {
567 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32> %a, <16 x i32> %b)
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 {
575 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32> %a, <16 x i32> %b)
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 {
583 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32> %a, <16 x i32> %b)
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 {
591 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32> %a, <16 x i32> %b)
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 {
599 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32> %a, <16 x i32> %b)
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 {
607 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32> %a, <16 x i32> %b)
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 {
615 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32> %a, <16 x i32> %b)
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 {
623 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32> %a, <16 x i32> %b)
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 {
631 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32> %a, <16 x i32> %b)
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 {
639 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32> %a, <16 x i32> %b)
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 {
647 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32> %a, <16 x i32> %b)
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 {
655 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32> %a, <16 x i32> %b)
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 {
663 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32> %a, <16 x i32> %b)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
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)
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 {
779 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32> %a)
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 {
787 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32> %a)
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 {
795 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32> %a)
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 {
803 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32> %a)
807 ; CHECK-LABEL: test100:
808 ; CHECK: v{{[0-9]+}} = vnot(v{{[0-9]+}})
809 define <16 x i32> @test100(<16 x i32> %a) #0 {
811 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32> %a)
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 {
819 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32> %a)
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 {
827 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32> %a)
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 {
835 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32> %a)
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 {
843 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32> %a)
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 {
851 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32> %a)
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 {
859 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32> %a)
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 {
867 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32> %a)
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 {
875 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32> %a)
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 {
883 %0 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %a)
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 {
891 %0 = tail call <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32> %a)
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 {
899 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32> %a)
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 {
907 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32> %a)
911 ; CHECK-LABEL: test113:
912 ; CHECK: v{{[0-9]+}} = v{{[0-9]+}}
913 define <16 x i32> @test113(<16 x i32> %a) #0 {
915 %0 = tail call <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32> %a)
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" }