Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / intrinsics-v60-vmpy-acc.ll
blob383314947523f568503002747ea9557a2b78057a
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 @c = external global <32 x i32>
4 @d = external global <16 x i32>
6 ; CHECK-LABEL: test1:
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 {
9 entry:
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
13   ret void
16 ; CHECK-LABEL: test2:
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 {
19 entry:
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
23   ret void
26 ; CHECK-LABEL: test3:
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 {
29 entry:
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
33   ret void
36 ; CHECK-LABEL: test4:
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 {
39 entry:
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
43   ret void
46 ; CHECK-LABEL: test5:
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 {
49 entry:
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
53   ret void
56 ; CHECK-LABEL: test6:
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 {
59 entry:
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
63   ret void
66 ; CHECK-LABEL: test7:
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 {
69 entry:
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
73   ret void
76 ; CHECK-LABEL: test8:
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 {
79 entry:
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
83   ret void
86 ; CHECK-LABEL: test9:
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 {
89 entry:
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
93   ret void
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 {
99 entry:
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
103   ret void
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 {
109 entry:
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
113   ret void
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 {
119 entry:
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
123   ret void
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 {
129 entry:
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
133   ret void
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 {
139 entry:
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
143   ret void
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 {
149 entry:
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
153   ret void
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 {
159 entry:
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
163   ret void
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 {
169 entry:
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
173   ret void
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 {
179 entry:
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
183   ret void
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 {
189 entry:
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
193   ret void
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 {
199 entry:
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
203   ret void
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 {
209 entry:
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
213   ret void
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 {
219 entry:
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
223   ret void
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 {
229 entry:
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
233   ret void
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 {
239 entry:
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
243   ret void
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 {
249 entry:
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
253   ret void
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 {
259 entry:
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
263   ret void
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 {
269 entry:
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
273   ret void
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 {
279 entry:
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
283   ret void
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 {
289 entry:
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
293   ret void
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 {
299 entry:
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
303   ret void
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 {
309 entry:
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
313   ret void
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 {
319 entry:
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
323   ret void
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 {
329 entry:
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
333   ret void
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 {
339 entry:
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
343   ret void
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 {
349 entry:
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
353   ret void
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 {
359 entry:
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
363   ret void
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 {
369 entry:
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
373   ret void
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 {
379 entry:
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
383   ret void
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 {
389 entry:
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
393   ret void
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 {
399 entry:
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
403   ret void
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" }