1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 @c = external global <32 x i32>
4 @d = external global <16 x i32>
7 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vtmpy(v{{[0-9]+}}:{{[0-9]+}}.b,r{{[0-9]+}}.b)
8 define void @test1(<32 x i32> %a, i32 %b) #0 {
10 %0 = tail call <32 x i32> @llvm.hexagon.V6.vtmpyb(<32 x i32> %a, i32 %b)
11 store <32 x i32> %0, <32 x i32>* @c, align 128
16 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vtmpy(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
17 define void @test2(<32 x i32> %a, i32 %b) #0 {
19 %0 = tail call <32 x i32> @llvm.hexagon.V6.vtmpybus(<32 x i32> %a, i32 %b)
20 store <32 x i32> %0, <32 x i32>* @c, align 128
25 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.b)
26 define void @test3(<16 x i32> %a, i32 %b) #0 {
28 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhb(<16 x i32> %a, i32 %b)
29 store <16 x i32> %0, <16 x i32>* @d, align 64
34 ; CHECK: v{{[0-9]+}}.uw = vrmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.ub)
35 define void @test4(<16 x i32> %a, i32 %b) #0 {
37 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrmpyub(<16 x i32> %a, i32 %b)
38 store <16 x i32> %0, <16 x i32>* @d, align 64
43 ; CHECK: v{{[0-9]+}}.w = vrmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
44 define void @test5(<16 x i32> %a, i32 %b) #0 {
46 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybus(<16 x i32> %a, i32 %b)
47 store <16 x i32> %0, <16 x i32>* @d, align 64
52 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vdsad(v{{[0-9]+}}:{{[0-9]+}}.uh,r{{[0-9]+}}.uh)
53 define void @test6(<32 x i32> %a, i32 %b) #0 {
55 %0 = tail call <32 x i32> @llvm.hexagon.V6.vdsaduh(<32 x i32> %a, i32 %b)
56 store <32 x i32> %0, <32 x i32>* @c, align 128
61 ; CHECK: v{{[0-9]+}}.h = vdmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
62 define void @test7(<16 x i32> %a, i32 %b) #0 {
64 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpybus(<16 x i32> %a, i32 %b)
65 store <16 x i32> %0, <16 x i32>* @d, align 64
70 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vdmpy(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
71 define void @test8(<32 x i32> %a, i32 %b) #0 {
73 %0 = tail call <32 x i32> @llvm.hexagon.V6.vdmpybus.dv(<32 x i32> %a, i32 %b)
74 store <32 x i32> %0, <32 x i32>* @c, align 128
79 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.uh):sat
80 define void @test9(<16 x i32> %a, i32 %b) #0 {
82 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsusat(<16 x i32> %a, i32 %b)
83 store <16 x i32> %0, <16 x i32>* @d, align 64
87 ; CHECK-LABEL: test10:
88 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.uh,#1):sat
89 define void @test10(<32 x i32> %a, i32 %b) #0 {
91 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsuisat(<32 x i32> %a, i32 %b)
92 store <16 x i32> %0, <16 x i32>* @d, align 64
96 ; CHECK-LABEL: test11:
97 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h):sat
98 define void @test11(<16 x i32> %a, i32 %b) #0 {
100 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsat(<16 x i32> %a, i32 %b)
101 store <16 x i32> %0, <16 x i32>* @d, align 64
105 ; CHECK-LABEL: test12:
106 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.h):sat
107 define void @test12(<32 x i32> %a, i32 %b) #0 {
109 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhisat(<32 x i32> %a, i32 %b)
110 store <16 x i32> %0, <16 x i32>* @d, align 64
114 ; CHECK-LABEL: test13:
115 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
116 define void @test13(<32 x i32> %a, i32 %b) #0 {
118 %0 = tail call <32 x i32> @llvm.hexagon.V6.vdmpyhb.dv(<32 x i32> %a, i32 %b)
119 store <32 x i32> %0, <32 x i32>* @c, align 128
123 ; CHECK-LABEL: test14:
124 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
125 define void @test14(<16 x i32> %a, i32 %b) #0 {
127 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpybus(<16 x i32> %a, i32 %b)
128 store <32 x i32> %0, <32 x i32>* @c, align 128
132 ; CHECK-LABEL: test15:
133 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpa(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
134 define void @test15(<32 x i32> %a, i32 %b) #0 {
136 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpabus(<32 x i32> %a, i32 %b)
137 store <32 x i32> %0, <32 x i32>* @c, align 128
141 ; CHECK-LABEL: test16:
142 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vmpa(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
143 define void @test16(<32 x i32> %a, i32 %b) #0 {
145 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpahb(<32 x i32> %a, i32 %b)
146 store <32 x i32> %0, <32 x i32>* @c, align 128
150 ; CHECK-LABEL: test17:
151 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h)
152 define void @test17(<16 x i32> %a, i32 %b) #0 {
154 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyh(<16 x i32> %a, i32 %b)
155 store <32 x i32> %0, <32 x i32>* @c, align 128
159 ; CHECK-LABEL: test18:
160 ; CHECK: v{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h):<<1:sat
161 define void @test18(<16 x i32> %a, i32 %b) #0 {
163 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyhss(<16 x i32> %a, i32 %b)
164 store <16 x i32> %0, <16 x i32>* @d, align 64
168 ; CHECK-LABEL: test19:
169 ; CHECK: v{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h):<<1:rnd:sat
170 define void @test19(<16 x i32> %a, i32 %b) #0 {
172 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyhsrs(<16 x i32> %a, i32 %b)
173 store <16 x i32> %0, <16 x i32>* @d, align 64
177 ; CHECK-LABEL: test20:
178 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vmpy(v{{[0-9]+}}.uh,r{{[0-9]+}}.uh)
179 define void @test20(<16 x i32> %a, i32 %b) #0 {
181 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyuh(<16 x i32> %a, i32 %b)
182 store <32 x i32> %0, <32 x i32>* @c, align 128
186 ; CHECK-LABEL: test21:
187 ; CHECK: v{{[0-9]+}}.h = vmpyi(v{{[0-9]+}}.h,r{{[0-9]+}}.b)
188 define void @test21(<16 x i32> %a, i32 %b) #0 {
190 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyihb(<16 x i32> %a, i32 %b)
191 store <16 x i32> %0, <16 x i32>* @d, align 64
195 ; CHECK-LABEL: test22:
196 ; CHECK: v{{[0-9]+}} = vror(v{{[0-9]+}},r{{[0-9]+}})
197 define void @test22(<16 x i32> %a, i32 %b) #0 {
199 %0 = tail call <16 x i32> @llvm.hexagon.V6.vror(<16 x i32> %a, i32 %b)
200 store <16 x i32> %0, <16 x i32>* @d, align 64
204 ; CHECK-LABEL: test23:
205 ; CHECK: v{{[0-9]+}}.w = vasr(v{{[0-9]+}}.w,r{{[0-9]+}})
206 define void @test23(<16 x i32> %a, i32 %b) #0 {
208 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrw(<16 x i32> %a, i32 %b)
209 store <16 x i32> %0, <16 x i32>* @d, align 64
213 ; CHECK-LABEL: test24:
214 ; CHECK: v{{[0-9]+}}.h = vasr(v{{[0-9]+}}.h,r{{[0-9]+}})
215 define void @test24(<16 x i32> %a, i32 %b) #0 {
217 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrh(<16 x i32> %a, i32 %b)
218 store <16 x i32> %0, <16 x i32>* @d, align 64
222 ; CHECK-LABEL: test25:
223 ; CHECK: v{{[0-9]+}}.w = vasl(v{{[0-9]+}}.w,r{{[0-9]+}})
224 define void @test25(<16 x i32> %a, i32 %b) #0 {
226 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslw(<16 x i32> %a, i32 %b)
227 store <16 x i32> %0, <16 x i32>* @d, align 64
231 ; CHECK-LABEL: test26:
232 ; CHECK: v{{[0-9]+}}.h = vasl(v{{[0-9]+}}.h,r{{[0-9]+}})
233 define void @test26(<16 x i32> %a, i32 %b) #0 {
235 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslh(<16 x i32> %a, i32 %b)
236 store <16 x i32> %0, <16 x i32>* @d, align 64
240 ; CHECK-LABEL: test27:
241 ; CHECK: v{{[0-9]+}}.uw = vlsr(v{{[0-9]+}}.uw,r{{[0-9]+}})
242 define void @test27(<16 x i32> %a, i32 %b) #0 {
244 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrw(<16 x i32> %a, i32 %b)
245 store <16 x i32> %0, <16 x i32>* @d, align 64
249 ; CHECK-LABEL: test28:
250 ; CHECK: v{{[0-9]+}}.uh = vlsr(v{{[0-9]+}}.uh,r{{[0-9]+}})
251 define void @test28(<16 x i32> %a, i32 %b) #0 {
253 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrh(<16 x i32> %a, i32 %b)
254 store <16 x i32> %0, <16 x i32>* @d, align 64
258 ; CHECK-LABEL: test29:
259 ; CHECK: v{{[0-9]+}}.w = vmpyi(v{{[0-9]+}}.w,r{{[0-9]+}}.h)
260 define void @test29(<16 x i32> %a, i32 %b) #0 {
262 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiwh(<16 x i32> %a, i32 %b)
263 store <16 x i32> %0, <16 x i32>* @d, align 64
267 ; CHECK-LABEL: test30:
268 ; CHECK: v{{[0-9]+}}.w = vmpyi(v{{[0-9]+}}.w,r{{[0-9]+}}.b)
269 define void @test30(<16 x i32> %a, i32 %b) #0 {
271 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiwb(<16 x i32> %a, i32 %b)
272 store <16 x i32> %0, <16 x i32>* @d, align 64
276 ; CHECK-LABEL: test31:
277 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vtmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
278 define void @test31(<32 x i32> %a, i32 %b) #0 {
280 %0 = tail call <32 x i32> @llvm.hexagon.V6.vtmpyhb(<32 x i32> %a, i32 %b)
281 store <32 x i32> %0, <32 x i32>* @c, align 128
285 ; CHECK-LABEL: test32:
286 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.ub)
287 define void @test32(<16 x i32> %a, i32 %b) #0 {
289 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyub(<16 x i32> %a, i32 %b)
290 store <32 x i32> %0, <32 x i32>* @c, align 128
294 ; CHECK-LABEL: test33:
295 ; CHECK: v{{[0-9]+}}.uw = vrmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
296 define void @test33(<16 x i32> %a, <16 x i32> %b) #0 {
298 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrmpyubv(<16 x i32> %a, <16 x i32> %b)
299 store <16 x i32> %0, <16 x i32>* @d, align 64
303 ; CHECK-LABEL: test34:
304 ; CHECK: v{{[0-9]+}}.w = vrmpy(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
305 define void @test34(<16 x i32> %a, <16 x i32> %b) #0 {
307 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybv(<16 x i32> %a, <16 x i32> %b)
308 store <16 x i32> %0, <16 x i32>* @d, align 64
312 ; CHECK-LABEL: test35:
313 ; CHECK: v{{[0-9]+}}.w = vrmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.b)
314 define void @test35(<16 x i32> %a, <16 x i32> %b) #0 {
316 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybusv(<16 x i32> %a, <16 x i32> %b)
317 store <16 x i32> %0, <16 x i32>* @d, align 64
321 ; CHECK-LABEL: test36:
322 ; CHECK: v{{[0-9]+}}.w = vdmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
323 define void @test36(<16 x i32> %a, <16 x i32> %b) #0 {
325 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhvsat(<16 x i32> %a, <16 x i32> %b)
326 store <16 x i32> %0, <16 x i32>* @d, align 64
330 ; CHECK-LABEL: test37:
331 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
332 define void @test37(<16 x i32> %a, <16 x i32> %b) #0 {
334 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpybv(<16 x i32> %a, <16 x i32> %b)
335 store <32 x i32> %0, <32 x i32>* @c, align 128
339 ; CHECK-LABEL: test38:
340 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
341 define void @test38(<16 x i32> %a, <16 x i32> %b) #0 {
343 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyubv(<16 x i32> %a, <16 x i32> %b)
344 store <32 x i32> %0, <32 x i32>* @c, align 128
348 ; CHECK-LABEL: test39:
349 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.b)
350 define void @test39(<16 x i32> %a, <16 x i32> %b) #0 {
352 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpybusv(<16 x i32> %a, <16 x i32> %b)
353 store <32 x i32> %0, <32 x i32>* @c, align 128
357 ; CHECK-LABEL: test40:
358 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
359 define void @test40(<16 x i32> %a, <16 x i32> %b) #0 {
361 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyhv(<16 x i32> %a, <16 x i32> %b)
362 store <32 x i32> %0, <32 x i32>* @c, align 128
366 ; CHECK-LABEL: test41:
367 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vmpy(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
368 define void @test41(<16 x i32> %a, <16 x i32> %b) #0 {
370 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyuhv(<16 x i32> %a, <16 x i32> %b)
371 store <32 x i32> %0, <32 x i32>* @c, align 128
375 ; CHECK-LABEL: test42:
376 ; CHECK: v{{[0-9]+}}.h = vmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.h):<<1:rnd:sat
377 define void @test42(<16 x i32> %a, <16 x i32> %b) #0 {
379 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyhvsrs(<16 x i32> %a, <16 x i32> %b)
380 store <16 x i32> %0, <16 x i32>* @d, align 64
384 ; CHECK-LABEL: test43:
385 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.uh)
386 define void @test43(<16 x i32> %a, <16 x i32> %b) #0 {
388 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpyhus(<16 x i32> %a, <16 x i32> %b)
389 store <32 x i32> %0, <32 x i32>* @c, align 128
393 ; CHECK-LABEL: test44:
394 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpa(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.b)
395 define void @test44(<32 x i32> %a, <32 x i32> %b) #0 {
397 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpabusv(<32 x i32> %a, <32 x i32> %b)
398 store <32 x i32> %0, <32 x i32>* @c, align 128
402 ; CHECK-LABEL: test45:
403 ; CHECK: v{{[0-9]+}}.h = vmpyi(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
404 define void @test45(<16 x i32> %a, <16 x i32> %b) #0 {
406 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyih(<16 x i32> %a, <16 x i32> %b)
407 store <16 x i32> %0, <16 x i32>* @d, align 64
411 ; CHECK-LABEL: test46:
412 ; CHECK: v{{[0-9]+}}.w = vmpye(v{{[0-9]+}}.w,v{{[0-9]+}}.uh)
413 define void @test46(<16 x i32> %a, <16 x i32> %b) #0 {
415 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyewuh(<16 x i32> %a, <16 x i32> %b)
416 store <16 x i32> %0, <16 x i32>* @d, align 64
420 ; CHECK-LABEL: test47:
421 ; CHECK: v{{[0-9]+}}.w = vmpyo(v{{[0-9]+}}.w,v{{[0-9]+}}.h):<<1:sat
422 define void @test47(<16 x i32> %a, <16 x i32> %b) #0 {
424 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyowh(<16 x i32> %a, <16 x i32> %b)
425 store <16 x i32> %0, <16 x i32>* @d, align 64
429 ; CHECK-LABEL: test48:
430 ; CHECK: v{{[0-9]+}}.w = vmpyie(v{{[0-9]+}}.w,v{{[0-9]+}}.uh)
431 define void @test48(<16 x i32> %a, <16 x i32> %b) #0 {
433 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiewuh(<16 x i32> %a, <16 x i32> %b)
434 store <16 x i32> %0, <16 x i32>* @d, align 64
438 ; CHECK-LABEL: test49:
439 ; CHECK: v{{[0-9]+}}.w = vmpyio(v{{[0-9]+}}.w,v{{[0-9]+}}.h)
440 define void @test49(<16 x i32> %a, <16 x i32> %b) #0 {
442 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiowh(<16 x i32> %a, <16 x i32> %b)
443 store <16 x i32> %0, <16 x i32>* @d, align 64
447 ; CHECK-LABEL: test50:
448 ; CHECK: v{{[0-9]+}}.w = vmpyo(v{{[0-9]+}}.w,v{{[0-9]+}}.h):<<1:rnd:sat
449 define void @test50(<16 x i32> %a, <16 x i32> %b) #0 {
451 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyowh.rnd(<16 x i32> %a, <16 x i32> %b)
452 store <16 x i32> %0, <16 x i32>* @d, align 64
456 ; CHECK-LABEL: test51:
457 ; CHECK: v{{[0-9]+}}.w = vmpyieo(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
458 define void @test51(<16 x i32> %a, <16 x i32> %b) #0 {
460 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmpyieoh(<16 x i32> %a, <16 x i32> %b)
461 store <16 x i32> %0, <16 x i32>* @d, align 64
465 declare <32 x i32> @llvm.hexagon.V6.vtmpyb(<32 x i32>, i32) #0
466 declare <32 x i32> @llvm.hexagon.V6.vtmpybus(<32 x i32>, i32) #0
467 declare <16 x i32> @llvm.hexagon.V6.vdmpyhb(<16 x i32>, i32) #0
468 declare <16 x i32> @llvm.hexagon.V6.vrmpyub(<16 x i32>, i32) #0
469 declare <16 x i32> @llvm.hexagon.V6.vrmpybus(<16 x i32>, i32) #0
470 declare <32 x i32> @llvm.hexagon.V6.vdsaduh(<32 x i32>, i32) #0
471 declare <16 x i32> @llvm.hexagon.V6.vdmpybus(<16 x i32>, i32) #0
472 declare <32 x i32> @llvm.hexagon.V6.vdmpybus.dv(<32 x i32>, i32) #0
473 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsusat(<16 x i32>, i32) #0
474 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsuisat(<32 x i32>, i32) #0
475 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsat(<16 x i32>, i32) #0
476 declare <16 x i32> @llvm.hexagon.V6.vdmpyhisat(<32 x i32>, i32) #0
477 declare <32 x i32> @llvm.hexagon.V6.vdmpyhb.dv(<32 x i32>, i32) #0
478 declare <32 x i32> @llvm.hexagon.V6.vmpybus(<16 x i32>, i32) #0
479 declare <32 x i32> @llvm.hexagon.V6.vmpabus(<32 x i32>, i32) #0
480 declare <32 x i32> @llvm.hexagon.V6.vmpahb(<32 x i32>, i32) #0
481 declare <32 x i32> @llvm.hexagon.V6.vmpyh(<16 x i32>, i32) #0
482 declare <16 x i32> @llvm.hexagon.V6.vmpyhss(<16 x i32>, i32) #0
483 declare <16 x i32> @llvm.hexagon.V6.vmpyhsrs(<16 x i32>, i32) #0
484 declare <32 x i32> @llvm.hexagon.V6.vmpyuh(<16 x i32>, i32) #0
485 declare <16 x i32> @llvm.hexagon.V6.vmpyihb(<16 x i32>, i32) #0
486 declare <16 x i32> @llvm.hexagon.V6.vror(<16 x i32>, i32) #0
487 declare <16 x i32> @llvm.hexagon.V6.vasrw(<16 x i32>, i32) #0
488 declare <16 x i32> @llvm.hexagon.V6.vasrh(<16 x i32>, i32) #0
489 declare <16 x i32> @llvm.hexagon.V6.vaslw(<16 x i32>, i32) #0
490 declare <16 x i32> @llvm.hexagon.V6.vaslh(<16 x i32>, i32) #0
491 declare <16 x i32> @llvm.hexagon.V6.vlsrw(<16 x i32>, i32) #0
492 declare <16 x i32> @llvm.hexagon.V6.vlsrh(<16 x i32>, i32) #0
493 declare <16 x i32> @llvm.hexagon.V6.vmpyiwh(<16 x i32>, i32) #0
494 declare <16 x i32> @llvm.hexagon.V6.vmpyiwb(<16 x i32>, i32) #0
495 declare <32 x i32> @llvm.hexagon.V6.vtmpyhb(<32 x i32>, i32) #0
496 declare <32 x i32> @llvm.hexagon.V6.vmpyub(<16 x i32>, i32) #0
497 declare <16 x i32> @llvm.hexagon.V6.vrmpyubv(<16 x i32>, <16 x i32>) #0
498 declare <16 x i32> @llvm.hexagon.V6.vrmpybv(<16 x i32>, <16 x i32>) #0
499 declare <16 x i32> @llvm.hexagon.V6.vrmpybusv(<16 x i32>, <16 x i32>) #0
500 declare <16 x i32> @llvm.hexagon.V6.vdmpyhvsat(<16 x i32>, <16 x i32>) #0
501 declare <32 x i32> @llvm.hexagon.V6.vmpybv(<16 x i32>, <16 x i32>) #0
502 declare <32 x i32> @llvm.hexagon.V6.vmpyubv(<16 x i32>, <16 x i32>) #0
503 declare <32 x i32> @llvm.hexagon.V6.vmpybusv(<16 x i32>, <16 x i32>) #0
504 declare <32 x i32> @llvm.hexagon.V6.vmpyhv(<16 x i32>, <16 x i32>) #0
505 declare <32 x i32> @llvm.hexagon.V6.vmpyuhv(<16 x i32>, <16 x i32>) #0
506 declare <16 x i32> @llvm.hexagon.V6.vmpyhvsrs(<16 x i32>, <16 x i32>) #0
507 declare <32 x i32> @llvm.hexagon.V6.vmpyhus(<16 x i32>, <16 x i32>) #0
508 declare <32 x i32> @llvm.hexagon.V6.vmpabusv(<32 x i32>, <32 x i32>) #0
509 declare <16 x i32> @llvm.hexagon.V6.vmpyih(<16 x i32>, <16 x i32>) #0
510 declare <16 x i32> @llvm.hexagon.V6.vmpyewuh(<16 x i32>, <16 x i32>) #0
511 declare <16 x i32> @llvm.hexagon.V6.vmpyowh(<16 x i32>, <16 x i32>) #0
512 declare <16 x i32> @llvm.hexagon.V6.vmpyiewuh(<16 x i32>, <16 x i32>) #0
513 declare <16 x i32> @llvm.hexagon.V6.vmpyiowh(<16 x i32>, <16 x i32>) #0
514 declare <16 x i32> @llvm.hexagon.V6.vmpyowh.rnd(<16 x i32>, <16 x i32>) #0
515 declare <16 x i32> @llvm.hexagon.V6.vmpyieoh(<16 x i32>, <16 x i32>) #0
517 attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" }