xref: /aosp_15_r20/external/llvm/test/CodeGen/SystemZ/frame-19.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; Test spilling of vector registers.
2*9880d681SAndroid Build Coastguard Worker;
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; We need to allocate a 16-byte spill slot and save the 8 call-saved FPRs.
6*9880d681SAndroid Build Coastguard Worker; The frame size should be exactly 160 + 16 + 8 * 8 = 240.
7*9880d681SAndroid Build Coastguard Workerdefine void @f1(<16 x i8> *%ptr) {
8*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1:
9*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, -240
10*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f8,
11*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f9,
12*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f10,
13*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f11,
14*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f12,
15*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f13,
16*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f14,
17*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f15,
18*9880d681SAndroid Build Coastguard Worker; CHECK: vst {{%v[0-9]+}}, 160(%r15)
19*9880d681SAndroid Build Coastguard Worker; CHECK: vl {{%v[0-9]+}}, 160(%r15)
20*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f8,
21*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f9,
22*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f10,
23*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f11,
24*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f12,
25*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f13,
26*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f14,
27*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f15,
28*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 240
29*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14
30*9880d681SAndroid Build Coastguard Worker  %v0 = load volatile <16 x i8>, <16 x i8> *%ptr
31*9880d681SAndroid Build Coastguard Worker  %v1 = load volatile <16 x i8>, <16 x i8> *%ptr
32*9880d681SAndroid Build Coastguard Worker  %v2 = load volatile <16 x i8>, <16 x i8> *%ptr
33*9880d681SAndroid Build Coastguard Worker  %v3 = load volatile <16 x i8>, <16 x i8> *%ptr
34*9880d681SAndroid Build Coastguard Worker  %v4 = load volatile <16 x i8>, <16 x i8> *%ptr
35*9880d681SAndroid Build Coastguard Worker  %v5 = load volatile <16 x i8>, <16 x i8> *%ptr
36*9880d681SAndroid Build Coastguard Worker  %v6 = load volatile <16 x i8>, <16 x i8> *%ptr
37*9880d681SAndroid Build Coastguard Worker  %v7 = load volatile <16 x i8>, <16 x i8> *%ptr
38*9880d681SAndroid Build Coastguard Worker  %v8 = load volatile <16 x i8>, <16 x i8> *%ptr
39*9880d681SAndroid Build Coastguard Worker  %v9 = load volatile <16 x i8>, <16 x i8> *%ptr
40*9880d681SAndroid Build Coastguard Worker  %v10 = load volatile <16 x i8>, <16 x i8> *%ptr
41*9880d681SAndroid Build Coastguard Worker  %v11 = load volatile <16 x i8>, <16 x i8> *%ptr
42*9880d681SAndroid Build Coastguard Worker  %v12 = load volatile <16 x i8>, <16 x i8> *%ptr
43*9880d681SAndroid Build Coastguard Worker  %v13 = load volatile <16 x i8>, <16 x i8> *%ptr
44*9880d681SAndroid Build Coastguard Worker  %v14 = load volatile <16 x i8>, <16 x i8> *%ptr
45*9880d681SAndroid Build Coastguard Worker  %v15 = load volatile <16 x i8>, <16 x i8> *%ptr
46*9880d681SAndroid Build Coastguard Worker  %v16 = load volatile <16 x i8>, <16 x i8> *%ptr
47*9880d681SAndroid Build Coastguard Worker  %v17 = load volatile <16 x i8>, <16 x i8> *%ptr
48*9880d681SAndroid Build Coastguard Worker  %v18 = load volatile <16 x i8>, <16 x i8> *%ptr
49*9880d681SAndroid Build Coastguard Worker  %v19 = load volatile <16 x i8>, <16 x i8> *%ptr
50*9880d681SAndroid Build Coastguard Worker  %v20 = load volatile <16 x i8>, <16 x i8> *%ptr
51*9880d681SAndroid Build Coastguard Worker  %v21 = load volatile <16 x i8>, <16 x i8> *%ptr
52*9880d681SAndroid Build Coastguard Worker  %v22 = load volatile <16 x i8>, <16 x i8> *%ptr
53*9880d681SAndroid Build Coastguard Worker  %v23 = load volatile <16 x i8>, <16 x i8> *%ptr
54*9880d681SAndroid Build Coastguard Worker  %v24 = load volatile <16 x i8>, <16 x i8> *%ptr
55*9880d681SAndroid Build Coastguard Worker  %v25 = load volatile <16 x i8>, <16 x i8> *%ptr
56*9880d681SAndroid Build Coastguard Worker  %v26 = load volatile <16 x i8>, <16 x i8> *%ptr
57*9880d681SAndroid Build Coastguard Worker  %v27 = load volatile <16 x i8>, <16 x i8> *%ptr
58*9880d681SAndroid Build Coastguard Worker  %v28 = load volatile <16 x i8>, <16 x i8> *%ptr
59*9880d681SAndroid Build Coastguard Worker  %v29 = load volatile <16 x i8>, <16 x i8> *%ptr
60*9880d681SAndroid Build Coastguard Worker  %v30 = load volatile <16 x i8>, <16 x i8> *%ptr
61*9880d681SAndroid Build Coastguard Worker  %v31 = load volatile <16 x i8>, <16 x i8> *%ptr
62*9880d681SAndroid Build Coastguard Worker  %vx = load volatile <16 x i8>, <16 x i8> *%ptr
63*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %vx, <16 x i8> *%ptr
64*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v31, <16 x i8> *%ptr
65*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v30, <16 x i8> *%ptr
66*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v29, <16 x i8> *%ptr
67*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v28, <16 x i8> *%ptr
68*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v27, <16 x i8> *%ptr
69*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v26, <16 x i8> *%ptr
70*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v25, <16 x i8> *%ptr
71*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v24, <16 x i8> *%ptr
72*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v23, <16 x i8> *%ptr
73*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v22, <16 x i8> *%ptr
74*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v21, <16 x i8> *%ptr
75*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v20, <16 x i8> *%ptr
76*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v19, <16 x i8> *%ptr
77*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v18, <16 x i8> *%ptr
78*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v17, <16 x i8> *%ptr
79*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v16, <16 x i8> *%ptr
80*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v15, <16 x i8> *%ptr
81*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v14, <16 x i8> *%ptr
82*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v13, <16 x i8> *%ptr
83*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v12, <16 x i8> *%ptr
84*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v11, <16 x i8> *%ptr
85*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v10, <16 x i8> *%ptr
86*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v9, <16 x i8> *%ptr
87*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v8, <16 x i8> *%ptr
88*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v7, <16 x i8> *%ptr
89*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v6, <16 x i8> *%ptr
90*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v5, <16 x i8> *%ptr
91*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v4, <16 x i8> *%ptr
92*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v3, <16 x i8> *%ptr
93*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v2, <16 x i8> *%ptr
94*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v1, <16 x i8> *%ptr
95*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v0, <16 x i8> *%ptr
96*9880d681SAndroid Build Coastguard Worker  ret void
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Worker; Like f1, but no 16-byte slot should be needed.
100*9880d681SAndroid Build Coastguard Workerdefine void @f2(<16 x i8> *%ptr) {
101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2:
102*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, -224
103*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f8,
104*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f9,
105*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f10,
106*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f11,
107*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f12,
108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f13,
109*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f14,
110*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f15,
111*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vst {{.*}}(%r15)
112*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vl {{.*}}(%r15)
113*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f8,
114*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f9,
115*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f10,
116*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f11,
117*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f12,
118*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f13,
119*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f14,
120*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f15,
121*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 224
122*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14
123*9880d681SAndroid Build Coastguard Worker  %v0 = load volatile <16 x i8>, <16 x i8> *%ptr
124*9880d681SAndroid Build Coastguard Worker  %v1 = load volatile <16 x i8>, <16 x i8> *%ptr
125*9880d681SAndroid Build Coastguard Worker  %v2 = load volatile <16 x i8>, <16 x i8> *%ptr
126*9880d681SAndroid Build Coastguard Worker  %v3 = load volatile <16 x i8>, <16 x i8> *%ptr
127*9880d681SAndroid Build Coastguard Worker  %v4 = load volatile <16 x i8>, <16 x i8> *%ptr
128*9880d681SAndroid Build Coastguard Worker  %v5 = load volatile <16 x i8>, <16 x i8> *%ptr
129*9880d681SAndroid Build Coastguard Worker  %v6 = load volatile <16 x i8>, <16 x i8> *%ptr
130*9880d681SAndroid Build Coastguard Worker  %v7 = load volatile <16 x i8>, <16 x i8> *%ptr
131*9880d681SAndroid Build Coastguard Worker  %v8 = load volatile <16 x i8>, <16 x i8> *%ptr
132*9880d681SAndroid Build Coastguard Worker  %v9 = load volatile <16 x i8>, <16 x i8> *%ptr
133*9880d681SAndroid Build Coastguard Worker  %v10 = load volatile <16 x i8>, <16 x i8> *%ptr
134*9880d681SAndroid Build Coastguard Worker  %v11 = load volatile <16 x i8>, <16 x i8> *%ptr
135*9880d681SAndroid Build Coastguard Worker  %v12 = load volatile <16 x i8>, <16 x i8> *%ptr
136*9880d681SAndroid Build Coastguard Worker  %v13 = load volatile <16 x i8>, <16 x i8> *%ptr
137*9880d681SAndroid Build Coastguard Worker  %v14 = load volatile <16 x i8>, <16 x i8> *%ptr
138*9880d681SAndroid Build Coastguard Worker  %v15 = load volatile <16 x i8>, <16 x i8> *%ptr
139*9880d681SAndroid Build Coastguard Worker  %v16 = load volatile <16 x i8>, <16 x i8> *%ptr
140*9880d681SAndroid Build Coastguard Worker  %v17 = load volatile <16 x i8>, <16 x i8> *%ptr
141*9880d681SAndroid Build Coastguard Worker  %v18 = load volatile <16 x i8>, <16 x i8> *%ptr
142*9880d681SAndroid Build Coastguard Worker  %v19 = load volatile <16 x i8>, <16 x i8> *%ptr
143*9880d681SAndroid Build Coastguard Worker  %v20 = load volatile <16 x i8>, <16 x i8> *%ptr
144*9880d681SAndroid Build Coastguard Worker  %v21 = load volatile <16 x i8>, <16 x i8> *%ptr
145*9880d681SAndroid Build Coastguard Worker  %v22 = load volatile <16 x i8>, <16 x i8> *%ptr
146*9880d681SAndroid Build Coastguard Worker  %v23 = load volatile <16 x i8>, <16 x i8> *%ptr
147*9880d681SAndroid Build Coastguard Worker  %v24 = load volatile <16 x i8>, <16 x i8> *%ptr
148*9880d681SAndroid Build Coastguard Worker  %v25 = load volatile <16 x i8>, <16 x i8> *%ptr
149*9880d681SAndroid Build Coastguard Worker  %v26 = load volatile <16 x i8>, <16 x i8> *%ptr
150*9880d681SAndroid Build Coastguard Worker  %v27 = load volatile <16 x i8>, <16 x i8> *%ptr
151*9880d681SAndroid Build Coastguard Worker  %v28 = load volatile <16 x i8>, <16 x i8> *%ptr
152*9880d681SAndroid Build Coastguard Worker  %v29 = load volatile <16 x i8>, <16 x i8> *%ptr
153*9880d681SAndroid Build Coastguard Worker  %v30 = load volatile <16 x i8>, <16 x i8> *%ptr
154*9880d681SAndroid Build Coastguard Worker  %v31 = load volatile <16 x i8>, <16 x i8> *%ptr
155*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v31, <16 x i8> *%ptr
156*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v30, <16 x i8> *%ptr
157*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v29, <16 x i8> *%ptr
158*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v28, <16 x i8> *%ptr
159*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v27, <16 x i8> *%ptr
160*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v26, <16 x i8> *%ptr
161*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v25, <16 x i8> *%ptr
162*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v24, <16 x i8> *%ptr
163*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v23, <16 x i8> *%ptr
164*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v22, <16 x i8> *%ptr
165*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v21, <16 x i8> *%ptr
166*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v20, <16 x i8> *%ptr
167*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v19, <16 x i8> *%ptr
168*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v18, <16 x i8> *%ptr
169*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v17, <16 x i8> *%ptr
170*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v16, <16 x i8> *%ptr
171*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v15, <16 x i8> *%ptr
172*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v14, <16 x i8> *%ptr
173*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v13, <16 x i8> *%ptr
174*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v12, <16 x i8> *%ptr
175*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v11, <16 x i8> *%ptr
176*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v10, <16 x i8> *%ptr
177*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v9, <16 x i8> *%ptr
178*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v8, <16 x i8> *%ptr
179*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v7, <16 x i8> *%ptr
180*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v6, <16 x i8> *%ptr
181*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v5, <16 x i8> *%ptr
182*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v4, <16 x i8> *%ptr
183*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v3, <16 x i8> *%ptr
184*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v2, <16 x i8> *%ptr
185*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v1, <16 x i8> *%ptr
186*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v0, <16 x i8> *%ptr
187*9880d681SAndroid Build Coastguard Worker  ret void
188*9880d681SAndroid Build Coastguard Worker}
189*9880d681SAndroid Build Coastguard Worker
190*9880d681SAndroid Build Coastguard Worker; Like f2, but only %f8 should be saved.
191*9880d681SAndroid Build Coastguard Workerdefine void @f3(<16 x i8> *%ptr) {
192*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3:
193*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, -168
194*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: std %f8,
195*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vst {{.*}}(%r15)
196*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vl {{.*}}(%r15)
197*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v9
198*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v10
199*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v11
200*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v12
201*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v13
202*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v14
203*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %v15
204*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld %f8,
205*9880d681SAndroid Build Coastguard Worker; CHECK: aghi %r15, 168
206*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14
207*9880d681SAndroid Build Coastguard Worker  %v0 = load volatile <16 x i8>, <16 x i8> *%ptr
208*9880d681SAndroid Build Coastguard Worker  %v1 = load volatile <16 x i8>, <16 x i8> *%ptr
209*9880d681SAndroid Build Coastguard Worker  %v2 = load volatile <16 x i8>, <16 x i8> *%ptr
210*9880d681SAndroid Build Coastguard Worker  %v3 = load volatile <16 x i8>, <16 x i8> *%ptr
211*9880d681SAndroid Build Coastguard Worker  %v4 = load volatile <16 x i8>, <16 x i8> *%ptr
212*9880d681SAndroid Build Coastguard Worker  %v5 = load volatile <16 x i8>, <16 x i8> *%ptr
213*9880d681SAndroid Build Coastguard Worker  %v6 = load volatile <16 x i8>, <16 x i8> *%ptr
214*9880d681SAndroid Build Coastguard Worker  %v7 = load volatile <16 x i8>, <16 x i8> *%ptr
215*9880d681SAndroid Build Coastguard Worker  %v8 = load volatile <16 x i8>, <16 x i8> *%ptr
216*9880d681SAndroid Build Coastguard Worker  %v16 = load volatile <16 x i8>, <16 x i8> *%ptr
217*9880d681SAndroid Build Coastguard Worker  %v17 = load volatile <16 x i8>, <16 x i8> *%ptr
218*9880d681SAndroid Build Coastguard Worker  %v18 = load volatile <16 x i8>, <16 x i8> *%ptr
219*9880d681SAndroid Build Coastguard Worker  %v19 = load volatile <16 x i8>, <16 x i8> *%ptr
220*9880d681SAndroid Build Coastguard Worker  %v20 = load volatile <16 x i8>, <16 x i8> *%ptr
221*9880d681SAndroid Build Coastguard Worker  %v21 = load volatile <16 x i8>, <16 x i8> *%ptr
222*9880d681SAndroid Build Coastguard Worker  %v22 = load volatile <16 x i8>, <16 x i8> *%ptr
223*9880d681SAndroid Build Coastguard Worker  %v23 = load volatile <16 x i8>, <16 x i8> *%ptr
224*9880d681SAndroid Build Coastguard Worker  %v24 = load volatile <16 x i8>, <16 x i8> *%ptr
225*9880d681SAndroid Build Coastguard Worker  %v25 = load volatile <16 x i8>, <16 x i8> *%ptr
226*9880d681SAndroid Build Coastguard Worker  %v26 = load volatile <16 x i8>, <16 x i8> *%ptr
227*9880d681SAndroid Build Coastguard Worker  %v27 = load volatile <16 x i8>, <16 x i8> *%ptr
228*9880d681SAndroid Build Coastguard Worker  %v28 = load volatile <16 x i8>, <16 x i8> *%ptr
229*9880d681SAndroid Build Coastguard Worker  %v29 = load volatile <16 x i8>, <16 x i8> *%ptr
230*9880d681SAndroid Build Coastguard Worker  %v30 = load volatile <16 x i8>, <16 x i8> *%ptr
231*9880d681SAndroid Build Coastguard Worker  %v31 = load volatile <16 x i8>, <16 x i8> *%ptr
232*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v31, <16 x i8> *%ptr
233*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v30, <16 x i8> *%ptr
234*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v29, <16 x i8> *%ptr
235*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v28, <16 x i8> *%ptr
236*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v27, <16 x i8> *%ptr
237*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v26, <16 x i8> *%ptr
238*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v25, <16 x i8> *%ptr
239*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v24, <16 x i8> *%ptr
240*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v23, <16 x i8> *%ptr
241*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v22, <16 x i8> *%ptr
242*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v21, <16 x i8> *%ptr
243*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v20, <16 x i8> *%ptr
244*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v19, <16 x i8> *%ptr
245*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v18, <16 x i8> *%ptr
246*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v17, <16 x i8> *%ptr
247*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v16, <16 x i8> *%ptr
248*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v8, <16 x i8> *%ptr
249*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v7, <16 x i8> *%ptr
250*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v6, <16 x i8> *%ptr
251*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v5, <16 x i8> *%ptr
252*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v4, <16 x i8> *%ptr
253*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v3, <16 x i8> *%ptr
254*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v2, <16 x i8> *%ptr
255*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v1, <16 x i8> *%ptr
256*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v0, <16 x i8> *%ptr
257*9880d681SAndroid Build Coastguard Worker  ret void
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Worker; Like f2, but no registers should be saved.
261*9880d681SAndroid Build Coastguard Workerdefine void @f4(<16 x i8> *%ptr) {
262*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4:
263*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: %r15
264*9880d681SAndroid Build Coastguard Worker; CHECK: br %r14
265*9880d681SAndroid Build Coastguard Worker  %v0 = load volatile <16 x i8>, <16 x i8> *%ptr
266*9880d681SAndroid Build Coastguard Worker  %v1 = load volatile <16 x i8>, <16 x i8> *%ptr
267*9880d681SAndroid Build Coastguard Worker  %v2 = load volatile <16 x i8>, <16 x i8> *%ptr
268*9880d681SAndroid Build Coastguard Worker  %v3 = load volatile <16 x i8>, <16 x i8> *%ptr
269*9880d681SAndroid Build Coastguard Worker  %v4 = load volatile <16 x i8>, <16 x i8> *%ptr
270*9880d681SAndroid Build Coastguard Worker  %v5 = load volatile <16 x i8>, <16 x i8> *%ptr
271*9880d681SAndroid Build Coastguard Worker  %v6 = load volatile <16 x i8>, <16 x i8> *%ptr
272*9880d681SAndroid Build Coastguard Worker  %v7 = load volatile <16 x i8>, <16 x i8> *%ptr
273*9880d681SAndroid Build Coastguard Worker  %v16 = load volatile <16 x i8>, <16 x i8> *%ptr
274*9880d681SAndroid Build Coastguard Worker  %v17 = load volatile <16 x i8>, <16 x i8> *%ptr
275*9880d681SAndroid Build Coastguard Worker  %v18 = load volatile <16 x i8>, <16 x i8> *%ptr
276*9880d681SAndroid Build Coastguard Worker  %v19 = load volatile <16 x i8>, <16 x i8> *%ptr
277*9880d681SAndroid Build Coastguard Worker  %v20 = load volatile <16 x i8>, <16 x i8> *%ptr
278*9880d681SAndroid Build Coastguard Worker  %v21 = load volatile <16 x i8>, <16 x i8> *%ptr
279*9880d681SAndroid Build Coastguard Worker  %v22 = load volatile <16 x i8>, <16 x i8> *%ptr
280*9880d681SAndroid Build Coastguard Worker  %v23 = load volatile <16 x i8>, <16 x i8> *%ptr
281*9880d681SAndroid Build Coastguard Worker  %v24 = load volatile <16 x i8>, <16 x i8> *%ptr
282*9880d681SAndroid Build Coastguard Worker  %v25 = load volatile <16 x i8>, <16 x i8> *%ptr
283*9880d681SAndroid Build Coastguard Worker  %v26 = load volatile <16 x i8>, <16 x i8> *%ptr
284*9880d681SAndroid Build Coastguard Worker  %v27 = load volatile <16 x i8>, <16 x i8> *%ptr
285*9880d681SAndroid Build Coastguard Worker  %v28 = load volatile <16 x i8>, <16 x i8> *%ptr
286*9880d681SAndroid Build Coastguard Worker  %v29 = load volatile <16 x i8>, <16 x i8> *%ptr
287*9880d681SAndroid Build Coastguard Worker  %v30 = load volatile <16 x i8>, <16 x i8> *%ptr
288*9880d681SAndroid Build Coastguard Worker  %v31 = load volatile <16 x i8>, <16 x i8> *%ptr
289*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v31, <16 x i8> *%ptr
290*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v30, <16 x i8> *%ptr
291*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v29, <16 x i8> *%ptr
292*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v28, <16 x i8> *%ptr
293*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v27, <16 x i8> *%ptr
294*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v26, <16 x i8> *%ptr
295*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v25, <16 x i8> *%ptr
296*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v24, <16 x i8> *%ptr
297*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v23, <16 x i8> *%ptr
298*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v22, <16 x i8> *%ptr
299*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v21, <16 x i8> *%ptr
300*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v20, <16 x i8> *%ptr
301*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v19, <16 x i8> *%ptr
302*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v18, <16 x i8> *%ptr
303*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v17, <16 x i8> *%ptr
304*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v16, <16 x i8> *%ptr
305*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v7, <16 x i8> *%ptr
306*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v6, <16 x i8> *%ptr
307*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v5, <16 x i8> *%ptr
308*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v4, <16 x i8> *%ptr
309*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v3, <16 x i8> *%ptr
310*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v2, <16 x i8> *%ptr
311*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v1, <16 x i8> *%ptr
312*9880d681SAndroid Build Coastguard Worker  store volatile <16 x i8> %v0, <16 x i8> *%ptr
313*9880d681SAndroid Build Coastguard Worker  ret void
314*9880d681SAndroid Build Coastguard Worker}
315