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 = load <32 x i32>, ptr @c, align 128
11 %1 = tail call <32 x i32> @llvm.hexagon.V6.vtmpyb.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
12 store <32 x i32> %1, ptr @c, align 128
17 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vtmpy(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
18 define void @test2(<32 x i32> %a, i32 %b) #0 {
20 %0 = load <32 x i32>, ptr @c, align 128
21 %1 = tail call <32 x i32> @llvm.hexagon.V6.vtmpybus.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
22 store <32 x i32> %1, ptr @c, align 128
27 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vtmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
28 define void @test3(<32 x i32> %a, i32 %b) #0 {
30 %0 = load <32 x i32>, ptr @c, align 128
31 %1 = tail call <32 x i32> @llvm.hexagon.V6.vtmpyhb.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
32 store <32 x i32> %1, ptr @c, align 128
37 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.b)
38 define void @test4(<16 x i32> %a, i32 %b) #0 {
40 %0 = load <16 x i32>, ptr @d, align 64
41 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhb.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
42 store <16 x i32> %1, ptr @d, align 64
47 ; CHECK: v{{[0-9]+}}.uw += vrmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.ub)
48 define void @test5(<16 x i32> %a, i32 %b) #0 {
50 %0 = load <16 x i32>, ptr @d, align 64
51 %1 = tail call <16 x i32> @llvm.hexagon.V6.vrmpyub.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
52 store <16 x i32> %1, ptr @d, align 64
57 ; CHECK: v{{[0-9]+}}.w += vrmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
58 define void @test6(<16 x i32> %a, i32 %b) #0 {
60 %0 = load <16 x i32>, ptr @d, align 64
61 %1 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybus.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
62 store <16 x i32> %1, ptr @d, align 64
67 ; CHECK: v{{[0-9]+}}.h += vdmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
68 define void @test7(<16 x i32> %a, i32 %b) #0 {
70 %0 = load <16 x i32>, ptr @d, align 64
71 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpybus.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
72 store <16 x i32> %1, ptr @d, align 64
77 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vdmpy(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
78 define void @test8(<32 x i32> %a, i32 %b) #0 {
80 %0 = load <32 x i32>, ptr @c, align 128
81 %1 = tail call <32 x i32> @llvm.hexagon.V6.vdmpybus.dv.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
82 store <32 x i32> %1, ptr @c, align 128
87 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.uh):sat
88 define void @test9(<16 x i32> %a, i32 %b) #0 {
90 %0 = load <16 x i32>, ptr @d, align 64
91 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsusat.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
92 store <16 x i32> %1, ptr @d, align 64
96 ; CHECK-LABEL: test10:
97 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.uh,#1):sat
98 define void @test10(<32 x i32> %a, i32 %b) #0 {
100 %0 = load <16 x i32>, ptr @d, align 64
101 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsuisat.acc(<16 x i32> %0, <32 x i32> %a, i32 %b)
102 store <16 x i32> %1, ptr @d, align 64
106 ; CHECK-LABEL: test11:
107 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.h):sat
108 define void @test11(<32 x i32> %a, i32 %b) #0 {
110 %0 = load <16 x i32>, ptr @d, align 64
111 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhisat.acc(<16 x i32> %0, <32 x i32> %a, i32 %b)
112 store <16 x i32> %1, ptr @d, align 64
116 ; CHECK-LABEL: test12:
117 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h):sat
118 define void @test12(<16 x i32> %a, i32 %b) #0 {
120 %0 = load <16 x i32>, ptr @d, align 64
121 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhsat.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
122 store <16 x i32> %1, ptr @d, align 64
126 ; CHECK-LABEL: test13:
127 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
128 define void @test13(<32 x i32> %a, i32 %b) #0 {
130 %0 = load <32 x i32>, ptr @c, align 128
131 %1 = tail call <32 x i32> @llvm.hexagon.V6.vdmpyhb.dv.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
132 store <32 x i32> %1, ptr @c, align 128
136 ; CHECK-LABEL: test14:
137 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.b)
138 define void @test14(<16 x i32> %a, i32 %b) #0 {
140 %0 = load <32 x i32>, ptr @c, align 128
141 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpybus.acc(<32 x i32> %0, <16 x i32> %a, i32 %b)
142 store <32 x i32> %1, ptr @c, align 128
146 ; CHECK-LABEL: test15:
147 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vmpa(v{{[0-9]+}}:{{[0-9]+}}.ub,r{{[0-9]+}}.b)
148 define void @test15(<32 x i32> %a, i32 %b) #0 {
150 %0 = load <32 x i32>, ptr @c, align 128
151 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpabus.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
152 store <32 x i32> %1, ptr @c, align 128
156 ; CHECK-LABEL: test16:
157 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vmpa(v{{[0-9]+}}:{{[0-9]+}}.h,r{{[0-9]+}}.b)
158 define void @test16(<32 x i32> %a, i32 %b) #0 {
160 %0 = load <32 x i32>, ptr @c, align 128
161 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpahb.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
162 store <32 x i32> %1, ptr @c, align 128
166 ; CHECK-LABEL: test17:
167 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vmpy(v{{[0-9]+}}.h,r{{[0-9]+}}.h):sat
168 define void @test17(<16 x i32> %a, i32 %b) #0 {
170 %0 = load <32 x i32>, ptr @c, align 128
171 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyhsat.acc(<32 x i32> %0, <16 x i32> %a, i32 %b)
172 store <32 x i32> %1, ptr @c, align 128
176 ; CHECK-LABEL: test18:
177 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw += vmpy(v{{[0-9]+}}.uh,r{{[0-9]+}}.uh)
178 define void @test18(<16 x i32> %a, i32 %b) #0 {
180 %0 = load <32 x i32>, ptr @c, align 128
181 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyuh.acc(<32 x i32> %0, <16 x i32> %a, i32 %b)
182 store <32 x i32> %1, ptr @c, align 128
186 ; CHECK-LABEL: test19:
187 ; CHECK: v{{[0-9]+}}.w += vmpyi(v{{[0-9]+}}.w,r{{[0-9]+}}.b)
188 define void @test19(<16 x i32> %a, i32 %b) #0 {
190 %0 = load <16 x i32>, ptr @d, align 64
191 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiwb.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
192 store <16 x i32> %1, ptr @d, align 64
196 ; CHECK-LABEL: test20:
197 ; CHECK: v{{[0-9]+}}.w += vmpyi(v{{[0-9]+}}.w,r{{[0-9]+}}.h)
198 define void @test20(<16 x i32> %a, i32 %b) #0 {
200 %0 = load <16 x i32>, ptr @d, align 64
201 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiwh.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
202 store <16 x i32> %1, ptr @d, align 64
206 ; CHECK-LABEL: test21:
207 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw += vdsad(v{{[0-9]+}}:{{[0-9]+}}.uh,r{{[0-9]+}}.uh)
208 define void @test21(<32 x i32> %a, i32 %b) #0 {
210 %0 = load <32 x i32>, ptr @c, align 128
211 %1 = tail call <32 x i32> @llvm.hexagon.V6.vdsaduh.acc(<32 x i32> %0, <32 x i32> %a, i32 %b)
212 store <32 x i32> %1, ptr @c, align 128
216 ; CHECK-LABEL: test22:
217 ; CHECK: v{{[0-9]+}}.h += vmpyi(v{{[0-9]+}}.h,r{{[0-9]+}}.b)
218 define void @test22(<16 x i32> %a, i32 %b) #0 {
220 %0 = load <16 x i32>, ptr @d, align 64
221 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyihb.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
222 store <16 x i32> %1, ptr @d, align 64
226 ; CHECK-LABEL: test23:
227 ; CHECK: v{{[0-9]+}}.w += vasl(v{{[0-9]+}}.w,r{{[0-9]+}})
228 define void @test23(<16 x i32> %a, i32 %b) #0 {
230 %0 = load <16 x i32>, ptr @d, align 64
231 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaslw.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
232 store <16 x i32> %1, ptr @d, align 64
236 ; CHECK-LABEL: test24:
237 ; CHECK: v{{[0-9]+}}.w += vasr(v{{[0-9]+}}.w,r{{[0-9]+}})
238 define void @test24(<16 x i32> %a, i32 %b) #0 {
240 %0 = load <16 x i32>, ptr @d, align 64
241 %1 = tail call <16 x i32> @llvm.hexagon.V6.vasrw.acc(<16 x i32> %0, <16 x i32> %a, i32 %b)
242 store <16 x i32> %1, ptr @d, align 64
246 ; CHECK-LABEL: test25:
247 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh += vmpy(v{{[0-9]+}}.ub,r{{[0-9]+}}.ub)
248 define void @test25(<16 x i32> %a, i32 %b) #0 {
250 %0 = load <32 x i32>, ptr @c, align 128
251 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyub.acc(<32 x i32> %0, <16 x i32> %a, i32 %b)
252 store <32 x i32> %1, ptr @c, align 128
256 ; CHECK-LABEL: test26:
257 ; CHECK: v{{[0-9]+}}.w += vdmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat
258 define void @test26(<16 x i32> %a, <16 x i32> %b) #0 {
260 %0 = load <16 x i32>, ptr @d, align 64
261 %1 = tail call <16 x i32> @llvm.hexagon.V6.vdmpyhvsat.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
262 store <16 x i32> %1, ptr @d, align 64
266 ; CHECK-LABEL: test27:
267 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.b)
268 define void @test27(<16 x i32> %a, <16 x i32> %b) #0 {
270 %0 = load <32 x i32>, ptr @c, align 128
271 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpybusv.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
272 store <32 x i32> %1, ptr @c, align 128
276 ; CHECK-LABEL: test28:
277 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h += vmpy(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
278 define void @test28(<16 x i32> %a, <16 x i32> %b) #0 {
280 %0 = load <32 x i32>, ptr @c, align 128
281 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpybv.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
282 store <32 x i32> %1, ptr @c, align 128
286 ; CHECK-LABEL: test29:
287 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.uh)
288 define void @test29(<16 x i32> %a, <16 x i32> %b) #0 {
290 %0 = load <32 x i32>, ptr @c, align 128
291 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyhus.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
292 store <32 x i32> %1, ptr @c, align 128
296 ; CHECK-LABEL: test30:
297 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w += vmpy(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
298 define void @test30(<16 x i32> %a, <16 x i32> %b) #0 {
300 %0 = load <32 x i32>, ptr @c, align 128
301 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyhv.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
302 store <32 x i32> %1, ptr @c, align 128
306 ; CHECK-LABEL: test31:
307 ; CHECK: v{{[0-9]+}}.w += vmpyie(v{{[0-9]+}}.w,v{{[0-9]+}}.h)
308 define void @test31(<16 x i32> %a, <16 x i32> %b) #0 {
310 %0 = load <16 x i32>, ptr @d, align 64
311 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiewh.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
312 store <16 x i32> %1, ptr @d, align 64
316 ; CHECK-LABEL: test32:
317 ; CHECK: v{{[0-9]+}}.w += vmpyie(v{{[0-9]+}}.w,v{{[0-9]+}}.uh)
318 define void @test32(<16 x i32> %a, <16 x i32> %b) #0 {
320 %0 = load <16 x i32>, ptr @d, align 64
321 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyiewuh.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
322 store <16 x i32> %1, ptr @d, align 64
326 ; CHECK-LABEL: test33:
327 ; CHECK: v{{[0-9]+}}.h += vmpyi(v{{[0-9]+}}.h,v{{[0-9]+}}.h)
328 define void @test33(<16 x i32> %a, <16 x i32> %b) #0 {
330 %0 = load <16 x i32>, ptr @d, align 64
331 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyih.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
332 store <16 x i32> %1, ptr @d, align 64
336 ; CHECK-LABEL: test34:
337 ; CHECK: v{{[0-9]+}}.w += vmpyo(v{{[0-9]+}}.w,v{{[0-9]+}}.h):<<1:rnd:sat:shift
338 define void @test34(<16 x i32> %a, <16 x i32> %b) #0 {
340 %0 = load <16 x i32>, ptr @d, align 64
341 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyowh.rnd.sacc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
342 store <16 x i32> %1, ptr @d, align 64
346 ; CHECK-LABEL: test35:
347 ; CHECK: v{{[0-9]+}}.w += vmpyo(v{{[0-9]+}}.w,v{{[0-9]+}}.h):<<1:sat:shift
348 define void @test35(<16 x i32> %a, <16 x i32> %b) #0 {
350 %0 = load <16 x i32>, ptr @d, align 64
351 %1 = tail call <16 x i32> @llvm.hexagon.V6.vmpyowh.sacc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
352 store <16 x i32> %1, ptr @d, align 64
356 ; CHECK-LABEL: test36:
357 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh += vmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
358 define void @test36(<16 x i32> %a, <16 x i32> %b) #0 {
360 %0 = load <32 x i32>, ptr @c, align 128
361 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyubv.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
362 store <32 x i32> %1, ptr @c, align 128
366 ; CHECK-LABEL: test37:
367 ; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw += vmpy(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh)
368 define void @test37(<16 x i32> %a, <16 x i32> %b) #0 {
370 %0 = load <32 x i32>, ptr @c, align 128
371 %1 = tail call <32 x i32> @llvm.hexagon.V6.vmpyuhv.acc(<32 x i32> %0, <16 x i32> %a, <16 x i32> %b)
372 store <32 x i32> %1, ptr @c, align 128
376 ; CHECK-LABEL: test38:
377 ; CHECK: v{{[0-9]+}}.w += vrmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.b)
378 define void @test38(<16 x i32> %a, <16 x i32> %b) #0 {
380 %0 = load <16 x i32>, ptr @d, align 64
381 %1 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybusv.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
382 store <16 x i32> %1, ptr @d, align 64
386 ; CHECK-LABEL: test39:
387 ; CHECK: v{{[0-9]+}}.w += vrmpy(v{{[0-9]+}}.b,v{{[0-9]+}}.b)
388 define void @test39(<16 x i32> %a, <16 x i32> %b) #0 {
390 %0 = load <16 x i32>, ptr @d, align 64
391 %1 = tail call <16 x i32> @llvm.hexagon.V6.vrmpybv.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
392 store <16 x i32> %1, ptr @d, align 64
396 ; CHECK-LABEL: test40:
397 ; CHECK: v{{[0-9]+}}.uw += vrmpy(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub)
398 define void @test40(<16 x i32> %a, <16 x i32> %b) #0 {
400 %0 = load <16 x i32>, ptr @d, align 64
401 %1 = tail call <16 x i32> @llvm.hexagon.V6.vrmpyubv.acc(<16 x i32> %0, <16 x i32> %a, <16 x i32> %b)
402 store <16 x i32> %1, ptr @d, align 64
406 declare <32 x i32> @llvm.hexagon.V6.vtmpyb.acc(<32 x i32>, <32 x i32>, i32) #0
407 declare <32 x i32> @llvm.hexagon.V6.vtmpybus.acc(<32 x i32>, <32 x i32>, i32) #0
408 declare <32 x i32> @llvm.hexagon.V6.vtmpyhb.acc(<32 x i32>, <32 x i32>, i32) #0
409 declare <16 x i32> @llvm.hexagon.V6.vdmpyhb.acc(<16 x i32>, <16 x i32>, i32) #0
410 declare <16 x i32> @llvm.hexagon.V6.vrmpyub.acc(<16 x i32>, <16 x i32>, i32) #0
411 declare <16 x i32> @llvm.hexagon.V6.vrmpybus.acc(<16 x i32>, <16 x i32>, i32) #0
412 declare <16 x i32> @llvm.hexagon.V6.vdmpybus.acc(<16 x i32>, <16 x i32>, i32) #0
413 declare <32 x i32> @llvm.hexagon.V6.vdmpybus.dv.acc(<32 x i32>, <32 x i32>, i32) #0
414 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsusat.acc(<16 x i32>, <16 x i32>, i32) #0
415 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsuisat.acc(<16 x i32>, <32 x i32>, i32) #0
416 declare <16 x i32> @llvm.hexagon.V6.vdmpyhisat.acc(<16 x i32>, <32 x i32>, i32) #0
417 declare <16 x i32> @llvm.hexagon.V6.vdmpyhsat.acc(<16 x i32>, <16 x i32>, i32) #0
418 declare <32 x i32> @llvm.hexagon.V6.vdmpyhb.dv.acc(<32 x i32>, <32 x i32>, i32) #0
419 declare <32 x i32> @llvm.hexagon.V6.vmpybus.acc(<32 x i32>, <16 x i32>, i32) #0
420 declare <32 x i32> @llvm.hexagon.V6.vmpabus.acc(<32 x i32>, <32 x i32>, i32) #0
421 declare <32 x i32> @llvm.hexagon.V6.vmpahb.acc(<32 x i32>, <32 x i32>, i32) #0
422 declare <32 x i32> @llvm.hexagon.V6.vmpyhsat.acc(<32 x i32>, <16 x i32>, i32) #0
423 declare <32 x i32> @llvm.hexagon.V6.vmpyuh.acc(<32 x i32>, <16 x i32>, i32) #0
424 declare <16 x i32> @llvm.hexagon.V6.vmpyiwb.acc(<16 x i32>, <16 x i32>, i32) #0
425 declare <16 x i32> @llvm.hexagon.V6.vmpyiwh.acc(<16 x i32>, <16 x i32>, i32) #0
426 declare <32 x i32> @llvm.hexagon.V6.vdsaduh.acc(<32 x i32>, <32 x i32>, i32) #0
427 declare <16 x i32> @llvm.hexagon.V6.vmpyihb.acc(<16 x i32>, <16 x i32>, i32) #0
428 declare <16 x i32> @llvm.hexagon.V6.vaslw.acc(<16 x i32>, <16 x i32>, i32) #0
429 declare <16 x i32> @llvm.hexagon.V6.vasrw.acc(<16 x i32>, <16 x i32>, i32) #0
430 declare <32 x i32> @llvm.hexagon.V6.vmpyub.acc(<32 x i32>, <16 x i32>, i32) #0
431 declare <16 x i32> @llvm.hexagon.V6.vdmpyhvsat.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
432 declare <32 x i32> @llvm.hexagon.V6.vmpybusv.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
433 declare <32 x i32> @llvm.hexagon.V6.vmpybv.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
434 declare <32 x i32> @llvm.hexagon.V6.vmpyhus.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
435 declare <32 x i32> @llvm.hexagon.V6.vmpyhv.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
436 declare <16 x i32> @llvm.hexagon.V6.vmpyiewh.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
437 declare <16 x i32> @llvm.hexagon.V6.vmpyiewuh.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
438 declare <16 x i32> @llvm.hexagon.V6.vmpyih.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
439 declare <16 x i32> @llvm.hexagon.V6.vmpyowh.rnd.sacc(<16 x i32>, <16 x i32>, <16 x i32>) #0
440 declare <16 x i32> @llvm.hexagon.V6.vmpyowh.sacc(<16 x i32>, <16 x i32>, <16 x i32>) #0
441 declare <32 x i32> @llvm.hexagon.V6.vmpyubv.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
442 declare <32 x i32> @llvm.hexagon.V6.vmpyuhv.acc(<32 x i32>, <16 x i32>, <16 x i32>) #0
443 declare <16 x i32> @llvm.hexagon.V6.vrmpybusv.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
444 declare <16 x i32> @llvm.hexagon.V6.vrmpybv.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
445 declare <16 x i32> @llvm.hexagon.V6.vrmpyubv.acc(<16 x i32>, <16 x i32>, <16 x i32>) #0
447 attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx60,+hvx-length64b" }