Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Hexagon / autohvx / calling-conv.ll
blobe4a423f0a1496d53915011744e052384b2a75240
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -march=hexagon < %s | FileCheck %s
4 define void @f0(<128 x i8> %a0, ptr %a1) #0 {
5 ; CHECK-LABEL: f0:
6 ; CHECK:       // %bb.0: // %b0
7 ; CHECK-NEXT:    {
8 ; CHECK-NEXT:     jumpr r31
9 ; CHECK-NEXT:     vmem(r0+#0) = v0
10 ; CHECK-NEXT:    }
11 b0:
12   store <128 x i8> %a0, ptr %a1, align 128
13   ret void
16 define void @f1(<128 x i8> %a0, <128 x i8> %a1, ptr %a2) #0 {
17 ; CHECK-LABEL: f1:
18 ; CHECK:       // %bb.0: // %b0
19 ; CHECK-NEXT:    {
20 ; CHECK-NEXT:     vmem(r0+#0) = v0
21 ; CHECK-NEXT:    }
22 ; CHECK-NEXT:    {
23 ; CHECK-NEXT:     jumpr r31
24 ; CHECK-NEXT:     vmem(r0+#1) = v1
25 ; CHECK-NEXT:    }
26 b0:
27   store <128 x i8> %a0, ptr %a2, align 128
28   %v1 = getelementptr <128 x i8>, ptr %a2, i32 1
29   store <128 x i8> %a1, ptr %v1, align 128
30   ret void
33 define void @f2(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, ptr %a3) #0 {
34 ; CHECK-LABEL: f2:
35 ; CHECK:       // %bb.0: // %b0
36 ; CHECK-NEXT:    {
37 ; CHECK-NEXT:     vmem(r0+#0) = v0
38 ; CHECK-NEXT:    }
39 ; CHECK-NEXT:    {
40 ; CHECK-NEXT:     vmem(r0+#1) = v1
41 ; CHECK-NEXT:    }
42 ; CHECK-NEXT:    {
43 ; CHECK-NEXT:     jumpr r31
44 ; CHECK-NEXT:     vmem(r0+#2) = v2
45 ; CHECK-NEXT:    }
46 b0:
47   store <128 x i8> %a0, ptr %a3, align 128
48   %v1 = getelementptr <128 x i8>, ptr %a3, i32 1
49   store <128 x i8> %a1, ptr %v1, align 128
50   %v2 = getelementptr <128 x i8>, ptr %a3, i32 2
51   store <128 x i8> %a2, ptr %v2, align 128
52   ret void
55 define void @f3(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, ptr %a4) #0 {
56 ; CHECK-LABEL: f3:
57 ; CHECK:       // %bb.0: // %b0
58 ; CHECK-NEXT:    {
59 ; CHECK-NEXT:     vmem(r0+#0) = v0
60 ; CHECK-NEXT:    }
61 ; CHECK-NEXT:    {
62 ; CHECK-NEXT:     vmem(r0+#1) = v1
63 ; CHECK-NEXT:    }
64 ; CHECK-NEXT:    {
65 ; CHECK-NEXT:     vmem(r0+#2) = v2
66 ; CHECK-NEXT:    }
67 ; CHECK-NEXT:    {
68 ; CHECK-NEXT:     jumpr r31
69 ; CHECK-NEXT:     vmem(r0+#3) = v3
70 ; CHECK-NEXT:    }
71 b0:
72   store <128 x i8> %a0, ptr %a4, align 128
73   %v1 = getelementptr <128 x i8>, ptr %a4, i32 1
74   store <128 x i8> %a1, ptr %v1, align 128
75   %v2 = getelementptr <128 x i8>, ptr %a4, i32 2
76   store <128 x i8> %a2, ptr %v2, align 128
77   %v3 = getelementptr <128 x i8>, ptr %a4, i32 3
78   store <128 x i8> %a3, ptr %v3, align 128
79   ret void
82 define void @f4(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, ptr %a5) #0 {
83 ; CHECK-LABEL: f4:
84 ; CHECK:       // %bb.0: // %b0
85 ; CHECK-NEXT:    {
86 ; CHECK-NEXT:     vmem(r0+#0) = v0
87 ; CHECK-NEXT:    }
88 ; CHECK-NEXT:    {
89 ; CHECK-NEXT:     vmem(r0+#1) = v1
90 ; CHECK-NEXT:    }
91 ; CHECK-NEXT:    {
92 ; CHECK-NEXT:     vmem(r0+#2) = v2
93 ; CHECK-NEXT:    }
94 ; CHECK-NEXT:    {
95 ; CHECK-NEXT:     vmem(r0+#3) = v3
96 ; CHECK-NEXT:    }
97 ; CHECK-NEXT:    {
98 ; CHECK-NEXT:     jumpr r31
99 ; CHECK-NEXT:     vmem(r0+#4) = v4
100 ; CHECK-NEXT:    }
102   store <128 x i8> %a0, ptr %a5, align 128
103   %v1 = getelementptr <128 x i8>, ptr %a5, i32 1
104   store <128 x i8> %a1, ptr %v1, align 128
105   %v2 = getelementptr <128 x i8>, ptr %a5, i32 2
106   store <128 x i8> %a2, ptr %v2, align 128
107   %v3 = getelementptr <128 x i8>, ptr %a5, i32 3
108   store <128 x i8> %a3, ptr %v3, align 128
109   %v4 = getelementptr <128 x i8>, ptr %a5, i32 4
110   store <128 x i8> %a4, ptr %v4, align 128
111   ret void
114 define void @f5(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, ptr %a6) #0 {
115 ; CHECK-LABEL: f5:
116 ; CHECK:       // %bb.0: // %b0
117 ; CHECK-NEXT:    {
118 ; CHECK-NEXT:     vmem(r0+#0) = v0
119 ; CHECK-NEXT:    }
120 ; CHECK-NEXT:    {
121 ; CHECK-NEXT:     vmem(r0+#1) = v1
122 ; CHECK-NEXT:    }
123 ; CHECK-NEXT:    {
124 ; CHECK-NEXT:     vmem(r0+#2) = v2
125 ; CHECK-NEXT:    }
126 ; CHECK-NEXT:    {
127 ; CHECK-NEXT:     vmem(r0+#3) = v3
128 ; CHECK-NEXT:    }
129 ; CHECK-NEXT:    {
130 ; CHECK-NEXT:     vmem(r0+#4) = v4
131 ; CHECK-NEXT:    }
132 ; CHECK-NEXT:    {
133 ; CHECK-NEXT:     jumpr r31
134 ; CHECK-NEXT:     vmem(r0+#5) = v5
135 ; CHECK-NEXT:    }
137   store <128 x i8> %a0, ptr %a6, align 128
138   %v1 = getelementptr <128 x i8>, ptr %a6, i32 1
139   store <128 x i8> %a1, ptr %v1, align 128
140   %v2 = getelementptr <128 x i8>, ptr %a6, i32 2
141   store <128 x i8> %a2, ptr %v2, align 128
142   %v3 = getelementptr <128 x i8>, ptr %a6, i32 3
143   store <128 x i8> %a3, ptr %v3, align 128
144   %v4 = getelementptr <128 x i8>, ptr %a6, i32 4
145   store <128 x i8> %a4, ptr %v4, align 128
146   %v5 = getelementptr <128 x i8>, ptr %a6, i32 5
147   store <128 x i8> %a5, ptr %v5, align 128
148   ret void
151 define void @f6(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, ptr %a7) #0 {
152 ; CHECK-LABEL: f6:
153 ; CHECK:       // %bb.0: // %b0
154 ; CHECK-NEXT:    {
155 ; CHECK-NEXT:     vmem(r0+#0) = v0
156 ; CHECK-NEXT:    }
157 ; CHECK-NEXT:    {
158 ; CHECK-NEXT:     vmem(r0+#1) = v1
159 ; CHECK-NEXT:    }
160 ; CHECK-NEXT:    {
161 ; CHECK-NEXT:     vmem(r0+#2) = v2
162 ; CHECK-NEXT:    }
163 ; CHECK-NEXT:    {
164 ; CHECK-NEXT:     vmem(r0+#3) = v3
165 ; CHECK-NEXT:    }
166 ; CHECK-NEXT:    {
167 ; CHECK-NEXT:     vmem(r0+#4) = v4
168 ; CHECK-NEXT:    }
169 ; CHECK-NEXT:    {
170 ; CHECK-NEXT:     vmem(r0+#5) = v5
171 ; CHECK-NEXT:    }
172 ; CHECK-NEXT:    {
173 ; CHECK-NEXT:     jumpr r31
174 ; CHECK-NEXT:     vmem(r0+#6) = v6
175 ; CHECK-NEXT:    }
177   store <128 x i8> %a0, ptr %a7, align 128
178   %v1 = getelementptr <128 x i8>, ptr %a7, i32 1
179   store <128 x i8> %a1, ptr %v1, align 128
180   %v2 = getelementptr <128 x i8>, ptr %a7, i32 2
181   store <128 x i8> %a2, ptr %v2, align 128
182   %v3 = getelementptr <128 x i8>, ptr %a7, i32 3
183   store <128 x i8> %a3, ptr %v3, align 128
184   %v4 = getelementptr <128 x i8>, ptr %a7, i32 4
185   store <128 x i8> %a4, ptr %v4, align 128
186   %v5 = getelementptr <128 x i8>, ptr %a7, i32 5
187   store <128 x i8> %a5, ptr %v5, align 128
188   %v6 = getelementptr <128 x i8>, ptr %a7, i32 6
189   store <128 x i8> %a6, ptr %v6, align 128
190   ret void
193 define void @f7(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, ptr %a8) #0 {
194 ; CHECK-LABEL: f7:
195 ; CHECK:       // %bb.0: // %b0
196 ; CHECK-NEXT:    {
197 ; CHECK-NEXT:     vmem(r0+#0) = v0
198 ; CHECK-NEXT:    }
199 ; CHECK-NEXT:    {
200 ; CHECK-NEXT:     vmem(r0+#1) = v1
201 ; CHECK-NEXT:    }
202 ; CHECK-NEXT:    {
203 ; CHECK-NEXT:     vmem(r0+#2) = v2
204 ; CHECK-NEXT:    }
205 ; CHECK-NEXT:    {
206 ; CHECK-NEXT:     vmem(r0+#3) = v3
207 ; CHECK-NEXT:    }
208 ; CHECK-NEXT:    {
209 ; CHECK-NEXT:     vmem(r0+#4) = v4
210 ; CHECK-NEXT:    }
211 ; CHECK-NEXT:    {
212 ; CHECK-NEXT:     vmem(r0+#5) = v5
213 ; CHECK-NEXT:    }
214 ; CHECK-NEXT:    {
215 ; CHECK-NEXT:     vmem(r0+#6) = v6
216 ; CHECK-NEXT:    }
217 ; CHECK-NEXT:    {
218 ; CHECK-NEXT:     jumpr r31
219 ; CHECK-NEXT:     vmem(r0+#7) = v7
220 ; CHECK-NEXT:    }
222   store <128 x i8> %a0, ptr %a8, align 128
223   %v1 = getelementptr <128 x i8>, ptr %a8, i32 1
224   store <128 x i8> %a1, ptr %v1, align 128
225   %v2 = getelementptr <128 x i8>, ptr %a8, i32 2
226   store <128 x i8> %a2, ptr %v2, align 128
227   %v3 = getelementptr <128 x i8>, ptr %a8, i32 3
228   store <128 x i8> %a3, ptr %v3, align 128
229   %v4 = getelementptr <128 x i8>, ptr %a8, i32 4
230   store <128 x i8> %a4, ptr %v4, align 128
231   %v5 = getelementptr <128 x i8>, ptr %a8, i32 5
232   store <128 x i8> %a5, ptr %v5, align 128
233   %v6 = getelementptr <128 x i8>, ptr %a8, i32 6
234   store <128 x i8> %a6, ptr %v6, align 128
235   %v7 = getelementptr <128 x i8>, ptr %a8, i32 7
236   store <128 x i8> %a7, ptr %v7, align 128
237   ret void
240 define void @f8(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, ptr %a9) #0 {
241 ; CHECK-LABEL: f8:
242 ; CHECK:       // %bb.0: // %b0
243 ; CHECK-NEXT:    {
244 ; CHECK-NEXT:     r1 = add(r0,#1024)
245 ; CHECK-NEXT:     vmem(r0+#0) = v0
246 ; CHECK-NEXT:    }
247 ; CHECK-NEXT:    {
248 ; CHECK-NEXT:     vmem(r0+#1) = v1
249 ; CHECK-NEXT:    }
250 ; CHECK-NEXT:    {
251 ; CHECK-NEXT:     vmem(r0+#2) = v2
252 ; CHECK-NEXT:    }
253 ; CHECK-NEXT:    {
254 ; CHECK-NEXT:     vmem(r0+#3) = v3
255 ; CHECK-NEXT:    }
256 ; CHECK-NEXT:    {
257 ; CHECK-NEXT:     vmem(r0+#4) = v4
258 ; CHECK-NEXT:    }
259 ; CHECK-NEXT:    {
260 ; CHECK-NEXT:     vmem(r0+#5) = v5
261 ; CHECK-NEXT:    }
262 ; CHECK-NEXT:    {
263 ; CHECK-NEXT:     vmem(r0+#6) = v6
264 ; CHECK-NEXT:    }
265 ; CHECK-NEXT:    {
266 ; CHECK-NEXT:     vmem(r0+#7) = v7
267 ; CHECK-NEXT:    }
268 ; CHECK-NEXT:    {
269 ; CHECK-NEXT:     jumpr r31
270 ; CHECK-NEXT:     vmem(r1+#0) = v8
271 ; CHECK-NEXT:    }
273   store <128 x i8> %a0, ptr %a9, align 128
274   %v1 = getelementptr <128 x i8>, ptr %a9, i32 1
275   store <128 x i8> %a1, ptr %v1, align 128
276   %v2 = getelementptr <128 x i8>, ptr %a9, i32 2
277   store <128 x i8> %a2, ptr %v2, align 128
278   %v3 = getelementptr <128 x i8>, ptr %a9, i32 3
279   store <128 x i8> %a3, ptr %v3, align 128
280   %v4 = getelementptr <128 x i8>, ptr %a9, i32 4
281   store <128 x i8> %a4, ptr %v4, align 128
282   %v5 = getelementptr <128 x i8>, ptr %a9, i32 5
283   store <128 x i8> %a5, ptr %v5, align 128
284   %v6 = getelementptr <128 x i8>, ptr %a9, i32 6
285   store <128 x i8> %a6, ptr %v6, align 128
286   %v7 = getelementptr <128 x i8>, ptr %a9, i32 7
287   store <128 x i8> %a7, ptr %v7, align 128
288   %v8 = getelementptr <128 x i8>, ptr %a9, i32 8
289   store <128 x i8> %a8, ptr %v8, align 128
290   ret void
293 define void @f9(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, ptr %a10) #0 {
294 ; CHECK-LABEL: f9:
295 ; CHECK:       // %bb.0: // %b0
296 ; CHECK-NEXT:    {
297 ; CHECK-NEXT:     r1 = add(r0,#1024)
298 ; CHECK-NEXT:     r2 = add(r0,#1152)
299 ; CHECK-NEXT:     vmem(r0+#0) = v0
300 ; CHECK-NEXT:    }
301 ; CHECK-NEXT:    {
302 ; CHECK-NEXT:     vmem(r0+#1) = v1
303 ; CHECK-NEXT:    }
304 ; CHECK-NEXT:    {
305 ; CHECK-NEXT:     vmem(r0+#2) = v2
306 ; CHECK-NEXT:    }
307 ; CHECK-NEXT:    {
308 ; CHECK-NEXT:     vmem(r0+#3) = v3
309 ; CHECK-NEXT:    }
310 ; CHECK-NEXT:    {
311 ; CHECK-NEXT:     vmem(r0+#4) = v4
312 ; CHECK-NEXT:    }
313 ; CHECK-NEXT:    {
314 ; CHECK-NEXT:     vmem(r0+#5) = v5
315 ; CHECK-NEXT:    }
316 ; CHECK-NEXT:    {
317 ; CHECK-NEXT:     vmem(r0+#6) = v6
318 ; CHECK-NEXT:    }
319 ; CHECK-NEXT:    {
320 ; CHECK-NEXT:     vmem(r0+#7) = v7
321 ; CHECK-NEXT:    }
322 ; CHECK-NEXT:    {
323 ; CHECK-NEXT:     vmem(r1+#0) = v8
324 ; CHECK-NEXT:    }
325 ; CHECK-NEXT:    {
326 ; CHECK-NEXT:     jumpr r31
327 ; CHECK-NEXT:     vmem(r2+#0) = v9
328 ; CHECK-NEXT:    }
330   store <128 x i8> %a0, ptr %a10, align 128
331   %v1 = getelementptr <128 x i8>, ptr %a10, i32 1
332   store <128 x i8> %a1, ptr %v1, align 128
333   %v2 = getelementptr <128 x i8>, ptr %a10, i32 2
334   store <128 x i8> %a2, ptr %v2, align 128
335   %v3 = getelementptr <128 x i8>, ptr %a10, i32 3
336   store <128 x i8> %a3, ptr %v3, align 128
337   %v4 = getelementptr <128 x i8>, ptr %a10, i32 4
338   store <128 x i8> %a4, ptr %v4, align 128
339   %v5 = getelementptr <128 x i8>, ptr %a10, i32 5
340   store <128 x i8> %a5, ptr %v5, align 128
341   %v6 = getelementptr <128 x i8>, ptr %a10, i32 6
342   store <128 x i8> %a6, ptr %v6, align 128
343   %v7 = getelementptr <128 x i8>, ptr %a10, i32 7
344   store <128 x i8> %a7, ptr %v7, align 128
345   %v8 = getelementptr <128 x i8>, ptr %a10, i32 8
346   store <128 x i8> %a8, ptr %v8, align 128
347   %v9 = getelementptr <128 x i8>, ptr %a10, i32 9
348   store <128 x i8> %a9, ptr %v9, align 128
349   ret void
352 define void @f10(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, ptr %a11) #0 {
353 ; CHECK-LABEL: f10:
354 ; CHECK:       // %bb.0: // %b0
355 ; CHECK-NEXT:    {
356 ; CHECK-NEXT:     r1 = add(r0,#1024)
357 ; CHECK-NEXT:     r2 = add(r0,#1152)
358 ; CHECK-NEXT:     r3 = add(r0,#1280)
359 ; CHECK-NEXT:     vmem(r0+#0) = v0
360 ; CHECK-NEXT:    }
361 ; CHECK-NEXT:    {
362 ; CHECK-NEXT:     vmem(r0+#1) = v1
363 ; CHECK-NEXT:    }
364 ; CHECK-NEXT:    {
365 ; CHECK-NEXT:     vmem(r0+#2) = v2
366 ; CHECK-NEXT:    }
367 ; CHECK-NEXT:    {
368 ; CHECK-NEXT:     vmem(r0+#3) = v3
369 ; CHECK-NEXT:    }
370 ; CHECK-NEXT:    {
371 ; CHECK-NEXT:     vmem(r0+#4) = v4
372 ; CHECK-NEXT:    }
373 ; CHECK-NEXT:    {
374 ; CHECK-NEXT:     vmem(r0+#5) = v5
375 ; CHECK-NEXT:    }
376 ; CHECK-NEXT:    {
377 ; CHECK-NEXT:     vmem(r0+#6) = v6
378 ; CHECK-NEXT:    }
379 ; CHECK-NEXT:    {
380 ; CHECK-NEXT:     vmem(r0+#7) = v7
381 ; CHECK-NEXT:    }
382 ; CHECK-NEXT:    {
383 ; CHECK-NEXT:     vmem(r1+#0) = v8
384 ; CHECK-NEXT:    }
385 ; CHECK-NEXT:    {
386 ; CHECK-NEXT:     vmem(r2+#0) = v9
387 ; CHECK-NEXT:    }
388 ; CHECK-NEXT:    {
389 ; CHECK-NEXT:     jumpr r31
390 ; CHECK-NEXT:     vmem(r3+#0) = v10
391 ; CHECK-NEXT:    }
393   store <128 x i8> %a0, ptr %a11, align 128
394   %v1 = getelementptr <128 x i8>, ptr %a11, i32 1
395   store <128 x i8> %a1, ptr %v1, align 128
396   %v2 = getelementptr <128 x i8>, ptr %a11, i32 2
397   store <128 x i8> %a2, ptr %v2, align 128
398   %v3 = getelementptr <128 x i8>, ptr %a11, i32 3
399   store <128 x i8> %a3, ptr %v3, align 128
400   %v4 = getelementptr <128 x i8>, ptr %a11, i32 4
401   store <128 x i8> %a4, ptr %v4, align 128
402   %v5 = getelementptr <128 x i8>, ptr %a11, i32 5
403   store <128 x i8> %a5, ptr %v5, align 128
404   %v6 = getelementptr <128 x i8>, ptr %a11, i32 6
405   store <128 x i8> %a6, ptr %v6, align 128
406   %v7 = getelementptr <128 x i8>, ptr %a11, i32 7
407   store <128 x i8> %a7, ptr %v7, align 128
408   %v8 = getelementptr <128 x i8>, ptr %a11, i32 8
409   store <128 x i8> %a8, ptr %v8, align 128
410   %v9 = getelementptr <128 x i8>, ptr %a11, i32 9
411   store <128 x i8> %a9, ptr %v9, align 128
412   %v10 = getelementptr <128 x i8>, ptr %a11, i32 10
413   store <128 x i8> %a10, ptr %v10, align 128
414   ret void
417 define void @f11(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, ptr %a12) #0 {
418 ; CHECK-LABEL: f11:
419 ; CHECK:       // %bb.0: // %b0
420 ; CHECK-NEXT:    {
421 ; CHECK-NEXT:     r1 = add(r0,#1024)
422 ; CHECK-NEXT:     r2 = add(r0,#1152)
423 ; CHECK-NEXT:     r3 = add(r0,#1280)
424 ; CHECK-NEXT:     r4 = add(r0,#1408)
425 ; CHECK-NEXT:    }
426 ; CHECK-NEXT:    {
427 ; CHECK-NEXT:     vmem(r0+#0) = v0
428 ; CHECK-NEXT:    }
429 ; CHECK-NEXT:    {
430 ; CHECK-NEXT:     vmem(r0+#1) = v1
431 ; CHECK-NEXT:    }
432 ; CHECK-NEXT:    {
433 ; CHECK-NEXT:     vmem(r0+#2) = v2
434 ; CHECK-NEXT:    }
435 ; CHECK-NEXT:    {
436 ; CHECK-NEXT:     vmem(r0+#3) = v3
437 ; CHECK-NEXT:    }
438 ; CHECK-NEXT:    {
439 ; CHECK-NEXT:     vmem(r0+#4) = v4
440 ; CHECK-NEXT:    }
441 ; CHECK-NEXT:    {
442 ; CHECK-NEXT:     vmem(r0+#5) = v5
443 ; CHECK-NEXT:    }
444 ; CHECK-NEXT:    {
445 ; CHECK-NEXT:     vmem(r0+#6) = v6
446 ; CHECK-NEXT:    }
447 ; CHECK-NEXT:    {
448 ; CHECK-NEXT:     vmem(r0+#7) = v7
449 ; CHECK-NEXT:    }
450 ; CHECK-NEXT:    {
451 ; CHECK-NEXT:     vmem(r1+#0) = v8
452 ; CHECK-NEXT:    }
453 ; CHECK-NEXT:    {
454 ; CHECK-NEXT:     vmem(r2+#0) = v9
455 ; CHECK-NEXT:    }
456 ; CHECK-NEXT:    {
457 ; CHECK-NEXT:     vmem(r3+#0) = v10
458 ; CHECK-NEXT:    }
459 ; CHECK-NEXT:    {
460 ; CHECK-NEXT:     jumpr r31
461 ; CHECK-NEXT:     vmem(r4+#0) = v11
462 ; CHECK-NEXT:    }
464   store <128 x i8> %a0, ptr %a12, align 128
465   %v1 = getelementptr <128 x i8>, ptr %a12, i32 1
466   store <128 x i8> %a1, ptr %v1, align 128
467   %v2 = getelementptr <128 x i8>, ptr %a12, i32 2
468   store <128 x i8> %a2, ptr %v2, align 128
469   %v3 = getelementptr <128 x i8>, ptr %a12, i32 3
470   store <128 x i8> %a3, ptr %v3, align 128
471   %v4 = getelementptr <128 x i8>, ptr %a12, i32 4
472   store <128 x i8> %a4, ptr %v4, align 128
473   %v5 = getelementptr <128 x i8>, ptr %a12, i32 5
474   store <128 x i8> %a5, ptr %v5, align 128
475   %v6 = getelementptr <128 x i8>, ptr %a12, i32 6
476   store <128 x i8> %a6, ptr %v6, align 128
477   %v7 = getelementptr <128 x i8>, ptr %a12, i32 7
478   store <128 x i8> %a7, ptr %v7, align 128
479   %v8 = getelementptr <128 x i8>, ptr %a12, i32 8
480   store <128 x i8> %a8, ptr %v8, align 128
481   %v9 = getelementptr <128 x i8>, ptr %a12, i32 9
482   store <128 x i8> %a9, ptr %v9, align 128
483   %v10 = getelementptr <128 x i8>, ptr %a12, i32 10
484   store <128 x i8> %a10, ptr %v10, align 128
485   %v11 = getelementptr <128 x i8>, ptr %a12, i32 11
486   store <128 x i8> %a11, ptr %v11, align 128
487   ret void
490 define void @f12(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, ptr %a13) #0 {
491 ; CHECK-LABEL: f12:
492 ; CHECK:       // %bb.0: // %b0
493 ; CHECK-NEXT:    {
494 ; CHECK-NEXT:     r1 = add(r0,#1024)
495 ; CHECK-NEXT:     r2 = add(r0,#1152)
496 ; CHECK-NEXT:     r3 = add(r0,#1280)
497 ; CHECK-NEXT:     r4 = add(r0,#1408)
498 ; CHECK-NEXT:    }
499 ; CHECK-NEXT:    {
500 ; CHECK-NEXT:     r5 = add(r0,#1536)
501 ; CHECK-NEXT:     vmem(r0+#0) = v0
502 ; CHECK-NEXT:    }
503 ; CHECK-NEXT:    {
504 ; CHECK-NEXT:     vmem(r0+#1) = v1
505 ; CHECK-NEXT:    }
506 ; CHECK-NEXT:    {
507 ; CHECK-NEXT:     vmem(r0+#2) = v2
508 ; CHECK-NEXT:    }
509 ; CHECK-NEXT:    {
510 ; CHECK-NEXT:     vmem(r0+#3) = v3
511 ; CHECK-NEXT:    }
512 ; CHECK-NEXT:    {
513 ; CHECK-NEXT:     vmem(r0+#4) = v4
514 ; CHECK-NEXT:    }
515 ; CHECK-NEXT:    {
516 ; CHECK-NEXT:     vmem(r0+#5) = v5
517 ; CHECK-NEXT:    }
518 ; CHECK-NEXT:    {
519 ; CHECK-NEXT:     vmem(r0+#6) = v6
520 ; CHECK-NEXT:    }
521 ; CHECK-NEXT:    {
522 ; CHECK-NEXT:     vmem(r0+#7) = v7
523 ; CHECK-NEXT:    }
524 ; CHECK-NEXT:    {
525 ; CHECK-NEXT:     vmem(r1+#0) = v8
526 ; CHECK-NEXT:    }
527 ; CHECK-NEXT:    {
528 ; CHECK-NEXT:     vmem(r2+#0) = v9
529 ; CHECK-NEXT:    }
530 ; CHECK-NEXT:    {
531 ; CHECK-NEXT:     vmem(r3+#0) = v10
532 ; CHECK-NEXT:    }
533 ; CHECK-NEXT:    {
534 ; CHECK-NEXT:     vmem(r4+#0) = v11
535 ; CHECK-NEXT:    }
536 ; CHECK-NEXT:    {
537 ; CHECK-NEXT:     jumpr r31
538 ; CHECK-NEXT:     vmem(r5+#0) = v12
539 ; CHECK-NEXT:    }
541   store <128 x i8> %a0, ptr %a13, align 128
542   %v1 = getelementptr <128 x i8>, ptr %a13, i32 1
543   store <128 x i8> %a1, ptr %v1, align 128
544   %v2 = getelementptr <128 x i8>, ptr %a13, i32 2
545   store <128 x i8> %a2, ptr %v2, align 128
546   %v3 = getelementptr <128 x i8>, ptr %a13, i32 3
547   store <128 x i8> %a3, ptr %v3, align 128
548   %v4 = getelementptr <128 x i8>, ptr %a13, i32 4
549   store <128 x i8> %a4, ptr %v4, align 128
550   %v5 = getelementptr <128 x i8>, ptr %a13, i32 5
551   store <128 x i8> %a5, ptr %v5, align 128
552   %v6 = getelementptr <128 x i8>, ptr %a13, i32 6
553   store <128 x i8> %a6, ptr %v6, align 128
554   %v7 = getelementptr <128 x i8>, ptr %a13, i32 7
555   store <128 x i8> %a7, ptr %v7, align 128
556   %v8 = getelementptr <128 x i8>, ptr %a13, i32 8
557   store <128 x i8> %a8, ptr %v8, align 128
558   %v9 = getelementptr <128 x i8>, ptr %a13, i32 9
559   store <128 x i8> %a9, ptr %v9, align 128
560   %v10 = getelementptr <128 x i8>, ptr %a13, i32 10
561   store <128 x i8> %a10, ptr %v10, align 128
562   %v11 = getelementptr <128 x i8>, ptr %a13, i32 11
563   store <128 x i8> %a11, ptr %v11, align 128
564   %v12 = getelementptr <128 x i8>, ptr %a13, i32 12
565   store <128 x i8> %a12, ptr %v12, align 128
566   ret void
569 define void @f13(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, ptr %a14) #0 {
570 ; CHECK-LABEL: f13:
571 ; CHECK:       // %bb.0: // %b0
572 ; CHECK-NEXT:    {
573 ; CHECK-NEXT:     r2 = add(r0,#1152)
574 ; CHECK-NEXT:     r3 = add(r0,#1280)
575 ; CHECK-NEXT:     r1 = add(r0,#1024)
576 ; CHECK-NEXT:     r4 = add(r0,#1408)
577 ; CHECK-NEXT:    }
578 ; CHECK-NEXT:    {
579 ; CHECK-NEXT:     r2 = add(r0,#1664)
580 ; CHECK-NEXT:     vmem(r2+#0) = v9
581 ; CHECK-NEXT:    }
582 ; CHECK-NEXT:    {
583 ; CHECK-NEXT:     r3 = add(r0,#1536)
584 ; CHECK-NEXT:     vmem(r3+#0) = v10
585 ; CHECK-NEXT:    }
586 ; CHECK-NEXT:    {
587 ; CHECK-NEXT:     vmem(r0+#0) = v0
588 ; CHECK-NEXT:    }
589 ; CHECK-NEXT:    {
590 ; CHECK-NEXT:     vmem(r0+#1) = v1
591 ; CHECK-NEXT:    }
592 ; CHECK-NEXT:    {
593 ; CHECK-NEXT:     vmem(r1+#0) = v8
594 ; CHECK-NEXT:    }
595 ; CHECK-NEXT:    {
596 ; CHECK-NEXT:     vmem(r0+#2) = v2
597 ; CHECK-NEXT:    }
598 ; CHECK-NEXT:    {
599 ; CHECK-NEXT:     vmem(r0+#3) = v3
600 ; CHECK-NEXT:    }
601 ; CHECK-NEXT:    {
602 ; CHECK-NEXT:     vmem(r0+#4) = v4
603 ; CHECK-NEXT:    }
604 ; CHECK-NEXT:    {
605 ; CHECK-NEXT:     vmem(r0+#5) = v5
606 ; CHECK-NEXT:    }
607 ; CHECK-NEXT:    {
608 ; CHECK-NEXT:     vmem(r0+#6) = v6
609 ; CHECK-NEXT:    }
610 ; CHECK-NEXT:    {
611 ; CHECK-NEXT:     vmem(r4+#0) = v11
612 ; CHECK-NEXT:    }
613 ; CHECK-NEXT:    {
614 ; CHECK-NEXT:     vmem(r0+#7) = v7
615 ; CHECK-NEXT:    }
616 ; CHECK-NEXT:    {
617 ; CHECK-NEXT:     vmem(r3+#0) = v12
618 ; CHECK-NEXT:    }
619 ; CHECK-NEXT:    {
620 ; CHECK-NEXT:     jumpr r31
621 ; CHECK-NEXT:     vmem(r2+#0) = v13
622 ; CHECK-NEXT:    }
624   store <128 x i8> %a0, ptr %a14, align 128
625   %v1 = getelementptr <128 x i8>, ptr %a14, i32 1
626   store <128 x i8> %a1, ptr %v1, align 128
627   %v2 = getelementptr <128 x i8>, ptr %a14, i32 2
628   store <128 x i8> %a2, ptr %v2, align 128
629   %v3 = getelementptr <128 x i8>, ptr %a14, i32 3
630   store <128 x i8> %a3, ptr %v3, align 128
631   %v4 = getelementptr <128 x i8>, ptr %a14, i32 4
632   store <128 x i8> %a4, ptr %v4, align 128
633   %v5 = getelementptr <128 x i8>, ptr %a14, i32 5
634   store <128 x i8> %a5, ptr %v5, align 128
635   %v6 = getelementptr <128 x i8>, ptr %a14, i32 6
636   store <128 x i8> %a6, ptr %v6, align 128
637   %v7 = getelementptr <128 x i8>, ptr %a14, i32 7
638   store <128 x i8> %a7, ptr %v7, align 128
639   %v8 = getelementptr <128 x i8>, ptr %a14, i32 8
640   store <128 x i8> %a8, ptr %v8, align 128
641   %v9 = getelementptr <128 x i8>, ptr %a14, i32 9
642   store <128 x i8> %a9, ptr %v9, align 128
643   %v10 = getelementptr <128 x i8>, ptr %a14, i32 10
644   store <128 x i8> %a10, ptr %v10, align 128
645   %v11 = getelementptr <128 x i8>, ptr %a14, i32 11
646   store <128 x i8> %a11, ptr %v11, align 128
647   %v12 = getelementptr <128 x i8>, ptr %a14, i32 12
648   store <128 x i8> %a12, ptr %v12, align 128
649   %v13 = getelementptr <128 x i8>, ptr %a14, i32 13
650   store <128 x i8> %a13, ptr %v13, align 128
651   ret void
654 define void @f14(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, ptr %a15) #0 {
655 ; CHECK-LABEL: f14:
656 ; CHECK:       // %bb.0: // %b0
657 ; CHECK-NEXT:    {
658 ; CHECK-NEXT:     r2 = add(r0,#1152)
659 ; CHECK-NEXT:     r3 = add(r0,#1280)
660 ; CHECK-NEXT:     r4 = add(r0,#1408)
661 ; CHECK-NEXT:     r1 = add(r0,#1024)
662 ; CHECK-NEXT:    }
663 ; CHECK-NEXT:    {
664 ; CHECK-NEXT:     r2 = add(r0,#1792)
665 ; CHECK-NEXT:     vmem(r2+#0) = v9
666 ; CHECK-NEXT:    }
667 ; CHECK-NEXT:    {
668 ; CHECK-NEXT:     r3 = add(r0,#1664)
669 ; CHECK-NEXT:     vmem(r3+#0) = v10
670 ; CHECK-NEXT:    }
671 ; CHECK-NEXT:    {
672 ; CHECK-NEXT:     r4 = add(r0,#1536)
673 ; CHECK-NEXT:     vmem(r4+#0) = v11
674 ; CHECK-NEXT:    }
675 ; CHECK-NEXT:    {
676 ; CHECK-NEXT:     vmem(r0+#0) = v0
677 ; CHECK-NEXT:    }
678 ; CHECK-NEXT:    {
679 ; CHECK-NEXT:     vmem(r1+#0) = v8
680 ; CHECK-NEXT:    }
681 ; CHECK-NEXT:    {
682 ; CHECK-NEXT:     vmem(r0+#1) = v1
683 ; CHECK-NEXT:    }
684 ; CHECK-NEXT:    {
685 ; CHECK-NEXT:     vmem(r0+#2) = v2
686 ; CHECK-NEXT:    }
687 ; CHECK-NEXT:    {
688 ; CHECK-NEXT:     vmem(r0+#3) = v3
689 ; CHECK-NEXT:    }
690 ; CHECK-NEXT:    {
691 ; CHECK-NEXT:     vmem(r0+#4) = v4
692 ; CHECK-NEXT:    }
693 ; CHECK-NEXT:    {
694 ; CHECK-NEXT:     vmem(r0+#5) = v5
695 ; CHECK-NEXT:    }
696 ; CHECK-NEXT:    {
697 ; CHECK-NEXT:     vmem(r0+#6) = v6
698 ; CHECK-NEXT:    }
699 ; CHECK-NEXT:    {
700 ; CHECK-NEXT:     vmem(r4+#0) = v12
701 ; CHECK-NEXT:    }
702 ; CHECK-NEXT:    {
703 ; CHECK-NEXT:     vmem(r0+#7) = v7
704 ; CHECK-NEXT:    }
705 ; CHECK-NEXT:    {
706 ; CHECK-NEXT:     vmem(r3+#0) = v13
707 ; CHECK-NEXT:    }
708 ; CHECK-NEXT:    {
709 ; CHECK-NEXT:     jumpr r31
710 ; CHECK-NEXT:     vmem(r2+#0) = v14
711 ; CHECK-NEXT:    }
713   store <128 x i8> %a0, ptr %a15, align 128
714   %v1 = getelementptr <128 x i8>, ptr %a15, i32 1
715   store <128 x i8> %a1, ptr %v1, align 128
716   %v2 = getelementptr <128 x i8>, ptr %a15, i32 2
717   store <128 x i8> %a2, ptr %v2, align 128
718   %v3 = getelementptr <128 x i8>, ptr %a15, i32 3
719   store <128 x i8> %a3, ptr %v3, align 128
720   %v4 = getelementptr <128 x i8>, ptr %a15, i32 4
721   store <128 x i8> %a4, ptr %v4, align 128
722   %v5 = getelementptr <128 x i8>, ptr %a15, i32 5
723   store <128 x i8> %a5, ptr %v5, align 128
724   %v6 = getelementptr <128 x i8>, ptr %a15, i32 6
725   store <128 x i8> %a6, ptr %v6, align 128
726   %v7 = getelementptr <128 x i8>, ptr %a15, i32 7
727   store <128 x i8> %a7, ptr %v7, align 128
728   %v8 = getelementptr <128 x i8>, ptr %a15, i32 8
729   store <128 x i8> %a8, ptr %v8, align 128
730   %v9 = getelementptr <128 x i8>, ptr %a15, i32 9
731   store <128 x i8> %a9, ptr %v9, align 128
732   %v10 = getelementptr <128 x i8>, ptr %a15, i32 10
733   store <128 x i8> %a10, ptr %v10, align 128
734   %v11 = getelementptr <128 x i8>, ptr %a15, i32 11
735   store <128 x i8> %a11, ptr %v11, align 128
736   %v12 = getelementptr <128 x i8>, ptr %a15, i32 12
737   store <128 x i8> %a12, ptr %v12, align 128
738   %v13 = getelementptr <128 x i8>, ptr %a15, i32 13
739   store <128 x i8> %a13, ptr %v13, align 128
740   %v14 = getelementptr <128 x i8>, ptr %a15, i32 14
741   store <128 x i8> %a14, ptr %v14, align 128
742   ret void
745 define void @f15(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, <128 x i8> %a15, ptr %a16) #0 {
746 ; CHECK-LABEL: f15:
747 ; CHECK:       // %bb.0: // %b0
748 ; CHECK-NEXT:    {
749 ; CHECK-NEXT:     r2 = add(r0,#1152)
750 ; CHECK-NEXT:     r3 = add(r0,#1280)
751 ; CHECK-NEXT:     r1 = add(r0,#1024)
752 ; CHECK-NEXT:     r6 = add(r0,#1408)
753 ; CHECK-NEXT:    }
754 ; CHECK-NEXT:    {
755 ; CHECK-NEXT:     r5 = add(r0,#1536)
756 ; CHECK-NEXT:     r4 = add(r0,#1664)
757 ; CHECK-NEXT:     r2 = add(r0,#1920)
758 ; CHECK-NEXT:     vmem(r2+#0) = v9
759 ; CHECK-NEXT:    }
760 ; CHECK-NEXT:    {
761 ; CHECK-NEXT:     r3 = add(r0,#1792)
762 ; CHECK-NEXT:     vmem(r3+#0) = v10
763 ; CHECK-NEXT:    }
764 ; CHECK-NEXT:    {
765 ; CHECK-NEXT:     vmem(r0+#0) = v0
766 ; CHECK-NEXT:    }
767 ; CHECK-NEXT:    {
768 ; CHECK-NEXT:     vmem(r0+#1) = v1
769 ; CHECK-NEXT:    }
770 ; CHECK-NEXT:    {
771 ; CHECK-NEXT:     vmem(r1+#0) = v8
772 ; CHECK-NEXT:    }
773 ; CHECK-NEXT:    {
774 ; CHECK-NEXT:     vmem(r0+#2) = v2
775 ; CHECK-NEXT:    }
776 ; CHECK-NEXT:    {
777 ; CHECK-NEXT:     vmem(r0+#3) = v3
778 ; CHECK-NEXT:    }
779 ; CHECK-NEXT:    {
780 ; CHECK-NEXT:     vmem(r0+#4) = v4
781 ; CHECK-NEXT:    }
782 ; CHECK-NEXT:    {
783 ; CHECK-NEXT:     vmem(r6+#0) = v11
784 ; CHECK-NEXT:    }
785 ; CHECK-NEXT:    {
786 ; CHECK-NEXT:     vmem(r0+#5) = v5
787 ; CHECK-NEXT:    }
788 ; CHECK-NEXT:    {
789 ; CHECK-NEXT:     vmem(r5+#0) = v12
790 ; CHECK-NEXT:    }
791 ; CHECK-NEXT:    {
792 ; CHECK-NEXT:     vmem(r0+#6) = v6
793 ; CHECK-NEXT:    }
794 ; CHECK-NEXT:    {
795 ; CHECK-NEXT:     vmem(r4+#0) = v13
796 ; CHECK-NEXT:    }
797 ; CHECK-NEXT:    {
798 ; CHECK-NEXT:     vmem(r0+#7) = v7
799 ; CHECK-NEXT:    }
800 ; CHECK-NEXT:    {
801 ; CHECK-NEXT:     vmem(r3+#0) = v14
802 ; CHECK-NEXT:    }
803 ; CHECK-NEXT:    {
804 ; CHECK-NEXT:     jumpr r31
805 ; CHECK-NEXT:     vmem(r2+#0) = v15
806 ; CHECK-NEXT:    }
808   store <128 x i8> %a0, ptr %a16, align 128
809   %v1 = getelementptr <128 x i8>, ptr %a16, i32 1
810   store <128 x i8> %a1, ptr %v1, align 128
811   %v2 = getelementptr <128 x i8>, ptr %a16, i32 2
812   store <128 x i8> %a2, ptr %v2, align 128
813   %v3 = getelementptr <128 x i8>, ptr %a16, i32 3
814   store <128 x i8> %a3, ptr %v3, align 128
815   %v4 = getelementptr <128 x i8>, ptr %a16, i32 4
816   store <128 x i8> %a4, ptr %v4, align 128
817   %v5 = getelementptr <128 x i8>, ptr %a16, i32 5
818   store <128 x i8> %a5, ptr %v5, align 128
819   %v6 = getelementptr <128 x i8>, ptr %a16, i32 6
820   store <128 x i8> %a6, ptr %v6, align 128
821   %v7 = getelementptr <128 x i8>, ptr %a16, i32 7
822   store <128 x i8> %a7, ptr %v7, align 128
823   %v8 = getelementptr <128 x i8>, ptr %a16, i32 8
824   store <128 x i8> %a8, ptr %v8, align 128
825   %v9 = getelementptr <128 x i8>, ptr %a16, i32 9
826   store <128 x i8> %a9, ptr %v9, align 128
827   %v10 = getelementptr <128 x i8>, ptr %a16, i32 10
828   store <128 x i8> %a10, ptr %v10, align 128
829   %v11 = getelementptr <128 x i8>, ptr %a16, i32 11
830   store <128 x i8> %a11, ptr %v11, align 128
831   %v12 = getelementptr <128 x i8>, ptr %a16, i32 12
832   store <128 x i8> %a12, ptr %v12, align 128
833   %v13 = getelementptr <128 x i8>, ptr %a16, i32 13
834   store <128 x i8> %a13, ptr %v13, align 128
835   %v14 = getelementptr <128 x i8>, ptr %a16, i32 14
836   store <128 x i8> %a14, ptr %v14, align 128
837   %v15 = getelementptr <128 x i8>, ptr %a16, i32 15
838   store <128 x i8> %a15, ptr %v15, align 128
839   ret void
842 define void @f16(<128 x i8> %a0, <128 x i8> %a1, <128 x i8> %a2, <128 x i8> %a3, <128 x i8> %a4, <128 x i8> %a5, <128 x i8> %a6, <128 x i8> %a7, <128 x i8> %a8, <128 x i8> %a9, <128 x i8> %a10, <128 x i8> %a11, <128 x i8> %a12, <128 x i8> %a13, <128 x i8> %a14, <128 x i8> %a15, <128 x i8> %a16, ptr %a17) #0 {
843 ; CHECK-LABEL: f16:
844 ; CHECK:       // %bb.0: // %b0
845 ; CHECK-NEXT:    {
846 ; CHECK-NEXT:     r2 = add(r0,#1152)
847 ; CHECK-NEXT:     r3 = add(r0,#1280)
848 ; CHECK-NEXT:     r4 = add(r0,#1408)
849 ; CHECK-NEXT:     allocframe(r29,#0):raw
850 ; CHECK-NEXT:    }
851 ; CHECK-NEXT:    {
852 ; CHECK-NEXT:     r1 = add(r30,#8)
853 ; CHECK-NEXT:     r7 = add(r0,#1024)
854 ; CHECK-NEXT:     r6 = add(r0,#1536)
855 ; CHECK-NEXT:     vmem(r2+#0) = v9
856 ; CHECK-NEXT:    }
857 ; CHECK-NEXT:    {
858 ; CHECK-NEXT:     r5 = add(r0,#1664)
859 ; CHECK-NEXT:     r3 = add(r0,#1920)
860 ; CHECK-NEXT:     r2 = add(r0,#2048)
861 ; CHECK-NEXT:     vmem(r3+#0) = v10
862 ; CHECK-NEXT:    }
863 ; CHECK-NEXT:    {
864 ; CHECK-NEXT:     r4 = add(r0,#1792)
865 ; CHECK-NEXT:     r29 = and(r29,#-128)
866 ; CHECK-NEXT:     v16 = vmem(r1+#0)
867 ; CHECK-NEXT:     vmem(r4+#0) = v11
868 ; CHECK-NEXT:    }
869 ; CHECK-NEXT:    {
870 ; CHECK-NEXT:     vmem(r0+#0) = v0
871 ; CHECK-NEXT:    }
872 ; CHECK-NEXT:    {
873 ; CHECK-NEXT:     vmem(r0+#1) = v1
874 ; CHECK-NEXT:    }
875 ; CHECK-NEXT:    {
876 ; CHECK-NEXT:     vmem(r7+#0) = v8
877 ; CHECK-NEXT:    }
878 ; CHECK-NEXT:    {
879 ; CHECK-NEXT:     vmem(r0+#2) = v2
880 ; CHECK-NEXT:    }
881 ; CHECK-NEXT:    {
882 ; CHECK-NEXT:     vmem(r0+#3) = v3
883 ; CHECK-NEXT:    }
884 ; CHECK-NEXT:    {
885 ; CHECK-NEXT:     vmem(r0+#4) = v4
886 ; CHECK-NEXT:    }
887 ; CHECK-NEXT:    {
888 ; CHECK-NEXT:     vmem(r6+#0) = v12
889 ; CHECK-NEXT:    }
890 ; CHECK-NEXT:    {
891 ; CHECK-NEXT:     vmem(r0+#5) = v5
892 ; CHECK-NEXT:    }
893 ; CHECK-NEXT:    {
894 ; CHECK-NEXT:     vmem(r5+#0) = v13
895 ; CHECK-NEXT:    }
896 ; CHECK-NEXT:    {
897 ; CHECK-NEXT:     vmem(r0+#6) = v6
898 ; CHECK-NEXT:    }
899 ; CHECK-NEXT:    {
900 ; CHECK-NEXT:     vmem(r4+#0) = v14
901 ; CHECK-NEXT:    }
902 ; CHECK-NEXT:    {
903 ; CHECK-NEXT:     vmem(r0+#7) = v7
904 ; CHECK-NEXT:    }
905 ; CHECK-NEXT:    {
906 ; CHECK-NEXT:     vmem(r3+#0) = v15
907 ; CHECK-NEXT:    }
908 ; CHECK-NEXT:    {
909 ; CHECK-NEXT:     vmem(r2+#0) = v16
910 ; CHECK-NEXT:    }
911 ; CHECK-NEXT:    {
912 ; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
913 ; CHECK-NEXT:    }
915   store <128 x i8> %a0, ptr %a17, align 128
916   %v1 = getelementptr <128 x i8>, ptr %a17, i32 1
917   store <128 x i8> %a1, ptr %v1, align 128
918   %v2 = getelementptr <128 x i8>, ptr %a17, i32 2
919   store <128 x i8> %a2, ptr %v2, align 128
920   %v3 = getelementptr <128 x i8>, ptr %a17, i32 3
921   store <128 x i8> %a3, ptr %v3, align 128
922   %v4 = getelementptr <128 x i8>, ptr %a17, i32 4
923   store <128 x i8> %a4, ptr %v4, align 128
924   %v5 = getelementptr <128 x i8>, ptr %a17, i32 5
925   store <128 x i8> %a5, ptr %v5, align 128
926   %v6 = getelementptr <128 x i8>, ptr %a17, i32 6
927   store <128 x i8> %a6, ptr %v6, align 128
928   %v7 = getelementptr <128 x i8>, ptr %a17, i32 7
929   store <128 x i8> %a7, ptr %v7, align 128
930   %v8 = getelementptr <128 x i8>, ptr %a17, i32 8
931   store <128 x i8> %a8, ptr %v8, align 128
932   %v9 = getelementptr <128 x i8>, ptr %a17, i32 9
933   store <128 x i8> %a9, ptr %v9, align 128
934   %v10 = getelementptr <128 x i8>, ptr %a17, i32 10
935   store <128 x i8> %a10, ptr %v10, align 128
936   %v11 = getelementptr <128 x i8>, ptr %a17, i32 11
937   store <128 x i8> %a11, ptr %v11, align 128
938   %v12 = getelementptr <128 x i8>, ptr %a17, i32 12
939   store <128 x i8> %a12, ptr %v12, align 128
940   %v13 = getelementptr <128 x i8>, ptr %a17, i32 13
941   store <128 x i8> %a13, ptr %v13, align 128
942   %v14 = getelementptr <128 x i8>, ptr %a17, i32 14
943   store <128 x i8> %a14, ptr %v14, align 128
944   %v15 = getelementptr <128 x i8>, ptr %a17, i32 15
945   store <128 x i8> %a15, ptr %v15, align 128
946   %v16 = getelementptr <128 x i8>, ptr %a17, i32 16
947   store <128 x i8> %a16, ptr %v16, align 128
948   ret void
951 define void @f17(<64 x i16> %a0, <64 x i16> %a1, <64 x i16> %a2, <64 x i16> %a3, <64 x i16> %a4, <64 x i16> %a5, <64 x i16> %a6, <64 x i16> %a7, <64 x i16> %a8, <64 x i16> %a9, <64 x i16> %a10, <64 x i16> %a11, <64 x i16> %a12, <64 x i16> %a13, <64 x i16> %a14, <64 x i16> %a15, <64 x i16> %a16, ptr %a17) #0 {
952 ; CHECK-LABEL: f17:
953 ; CHECK:       // %bb.0: // %b0
954 ; CHECK-NEXT:    {
955 ; CHECK-NEXT:     r2 = add(r0,#1152)
956 ; CHECK-NEXT:     r3 = add(r0,#1280)
957 ; CHECK-NEXT:     r4 = add(r0,#1408)
958 ; CHECK-NEXT:     allocframe(r29,#0):raw
959 ; CHECK-NEXT:    }
960 ; CHECK-NEXT:    {
961 ; CHECK-NEXT:     r1 = add(r30,#8)
962 ; CHECK-NEXT:     r7 = add(r0,#1024)
963 ; CHECK-NEXT:     r6 = add(r0,#1536)
964 ; CHECK-NEXT:     vmem(r2+#0) = v9
965 ; CHECK-NEXT:    }
966 ; CHECK-NEXT:    {
967 ; CHECK-NEXT:     r5 = add(r0,#1664)
968 ; CHECK-NEXT:     r3 = add(r0,#1920)
969 ; CHECK-NEXT:     r2 = add(r0,#2048)
970 ; CHECK-NEXT:     vmem(r3+#0) = v10
971 ; CHECK-NEXT:    }
972 ; CHECK-NEXT:    {
973 ; CHECK-NEXT:     r4 = add(r0,#1792)
974 ; CHECK-NEXT:     r29 = and(r29,#-128)
975 ; CHECK-NEXT:     v16 = vmem(r1+#0)
976 ; CHECK-NEXT:     vmem(r4+#0) = v11
977 ; CHECK-NEXT:    }
978 ; CHECK-NEXT:    {
979 ; CHECK-NEXT:     vmem(r0+#0) = v0
980 ; CHECK-NEXT:    }
981 ; CHECK-NEXT:    {
982 ; CHECK-NEXT:     vmem(r0+#1) = v1
983 ; CHECK-NEXT:    }
984 ; CHECK-NEXT:    {
985 ; CHECK-NEXT:     vmem(r7+#0) = v8
986 ; CHECK-NEXT:    }
987 ; CHECK-NEXT:    {
988 ; CHECK-NEXT:     vmem(r0+#2) = v2
989 ; CHECK-NEXT:    }
990 ; CHECK-NEXT:    {
991 ; CHECK-NEXT:     vmem(r0+#3) = v3
992 ; CHECK-NEXT:    }
993 ; CHECK-NEXT:    {
994 ; CHECK-NEXT:     vmem(r0+#4) = v4
995 ; CHECK-NEXT:    }
996 ; CHECK-NEXT:    {
997 ; CHECK-NEXT:     vmem(r6+#0) = v12
998 ; CHECK-NEXT:    }
999 ; CHECK-NEXT:    {
1000 ; CHECK-NEXT:     vmem(r0+#5) = v5
1001 ; CHECK-NEXT:    }
1002 ; CHECK-NEXT:    {
1003 ; CHECK-NEXT:     vmem(r5+#0) = v13
1004 ; CHECK-NEXT:    }
1005 ; CHECK-NEXT:    {
1006 ; CHECK-NEXT:     vmem(r0+#6) = v6
1007 ; CHECK-NEXT:    }
1008 ; CHECK-NEXT:    {
1009 ; CHECK-NEXT:     vmem(r4+#0) = v14
1010 ; CHECK-NEXT:    }
1011 ; CHECK-NEXT:    {
1012 ; CHECK-NEXT:     vmem(r0+#7) = v7
1013 ; CHECK-NEXT:    }
1014 ; CHECK-NEXT:    {
1015 ; CHECK-NEXT:     vmem(r3+#0) = v15
1016 ; CHECK-NEXT:    }
1017 ; CHECK-NEXT:    {
1018 ; CHECK-NEXT:     vmem(r2+#0) = v16
1019 ; CHECK-NEXT:    }
1020 ; CHECK-NEXT:    {
1021 ; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
1022 ; CHECK-NEXT:    }
1024   store <64 x i16> %a0, ptr %a17, align 128
1025   %v1 = getelementptr <64 x i16>, ptr %a17, i32 1
1026   store <64 x i16> %a1, ptr %v1, align 128
1027   %v2 = getelementptr <64 x i16>, ptr %a17, i32 2
1028   store <64 x i16> %a2, ptr %v2, align 128
1029   %v3 = getelementptr <64 x i16>, ptr %a17, i32 3
1030   store <64 x i16> %a3, ptr %v3, align 128
1031   %v4 = getelementptr <64 x i16>, ptr %a17, i32 4
1032   store <64 x i16> %a4, ptr %v4, align 128
1033   %v5 = getelementptr <64 x i16>, ptr %a17, i32 5
1034   store <64 x i16> %a5, ptr %v5, align 128
1035   %v6 = getelementptr <64 x i16>, ptr %a17, i32 6
1036   store <64 x i16> %a6, ptr %v6, align 128
1037   %v7 = getelementptr <64 x i16>, ptr %a17, i32 7
1038   store <64 x i16> %a7, ptr %v7, align 128
1039   %v8 = getelementptr <64 x i16>, ptr %a17, i32 8
1040   store <64 x i16> %a8, ptr %v8, align 128
1041   %v9 = getelementptr <64 x i16>, ptr %a17, i32 9
1042   store <64 x i16> %a9, ptr %v9, align 128
1043   %v10 = getelementptr <64 x i16>, ptr %a17, i32 10
1044   store <64 x i16> %a10, ptr %v10, align 128
1045   %v11 = getelementptr <64 x i16>, ptr %a17, i32 11
1046   store <64 x i16> %a11, ptr %v11, align 128
1047   %v12 = getelementptr <64 x i16>, ptr %a17, i32 12
1048   store <64 x i16> %a12, ptr %v12, align 128
1049   %v13 = getelementptr <64 x i16>, ptr %a17, i32 13
1050   store <64 x i16> %a13, ptr %v13, align 128
1051   %v14 = getelementptr <64 x i16>, ptr %a17, i32 14
1052   store <64 x i16> %a14, ptr %v14, align 128
1053   %v15 = getelementptr <64 x i16>, ptr %a17, i32 15
1054   store <64 x i16> %a15, ptr %v15, align 128
1055   %v16 = getelementptr <64 x i16>, ptr %a17, i32 16
1056   store <64 x i16> %a16, ptr %v16, align 128
1057   ret void
1060 define void @f18(<32 x i32> %a0, <32 x i32> %a1, <32 x i32> %a2, <32 x i32> %a3, <32 x i32> %a4, <32 x i32> %a5, <32 x i32> %a6, <32 x i32> %a7, <32 x i32> %a8, <32 x i32> %a9, <32 x i32> %a10, <32 x i32> %a11, <32 x i32> %a12, <32 x i32> %a13, <32 x i32> %a14, <32 x i32> %a15, <32 x i32> %a16, ptr %a17) #0 {
1061 ; CHECK-LABEL: f18:
1062 ; CHECK:       // %bb.0: // %b0
1063 ; CHECK-NEXT:    {
1064 ; CHECK-NEXT:     r2 = add(r0,#1152)
1065 ; CHECK-NEXT:     r3 = add(r0,#1280)
1066 ; CHECK-NEXT:     r4 = add(r0,#1408)
1067 ; CHECK-NEXT:     allocframe(r29,#0):raw
1068 ; CHECK-NEXT:    }
1069 ; CHECK-NEXT:    {
1070 ; CHECK-NEXT:     r1 = add(r30,#8)
1071 ; CHECK-NEXT:     r7 = add(r0,#1024)
1072 ; CHECK-NEXT:     r6 = add(r0,#1536)
1073 ; CHECK-NEXT:     vmem(r2+#0) = v9
1074 ; CHECK-NEXT:    }
1075 ; CHECK-NEXT:    {
1076 ; CHECK-NEXT:     r5 = add(r0,#1664)
1077 ; CHECK-NEXT:     r3 = add(r0,#1920)
1078 ; CHECK-NEXT:     r2 = add(r0,#2048)
1079 ; CHECK-NEXT:     vmem(r3+#0) = v10
1080 ; CHECK-NEXT:    }
1081 ; CHECK-NEXT:    {
1082 ; CHECK-NEXT:     r4 = add(r0,#1792)
1083 ; CHECK-NEXT:     r29 = and(r29,#-128)
1084 ; CHECK-NEXT:     v16 = vmem(r1+#0)
1085 ; CHECK-NEXT:     vmem(r4+#0) = v11
1086 ; CHECK-NEXT:    }
1087 ; CHECK-NEXT:    {
1088 ; CHECK-NEXT:     vmem(r0+#0) = v0
1089 ; CHECK-NEXT:    }
1090 ; CHECK-NEXT:    {
1091 ; CHECK-NEXT:     vmem(r0+#1) = v1
1092 ; CHECK-NEXT:    }
1093 ; CHECK-NEXT:    {
1094 ; CHECK-NEXT:     vmem(r7+#0) = v8
1095 ; CHECK-NEXT:    }
1096 ; CHECK-NEXT:    {
1097 ; CHECK-NEXT:     vmem(r0+#2) = v2
1098 ; CHECK-NEXT:    }
1099 ; CHECK-NEXT:    {
1100 ; CHECK-NEXT:     vmem(r0+#3) = v3
1101 ; CHECK-NEXT:    }
1102 ; CHECK-NEXT:    {
1103 ; CHECK-NEXT:     vmem(r0+#4) = v4
1104 ; CHECK-NEXT:    }
1105 ; CHECK-NEXT:    {
1106 ; CHECK-NEXT:     vmem(r6+#0) = v12
1107 ; CHECK-NEXT:    }
1108 ; CHECK-NEXT:    {
1109 ; CHECK-NEXT:     vmem(r0+#5) = v5
1110 ; CHECK-NEXT:    }
1111 ; CHECK-NEXT:    {
1112 ; CHECK-NEXT:     vmem(r5+#0) = v13
1113 ; CHECK-NEXT:    }
1114 ; CHECK-NEXT:    {
1115 ; CHECK-NEXT:     vmem(r0+#6) = v6
1116 ; CHECK-NEXT:    }
1117 ; CHECK-NEXT:    {
1118 ; CHECK-NEXT:     vmem(r4+#0) = v14
1119 ; CHECK-NEXT:    }
1120 ; CHECK-NEXT:    {
1121 ; CHECK-NEXT:     vmem(r0+#7) = v7
1122 ; CHECK-NEXT:    }
1123 ; CHECK-NEXT:    {
1124 ; CHECK-NEXT:     vmem(r3+#0) = v15
1125 ; CHECK-NEXT:    }
1126 ; CHECK-NEXT:    {
1127 ; CHECK-NEXT:     vmem(r2+#0) = v16
1128 ; CHECK-NEXT:    }
1129 ; CHECK-NEXT:    {
1130 ; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
1131 ; CHECK-NEXT:    }
1133   store <32 x i32> %a0, ptr %a17, align 128
1134   %v1 = getelementptr <32 x i32>, ptr %a17, i32 1
1135   store <32 x i32> %a1, ptr %v1, align 128
1136   %v2 = getelementptr <32 x i32>, ptr %a17, i32 2
1137   store <32 x i32> %a2, ptr %v2, align 128
1138   %v3 = getelementptr <32 x i32>, ptr %a17, i32 3
1139   store <32 x i32> %a3, ptr %v3, align 128
1140   %v4 = getelementptr <32 x i32>, ptr %a17, i32 4
1141   store <32 x i32> %a4, ptr %v4, align 128
1142   %v5 = getelementptr <32 x i32>, ptr %a17, i32 5
1143   store <32 x i32> %a5, ptr %v5, align 128
1144   %v6 = getelementptr <32 x i32>, ptr %a17, i32 6
1145   store <32 x i32> %a6, ptr %v6, align 128
1146   %v7 = getelementptr <32 x i32>, ptr %a17, i32 7
1147   store <32 x i32> %a7, ptr %v7, align 128
1148   %v8 = getelementptr <32 x i32>, ptr %a17, i32 8
1149   store <32 x i32> %a8, ptr %v8, align 128
1150   %v9 = getelementptr <32 x i32>, ptr %a17, i32 9
1151   store <32 x i32> %a9, ptr %v9, align 128
1152   %v10 = getelementptr <32 x i32>, ptr %a17, i32 10
1153   store <32 x i32> %a10, ptr %v10, align 128
1154   %v11 = getelementptr <32 x i32>, ptr %a17, i32 11
1155   store <32 x i32> %a11, ptr %v11, align 128
1156   %v12 = getelementptr <32 x i32>, ptr %a17, i32 12
1157   store <32 x i32> %a12, ptr %v12, align 128
1158   %v13 = getelementptr <32 x i32>, ptr %a17, i32 13
1159   store <32 x i32> %a13, ptr %v13, align 128
1160   %v14 = getelementptr <32 x i32>, ptr %a17, i32 14
1161   store <32 x i32> %a14, ptr %v14, align 128
1162   %v15 = getelementptr <32 x i32>, ptr %a17, i32 15
1163   store <32 x i32> %a15, ptr %v15, align 128
1164   %v16 = getelementptr <32 x i32>, ptr %a17, i32 16
1165   store <32 x i32> %a16, ptr %v16, align 128
1166   ret void
1169 define void @f19(<64 x half> %a0, <64 x half> %a1, <64 x half> %a2, <64 x half> %a3, <64 x half> %a4, <64 x half> %a5, <64 x half> %a6, <64 x half> %a7, <64 x half> %a8, <64 x half> %a9, <64 x half> %a10, <64 x half> %a11, <64 x half> %a12, <64 x half> %a13, <64 x half> %a14, <64 x half> %a15, <64 x half> %a16, ptr %a17) #0 {
1170 ; CHECK-LABEL: f19:
1171 ; CHECK:       // %bb.0: // %b0
1172 ; CHECK-NEXT:    {
1173 ; CHECK-NEXT:     r2 = add(r0,#1152)
1174 ; CHECK-NEXT:     r3 = add(r0,#1280)
1175 ; CHECK-NEXT:     r4 = add(r0,#1408)
1176 ; CHECK-NEXT:     allocframe(r29,#0):raw
1177 ; CHECK-NEXT:    }
1178 ; CHECK-NEXT:    {
1179 ; CHECK-NEXT:     r1 = add(r30,#8)
1180 ; CHECK-NEXT:     r7 = add(r0,#1024)
1181 ; CHECK-NEXT:     r6 = add(r0,#1536)
1182 ; CHECK-NEXT:     vmem(r2+#0) = v9
1183 ; CHECK-NEXT:    }
1184 ; CHECK-NEXT:    {
1185 ; CHECK-NEXT:     r5 = add(r0,#1664)
1186 ; CHECK-NEXT:     r3 = add(r0,#1920)
1187 ; CHECK-NEXT:     r2 = add(r0,#2048)
1188 ; CHECK-NEXT:     vmem(r3+#0) = v10
1189 ; CHECK-NEXT:    }
1190 ; CHECK-NEXT:    {
1191 ; CHECK-NEXT:     r4 = add(r0,#1792)
1192 ; CHECK-NEXT:     r29 = and(r29,#-128)
1193 ; CHECK-NEXT:     v16 = vmem(r1+#0)
1194 ; CHECK-NEXT:     vmem(r4+#0) = v11
1195 ; CHECK-NEXT:    }
1196 ; CHECK-NEXT:    {
1197 ; CHECK-NEXT:     vmem(r0+#0) = v0
1198 ; CHECK-NEXT:    }
1199 ; CHECK-NEXT:    {
1200 ; CHECK-NEXT:     vmem(r0+#1) = v1
1201 ; CHECK-NEXT:    }
1202 ; CHECK-NEXT:    {
1203 ; CHECK-NEXT:     vmem(r7+#0) = v8
1204 ; CHECK-NEXT:    }
1205 ; CHECK-NEXT:    {
1206 ; CHECK-NEXT:     vmem(r0+#2) = v2
1207 ; CHECK-NEXT:    }
1208 ; CHECK-NEXT:    {
1209 ; CHECK-NEXT:     vmem(r0+#3) = v3
1210 ; CHECK-NEXT:    }
1211 ; CHECK-NEXT:    {
1212 ; CHECK-NEXT:     vmem(r0+#4) = v4
1213 ; CHECK-NEXT:    }
1214 ; CHECK-NEXT:    {
1215 ; CHECK-NEXT:     vmem(r6+#0) = v12
1216 ; CHECK-NEXT:    }
1217 ; CHECK-NEXT:    {
1218 ; CHECK-NEXT:     vmem(r0+#5) = v5
1219 ; CHECK-NEXT:    }
1220 ; CHECK-NEXT:    {
1221 ; CHECK-NEXT:     vmem(r5+#0) = v13
1222 ; CHECK-NEXT:    }
1223 ; CHECK-NEXT:    {
1224 ; CHECK-NEXT:     vmem(r0+#6) = v6
1225 ; CHECK-NEXT:    }
1226 ; CHECK-NEXT:    {
1227 ; CHECK-NEXT:     vmem(r4+#0) = v14
1228 ; CHECK-NEXT:    }
1229 ; CHECK-NEXT:    {
1230 ; CHECK-NEXT:     vmem(r0+#7) = v7
1231 ; CHECK-NEXT:    }
1232 ; CHECK-NEXT:    {
1233 ; CHECK-NEXT:     vmem(r3+#0) = v15
1234 ; CHECK-NEXT:    }
1235 ; CHECK-NEXT:    {
1236 ; CHECK-NEXT:     vmem(r2+#0) = v16
1237 ; CHECK-NEXT:    }
1238 ; CHECK-NEXT:    {
1239 ; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
1240 ; CHECK-NEXT:    }
1242   store <64 x half> %a0, ptr %a17, align 128
1243   %v1 = getelementptr <64 x half>, ptr %a17, i32 1
1244   store <64 x half> %a1, ptr %v1, align 128
1245   %v2 = getelementptr <64 x half>, ptr %a17, i32 2
1246   store <64 x half> %a2, ptr %v2, align 128
1247   %v3 = getelementptr <64 x half>, ptr %a17, i32 3
1248   store <64 x half> %a3, ptr %v3, align 128
1249   %v4 = getelementptr <64 x half>, ptr %a17, i32 4
1250   store <64 x half> %a4, ptr %v4, align 128
1251   %v5 = getelementptr <64 x half>, ptr %a17, i32 5
1252   store <64 x half> %a5, ptr %v5, align 128
1253   %v6 = getelementptr <64 x half>, ptr %a17, i32 6
1254   store <64 x half> %a6, ptr %v6, align 128
1255   %v7 = getelementptr <64 x half>, ptr %a17, i32 7
1256   store <64 x half> %a7, ptr %v7, align 128
1257   %v8 = getelementptr <64 x half>, ptr %a17, i32 8
1258   store <64 x half> %a8, ptr %v8, align 128
1259   %v9 = getelementptr <64 x half>, ptr %a17, i32 9
1260   store <64 x half> %a9, ptr %v9, align 128
1261   %v10 = getelementptr <64 x half>, ptr %a17, i32 10
1262   store <64 x half> %a10, ptr %v10, align 128
1263   %v11 = getelementptr <64 x half>, ptr %a17, i32 11
1264   store <64 x half> %a11, ptr %v11, align 128
1265   %v12 = getelementptr <64 x half>, ptr %a17, i32 12
1266   store <64 x half> %a12, ptr %v12, align 128
1267   %v13 = getelementptr <64 x half>, ptr %a17, i32 13
1268   store <64 x half> %a13, ptr %v13, align 128
1269   %v14 = getelementptr <64 x half>, ptr %a17, i32 14
1270   store <64 x half> %a14, ptr %v14, align 128
1271   %v15 = getelementptr <64 x half>, ptr %a17, i32 15
1272   store <64 x half> %a15, ptr %v15, align 128
1273   %v16 = getelementptr <64 x half>, ptr %a17, i32 16
1274   store <64 x half> %a16, ptr %v16, align 128
1275   ret void
1278 define void @f20(<32 x float> %a0, <32 x float> %a1, <32 x float> %a2, <32 x float> %a3, <32 x float> %a4, <32 x float> %a5, <32 x float> %a6, <32 x float> %a7, <32 x float> %a8, <32 x float> %a9, <32 x float> %a10, <32 x float> %a11, <32 x float> %a12, <32 x float> %a13, <32 x float> %a14, <32 x float> %a15, <32 x float> %a16, ptr %a17) #0 {
1279 ; CHECK-LABEL: f20:
1280 ; CHECK:       // %bb.0: // %b0
1281 ; CHECK-NEXT:    {
1282 ; CHECK-NEXT:     r2 = add(r0,#1152)
1283 ; CHECK-NEXT:     r3 = add(r0,#1280)
1284 ; CHECK-NEXT:     r4 = add(r0,#1408)
1285 ; CHECK-NEXT:     allocframe(r29,#0):raw
1286 ; CHECK-NEXT:    }
1287 ; CHECK-NEXT:    {
1288 ; CHECK-NEXT:     r1 = add(r30,#8)
1289 ; CHECK-NEXT:     r7 = add(r0,#1024)
1290 ; CHECK-NEXT:     r6 = add(r0,#1536)
1291 ; CHECK-NEXT:     vmem(r2+#0) = v9
1292 ; CHECK-NEXT:    }
1293 ; CHECK-NEXT:    {
1294 ; CHECK-NEXT:     r5 = add(r0,#1664)
1295 ; CHECK-NEXT:     r3 = add(r0,#1920)
1296 ; CHECK-NEXT:     r2 = add(r0,#2048)
1297 ; CHECK-NEXT:     vmem(r3+#0) = v10
1298 ; CHECK-NEXT:    }
1299 ; CHECK-NEXT:    {
1300 ; CHECK-NEXT:     r4 = add(r0,#1792)
1301 ; CHECK-NEXT:     r29 = and(r29,#-128)
1302 ; CHECK-NEXT:     v16 = vmem(r1+#0)
1303 ; CHECK-NEXT:     vmem(r4+#0) = v11
1304 ; CHECK-NEXT:    }
1305 ; CHECK-NEXT:    {
1306 ; CHECK-NEXT:     vmem(r0+#0) = v0
1307 ; CHECK-NEXT:    }
1308 ; CHECK-NEXT:    {
1309 ; CHECK-NEXT:     vmem(r0+#1) = v1
1310 ; CHECK-NEXT:    }
1311 ; CHECK-NEXT:    {
1312 ; CHECK-NEXT:     vmem(r7+#0) = v8
1313 ; CHECK-NEXT:    }
1314 ; CHECK-NEXT:    {
1315 ; CHECK-NEXT:     vmem(r0+#2) = v2
1316 ; CHECK-NEXT:    }
1317 ; CHECK-NEXT:    {
1318 ; CHECK-NEXT:     vmem(r0+#3) = v3
1319 ; CHECK-NEXT:    }
1320 ; CHECK-NEXT:    {
1321 ; CHECK-NEXT:     vmem(r0+#4) = v4
1322 ; CHECK-NEXT:    }
1323 ; CHECK-NEXT:    {
1324 ; CHECK-NEXT:     vmem(r6+#0) = v12
1325 ; CHECK-NEXT:    }
1326 ; CHECK-NEXT:    {
1327 ; CHECK-NEXT:     vmem(r0+#5) = v5
1328 ; CHECK-NEXT:    }
1329 ; CHECK-NEXT:    {
1330 ; CHECK-NEXT:     vmem(r5+#0) = v13
1331 ; CHECK-NEXT:    }
1332 ; CHECK-NEXT:    {
1333 ; CHECK-NEXT:     vmem(r0+#6) = v6
1334 ; CHECK-NEXT:    }
1335 ; CHECK-NEXT:    {
1336 ; CHECK-NEXT:     vmem(r4+#0) = v14
1337 ; CHECK-NEXT:    }
1338 ; CHECK-NEXT:    {
1339 ; CHECK-NEXT:     vmem(r0+#7) = v7
1340 ; CHECK-NEXT:    }
1341 ; CHECK-NEXT:    {
1342 ; CHECK-NEXT:     vmem(r3+#0) = v15
1343 ; CHECK-NEXT:    }
1344 ; CHECK-NEXT:    {
1345 ; CHECK-NEXT:     vmem(r2+#0) = v16
1346 ; CHECK-NEXT:    }
1347 ; CHECK-NEXT:    {
1348 ; CHECK-NEXT:     r31:30 = dealloc_return(r30):raw
1349 ; CHECK-NEXT:    }
1351   store <32 x float> %a0, ptr %a17, align 128
1352   %v1 = getelementptr <32 x float>, ptr %a17, i32 1
1353   store <32 x float> %a1, ptr %v1, align 128
1354   %v2 = getelementptr <32 x float>, ptr %a17, i32 2
1355   store <32 x float> %a2, ptr %v2, align 128
1356   %v3 = getelementptr <32 x float>, ptr %a17, i32 3
1357   store <32 x float> %a3, ptr %v3, align 128
1358   %v4 = getelementptr <32 x float>, ptr %a17, i32 4
1359   store <32 x float> %a4, ptr %v4, align 128
1360   %v5 = getelementptr <32 x float>, ptr %a17, i32 5
1361   store <32 x float> %a5, ptr %v5, align 128
1362   %v6 = getelementptr <32 x float>, ptr %a17, i32 6
1363   store <32 x float> %a6, ptr %v6, align 128
1364   %v7 = getelementptr <32 x float>, ptr %a17, i32 7
1365   store <32 x float> %a7, ptr %v7, align 128
1366   %v8 = getelementptr <32 x float>, ptr %a17, i32 8
1367   store <32 x float> %a8, ptr %v8, align 128
1368   %v9 = getelementptr <32 x float>, ptr %a17, i32 9
1369   store <32 x float> %a9, ptr %v9, align 128
1370   %v10 = getelementptr <32 x float>, ptr %a17, i32 10
1371   store <32 x float> %a10, ptr %v10, align 128
1372   %v11 = getelementptr <32 x float>, ptr %a17, i32 11
1373   store <32 x float> %a11, ptr %v11, align 128
1374   %v12 = getelementptr <32 x float>, ptr %a17, i32 12
1375   store <32 x float> %a12, ptr %v12, align 128
1376   %v13 = getelementptr <32 x float>, ptr %a17, i32 13
1377   store <32 x float> %a13, ptr %v13, align 128
1378   %v14 = getelementptr <32 x float>, ptr %a17, i32 14
1379   store <32 x float> %a14, ptr %v14, align 128
1380   %v15 = getelementptr <32 x float>, ptr %a17, i32 15
1381   store <32 x float> %a15, ptr %v15, align 128
1382   %v16 = getelementptr <32 x float>, ptr %a17, i32 16
1383   store <32 x float> %a16, ptr %v16, align 128
1384   ret void
1387 define <128 x i8> @f21() #0 {
1388 ; CHECK-LABEL: f21:
1389 ; CHECK:       // %bb.0:
1390 ; CHECK-NEXT:    {
1391 ; CHECK-NEXT:     v0 = vxor(v0,v0)
1392 ; CHECK-NEXT:     jumpr r31
1393 ; CHECK-NEXT:    }
1394   %v0 = insertelement <128 x i8> undef, i8 0, i32 0
1395   %v1 = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> zeroinitializer
1396   ret <128 x i8> %v1
1399 define <256 x i8> @f22() #0 {
1400 ; CHECK-LABEL: f22:
1401 ; CHECK:       // %bb.0:
1402 ; CHECK-NEXT:    {
1403 ; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
1404 ; CHECK-NEXT:     jumpr r31
1405 ; CHECK-NEXT:    }
1406   %v0 = insertelement <256 x i8> undef, i8 0, i32 0
1407   %v1 = shufflevector <256 x i8> %v0, <256 x i8> undef, <256 x i32> zeroinitializer
1408   ret <256 x i8> %v1
1411 define <64 x i16> @f23() #0 {
1412 ; CHECK-LABEL: f23:
1413 ; CHECK:       // %bb.0:
1414 ; CHECK-NEXT:    {
1415 ; CHECK-NEXT:     v0 = vxor(v0,v0)
1416 ; CHECK-NEXT:     jumpr r31
1417 ; CHECK-NEXT:    }
1418   %v0 = insertelement <64 x i16> undef, i16 0, i32 0
1419   %v1 = shufflevector <64 x i16> %v0, <64 x i16> undef, <64 x i32> zeroinitializer
1420   ret <64 x i16> %v1
1423 define <128 x i16> @f24() #0 {
1424 ; CHECK-LABEL: f24:
1425 ; CHECK:       // %bb.0:
1426 ; CHECK-NEXT:    {
1427 ; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
1428 ; CHECK-NEXT:     jumpr r31
1429 ; CHECK-NEXT:    }
1430   %v0 = insertelement <128 x i16> undef, i16 0, i32 0
1431   %v1 = shufflevector <128 x i16> %v0, <128 x i16> undef, <128 x i32> zeroinitializer
1432   ret <128 x i16> %v1
1435 define <32 x i32> @f25() #0 {
1436 ; CHECK-LABEL: f25:
1437 ; CHECK:       // %bb.0:
1438 ; CHECK-NEXT:    {
1439 ; CHECK-NEXT:     v0 = vxor(v0,v0)
1440 ; CHECK-NEXT:     jumpr r31
1441 ; CHECK-NEXT:    }
1442   %v0 = insertelement <32 x i32> undef, i32 0, i32 0
1443   %v1 = shufflevector <32 x i32> %v0, <32 x i32> undef, <32 x i32> zeroinitializer
1444   ret <32 x i32> %v1
1447 define <64 x i32> @f26() #0 {
1448 ; CHECK-LABEL: f26:
1449 ; CHECK:       // %bb.0:
1450 ; CHECK-NEXT:    {
1451 ; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
1452 ; CHECK-NEXT:     jumpr r31
1453 ; CHECK-NEXT:    }
1454   %v0 = insertelement <64 x i32> undef, i32 0, i32 0
1455   %v1 = shufflevector <64 x i32> %v0, <64 x i32> undef, <64 x i32> zeroinitializer
1456   ret <64 x i32> %v1
1459 define <64 x half> @f27() #0 {
1460 ; CHECK-LABEL: f27:
1461 ; CHECK:       // %bb.0:
1462 ; CHECK-NEXT:    {
1463 ; CHECK-NEXT:     v0 = vxor(v0,v0)
1464 ; CHECK-NEXT:     jumpr r31
1465 ; CHECK-NEXT:    }
1466   %v0 = insertelement <64 x half> undef, half 0xH0, i32 0
1467   %v1 = shufflevector <64 x half> %v0, <64 x half> undef, <64 x i32> zeroinitializer
1468   ret <64 x half> %v1
1471 define <128 x half> @f28() #0 {
1472 ; CHECK-LABEL: f28:
1473 ; CHECK:       // %bb.0:
1474 ; CHECK-NEXT:    {
1475 ; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
1476 ; CHECK-NEXT:     jumpr r31
1477 ; CHECK-NEXT:    }
1478   %v0 = insertelement <128 x half> undef, half 0xH0, i32 0
1479   %v1 = shufflevector <128 x half> %v0, <128 x half> undef, <128 x i32> zeroinitializer
1480   ret <128 x half> %v1
1483 define <32 x float> @f29() #0 {
1484 ; CHECK-LABEL: f29:
1485 ; CHECK:       // %bb.0:
1486 ; CHECK-NEXT:    {
1487 ; CHECK-NEXT:     v0 = vxor(v0,v0)
1488 ; CHECK-NEXT:     jumpr r31
1489 ; CHECK-NEXT:    }
1490   %v0 = insertelement <32 x float> undef, float 0.0, i32 0
1491   %v1 = shufflevector <32 x float> %v0, <32 x float> undef, <32 x i32> zeroinitializer
1492   ret <32 x float> %v1
1495 define <64 x float> @f30() #0 {
1496 ; CHECK-LABEL: f30:
1497 ; CHECK:       // %bb.0:
1498 ; CHECK-NEXT:    {
1499 ; CHECK-NEXT:     v1:0.w = vsub(v1:0.w,v1:0.w)
1500 ; CHECK-NEXT:     jumpr r31
1501 ; CHECK-NEXT:    }
1502   %v0 = insertelement <64 x float> undef, float 0.0, i32 0
1503   %v1 = shufflevector <64 x float> %v0, <64 x float> undef, <64 x i32> zeroinitializer
1504   ret <64 x float> %v1
1507 attributes #0 = { nounwind "target-cpu"="hexagonv69" "target-features"="+hvxv69,+hvx-length128b,+hvx-qfloat" }