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