]>
Commit | Line | Data |
---|---|---|
c600df9a RS |
1 | /* { dg-do compile } */ |
2 | /* { dg-options "-O -mlittle-endian -fno-shrink-wrap -fno-stack-clash-protection -g" } */ | |
2171a920 | 3 | /* { dg-final { check-function-bodies "**" "" { target lp64 } } } */ |
c600df9a RS |
4 | |
5 | void standard_callee (void); | |
6 | __attribute__((aarch64_vector_pcs)) void vpcs_callee (void); | |
7 | ||
8 | /* | |
9 | ** calls_standard: | |
10 | ** stp x29, x30, \[sp, -16\]! | |
11 | ** mov x29, sp | |
cb26919c | 12 | ** addvl sp, sp, #-18 |
c600df9a RS |
13 | ** str p4, \[sp\] |
14 | ** str p5, \[sp, #1, mul vl\] | |
15 | ** str p6, \[sp, #2, mul vl\] | |
16 | ** str p7, \[sp, #3, mul vl\] | |
17 | ** str p8, \[sp, #4, mul vl\] | |
18 | ** str p9, \[sp, #5, mul vl\] | |
19 | ** str p10, \[sp, #6, mul vl\] | |
20 | ** str p11, \[sp, #7, mul vl\] | |
cb26919c RS |
21 | ** str p12, \[sp, #8, mul vl\] |
22 | ** str p13, \[sp, #9, mul vl\] | |
23 | ** str p14, \[sp, #10, mul vl\] | |
24 | ** str p15, \[sp, #11, mul vl\] | |
25 | ** str z8, \[sp, #2, mul vl\] | |
26 | ** str z9, \[sp, #3, mul vl\] | |
27 | ** str z10, \[sp, #4, mul vl\] | |
28 | ** str z11, \[sp, #5, mul vl\] | |
29 | ** str z12, \[sp, #6, mul vl\] | |
30 | ** str z13, \[sp, #7, mul vl\] | |
31 | ** str z14, \[sp, #8, mul vl\] | |
32 | ** str z15, \[sp, #9, mul vl\] | |
33 | ** str z16, \[sp, #10, mul vl\] | |
34 | ** str z17, \[sp, #11, mul vl\] | |
35 | ** str z18, \[sp, #12, mul vl\] | |
36 | ** str z19, \[sp, #13, mul vl\] | |
37 | ** str z20, \[sp, #14, mul vl\] | |
38 | ** str z21, \[sp, #15, mul vl\] | |
39 | ** str z22, \[sp, #16, mul vl\] | |
40 | ** str z23, \[sp, #17, mul vl\] | |
c600df9a | 41 | ** bl standard_callee |
cb26919c RS |
42 | ** ldr z8, \[sp, #2, mul vl\] |
43 | ** ldr z9, \[sp, #3, mul vl\] | |
44 | ** ldr z10, \[sp, #4, mul vl\] | |
45 | ** ldr z11, \[sp, #5, mul vl\] | |
46 | ** ldr z12, \[sp, #6, mul vl\] | |
47 | ** ldr z13, \[sp, #7, mul vl\] | |
48 | ** ldr z14, \[sp, #8, mul vl\] | |
49 | ** ldr z15, \[sp, #9, mul vl\] | |
50 | ** ldr z16, \[sp, #10, mul vl\] | |
51 | ** ldr z17, \[sp, #11, mul vl\] | |
52 | ** ldr z18, \[sp, #12, mul vl\] | |
53 | ** ldr z19, \[sp, #13, mul vl\] | |
54 | ** ldr z20, \[sp, #14, mul vl\] | |
55 | ** ldr z21, \[sp, #15, mul vl\] | |
56 | ** ldr z22, \[sp, #16, mul vl\] | |
57 | ** ldr z23, \[sp, #17, mul vl\] | |
c600df9a RS |
58 | ** ldr p4, \[sp\] |
59 | ** ldr p5, \[sp, #1, mul vl\] | |
60 | ** ldr p6, \[sp, #2, mul vl\] | |
61 | ** ldr p7, \[sp, #3, mul vl\] | |
62 | ** ldr p8, \[sp, #4, mul vl\] | |
63 | ** ldr p9, \[sp, #5, mul vl\] | |
64 | ** ldr p10, \[sp, #6, mul vl\] | |
65 | ** ldr p11, \[sp, #7, mul vl\] | |
cb26919c RS |
66 | ** ldr p12, \[sp, #8, mul vl\] |
67 | ** ldr p13, \[sp, #9, mul vl\] | |
68 | ** ldr p14, \[sp, #10, mul vl\] | |
69 | ** ldr p15, \[sp, #11, mul vl\] | |
70 | ** addvl sp, sp, #18 | |
c600df9a RS |
71 | ** ldp x29, x30, \[sp\], 16 |
72 | ** ret | |
73 | */ | |
74 | void calls_standard (__SVInt8_t x) { standard_callee (); } | |
75 | ||
76 | /* | |
77 | ** calls_vpcs: | |
78 | ** stp x29, x30, \[sp, -16\]! | |
79 | ** mov x29, sp | |
cb26919c | 80 | ** addvl sp, sp, #-18 |
c600df9a RS |
81 | ** str p4, \[sp\] |
82 | ** str p5, \[sp, #1, mul vl\] | |
83 | ** str p6, \[sp, #2, mul vl\] | |
84 | ** str p7, \[sp, #3, mul vl\] | |
85 | ** str p8, \[sp, #4, mul vl\] | |
86 | ** str p9, \[sp, #5, mul vl\] | |
87 | ** str p10, \[sp, #6, mul vl\] | |
88 | ** str p11, \[sp, #7, mul vl\] | |
cb26919c RS |
89 | ** str p12, \[sp, #8, mul vl\] |
90 | ** str p13, \[sp, #9, mul vl\] | |
91 | ** str p14, \[sp, #10, mul vl\] | |
92 | ** str p15, \[sp, #11, mul vl\] | |
93 | ** str z8, \[sp, #2, mul vl\] | |
94 | ** str z9, \[sp, #3, mul vl\] | |
95 | ** str z10, \[sp, #4, mul vl\] | |
96 | ** str z11, \[sp, #5, mul vl\] | |
97 | ** str z12, \[sp, #6, mul vl\] | |
98 | ** str z13, \[sp, #7, mul vl\] | |
99 | ** str z14, \[sp, #8, mul vl\] | |
100 | ** str z15, \[sp, #9, mul vl\] | |
101 | ** str z16, \[sp, #10, mul vl\] | |
102 | ** str z17, \[sp, #11, mul vl\] | |
103 | ** str z18, \[sp, #12, mul vl\] | |
104 | ** str z19, \[sp, #13, mul vl\] | |
105 | ** str z20, \[sp, #14, mul vl\] | |
106 | ** str z21, \[sp, #15, mul vl\] | |
107 | ** str z22, \[sp, #16, mul vl\] | |
108 | ** str z23, \[sp, #17, mul vl\] | |
c600df9a | 109 | ** bl vpcs_callee |
cb26919c RS |
110 | ** ldr z8, \[sp, #2, mul vl\] |
111 | ** ldr z9, \[sp, #3, mul vl\] | |
112 | ** ldr z10, \[sp, #4, mul vl\] | |
113 | ** ldr z11, \[sp, #5, mul vl\] | |
114 | ** ldr z12, \[sp, #6, mul vl\] | |
115 | ** ldr z13, \[sp, #7, mul vl\] | |
116 | ** ldr z14, \[sp, #8, mul vl\] | |
117 | ** ldr z15, \[sp, #9, mul vl\] | |
118 | ** ldr z16, \[sp, #10, mul vl\] | |
119 | ** ldr z17, \[sp, #11, mul vl\] | |
120 | ** ldr z18, \[sp, #12, mul vl\] | |
121 | ** ldr z19, \[sp, #13, mul vl\] | |
122 | ** ldr z20, \[sp, #14, mul vl\] | |
123 | ** ldr z21, \[sp, #15, mul vl\] | |
124 | ** ldr z22, \[sp, #16, mul vl\] | |
125 | ** ldr z23, \[sp, #17, mul vl\] | |
c600df9a RS |
126 | ** ldr p4, \[sp\] |
127 | ** ldr p5, \[sp, #1, mul vl\] | |
128 | ** ldr p6, \[sp, #2, mul vl\] | |
129 | ** ldr p7, \[sp, #3, mul vl\] | |
130 | ** ldr p8, \[sp, #4, mul vl\] | |
131 | ** ldr p9, \[sp, #5, mul vl\] | |
132 | ** ldr p10, \[sp, #6, mul vl\] | |
133 | ** ldr p11, \[sp, #7, mul vl\] | |
cb26919c RS |
134 | ** ldr p12, \[sp, #8, mul vl\] |
135 | ** ldr p13, \[sp, #9, mul vl\] | |
136 | ** ldr p14, \[sp, #10, mul vl\] | |
137 | ** ldr p15, \[sp, #11, mul vl\] | |
138 | ** addvl sp, sp, #18 | |
c600df9a RS |
139 | ** ldp x29, x30, \[sp\], 16 |
140 | ** ret | |
141 | */ | |
142 | void calls_vpcs (__SVInt8_t x) { vpcs_callee (); } | |
143 | ||
144 | /* | |
145 | ** calls_standard_ptr: | |
146 | ** stp x29, x30, \[sp, -16\]! | |
147 | ** mov x29, sp | |
cb26919c | 148 | ** addvl sp, sp, #-18 |
c600df9a RS |
149 | ** str p4, \[sp\] |
150 | ** str p5, \[sp, #1, mul vl\] | |
151 | ** str p6, \[sp, #2, mul vl\] | |
152 | ** str p7, \[sp, #3, mul vl\] | |
153 | ** str p8, \[sp, #4, mul vl\] | |
154 | ** str p9, \[sp, #5, mul vl\] | |
155 | ** str p10, \[sp, #6, mul vl\] | |
156 | ** str p11, \[sp, #7, mul vl\] | |
cb26919c RS |
157 | ** str p12, \[sp, #8, mul vl\] |
158 | ** str p13, \[sp, #9, mul vl\] | |
159 | ** str p14, \[sp, #10, mul vl\] | |
160 | ** str p15, \[sp, #11, mul vl\] | |
161 | ** str z8, \[sp, #2, mul vl\] | |
162 | ** str z9, \[sp, #3, mul vl\] | |
163 | ** str z10, \[sp, #4, mul vl\] | |
164 | ** str z11, \[sp, #5, mul vl\] | |
165 | ** str z12, \[sp, #6, mul vl\] | |
166 | ** str z13, \[sp, #7, mul vl\] | |
167 | ** str z14, \[sp, #8, mul vl\] | |
168 | ** str z15, \[sp, #9, mul vl\] | |
169 | ** str z16, \[sp, #10, mul vl\] | |
170 | ** str z17, \[sp, #11, mul vl\] | |
171 | ** str z18, \[sp, #12, mul vl\] | |
172 | ** str z19, \[sp, #13, mul vl\] | |
173 | ** str z20, \[sp, #14, mul vl\] | |
174 | ** str z21, \[sp, #15, mul vl\] | |
175 | ** str z22, \[sp, #16, mul vl\] | |
176 | ** str z23, \[sp, #17, mul vl\] | |
c600df9a | 177 | ** blr x0 |
cb26919c RS |
178 | ** ldr z8, \[sp, #2, mul vl\] |
179 | ** ldr z9, \[sp, #3, mul vl\] | |
180 | ** ldr z10, \[sp, #4, mul vl\] | |
181 | ** ldr z11, \[sp, #5, mul vl\] | |
182 | ** ldr z12, \[sp, #6, mul vl\] | |
183 | ** ldr z13, \[sp, #7, mul vl\] | |
184 | ** ldr z14, \[sp, #8, mul vl\] | |
185 | ** ldr z15, \[sp, #9, mul vl\] | |
186 | ** ldr z16, \[sp, #10, mul vl\] | |
187 | ** ldr z17, \[sp, #11, mul vl\] | |
188 | ** ldr z18, \[sp, #12, mul vl\] | |
189 | ** ldr z19, \[sp, #13, mul vl\] | |
190 | ** ldr z20, \[sp, #14, mul vl\] | |
191 | ** ldr z21, \[sp, #15, mul vl\] | |
192 | ** ldr z22, \[sp, #16, mul vl\] | |
193 | ** ldr z23, \[sp, #17, mul vl\] | |
c600df9a RS |
194 | ** ldr p4, \[sp\] |
195 | ** ldr p5, \[sp, #1, mul vl\] | |
196 | ** ldr p6, \[sp, #2, mul vl\] | |
197 | ** ldr p7, \[sp, #3, mul vl\] | |
198 | ** ldr p8, \[sp, #4, mul vl\] | |
199 | ** ldr p9, \[sp, #5, mul vl\] | |
200 | ** ldr p10, \[sp, #6, mul vl\] | |
201 | ** ldr p11, \[sp, #7, mul vl\] | |
cb26919c RS |
202 | ** ldr p12, \[sp, #8, mul vl\] |
203 | ** ldr p13, \[sp, #9, mul vl\] | |
204 | ** ldr p14, \[sp, #10, mul vl\] | |
205 | ** ldr p15, \[sp, #11, mul vl\] | |
206 | ** addvl sp, sp, #18 | |
c600df9a RS |
207 | ** ldp x29, x30, \[sp\], 16 |
208 | ** ret | |
209 | */ | |
210 | void | |
211 | calls_standard_ptr (__SVInt8_t x, void (*fn) (void)) | |
212 | { | |
213 | fn (); | |
214 | } | |
215 | ||
216 | /* | |
217 | ** calls_vpcs_ptr: | |
218 | ** stp x29, x30, \[sp, -16\]! | |
219 | ** mov x29, sp | |
cb26919c | 220 | ** addvl sp, sp, #-18 |
c600df9a RS |
221 | ** str p4, \[sp\] |
222 | ** str p5, \[sp, #1, mul vl\] | |
223 | ** str p6, \[sp, #2, mul vl\] | |
224 | ** str p7, \[sp, #3, mul vl\] | |
225 | ** str p8, \[sp, #4, mul vl\] | |
226 | ** str p9, \[sp, #5, mul vl\] | |
227 | ** str p10, \[sp, #6, mul vl\] | |
228 | ** str p11, \[sp, #7, mul vl\] | |
cb26919c RS |
229 | ** str p12, \[sp, #8, mul vl\] |
230 | ** str p13, \[sp, #9, mul vl\] | |
231 | ** str p14, \[sp, #10, mul vl\] | |
232 | ** str p15, \[sp, #11, mul vl\] | |
233 | ** str z8, \[sp, #2, mul vl\] | |
234 | ** str z9, \[sp, #3, mul vl\] | |
235 | ** str z10, \[sp, #4, mul vl\] | |
236 | ** str z11, \[sp, #5, mul vl\] | |
237 | ** str z12, \[sp, #6, mul vl\] | |
238 | ** str z13, \[sp, #7, mul vl\] | |
239 | ** str z14, \[sp, #8, mul vl\] | |
240 | ** str z15, \[sp, #9, mul vl\] | |
241 | ** str z16, \[sp, #10, mul vl\] | |
242 | ** str z17, \[sp, #11, mul vl\] | |
243 | ** str z18, \[sp, #12, mul vl\] | |
244 | ** str z19, \[sp, #13, mul vl\] | |
245 | ** str z20, \[sp, #14, mul vl\] | |
246 | ** str z21, \[sp, #15, mul vl\] | |
247 | ** str z22, \[sp, #16, mul vl\] | |
248 | ** str z23, \[sp, #17, mul vl\] | |
c600df9a | 249 | ** blr x0 |
cb26919c RS |
250 | ** ldr z8, \[sp, #2, mul vl\] |
251 | ** ldr z9, \[sp, #3, mul vl\] | |
252 | ** ldr z10, \[sp, #4, mul vl\] | |
253 | ** ldr z11, \[sp, #5, mul vl\] | |
254 | ** ldr z12, \[sp, #6, mul vl\] | |
255 | ** ldr z13, \[sp, #7, mul vl\] | |
256 | ** ldr z14, \[sp, #8, mul vl\] | |
257 | ** ldr z15, \[sp, #9, mul vl\] | |
258 | ** ldr z16, \[sp, #10, mul vl\] | |
259 | ** ldr z17, \[sp, #11, mul vl\] | |
260 | ** ldr z18, \[sp, #12, mul vl\] | |
261 | ** ldr z19, \[sp, #13, mul vl\] | |
262 | ** ldr z20, \[sp, #14, mul vl\] | |
263 | ** ldr z21, \[sp, #15, mul vl\] | |
264 | ** ldr z22, \[sp, #16, mul vl\] | |
265 | ** ldr z23, \[sp, #17, mul vl\] | |
c600df9a RS |
266 | ** ldr p4, \[sp\] |
267 | ** ldr p5, \[sp, #1, mul vl\] | |
268 | ** ldr p6, \[sp, #2, mul vl\] | |
269 | ** ldr p7, \[sp, #3, mul vl\] | |
270 | ** ldr p8, \[sp, #4, mul vl\] | |
271 | ** ldr p9, \[sp, #5, mul vl\] | |
272 | ** ldr p10, \[sp, #6, mul vl\] | |
273 | ** ldr p11, \[sp, #7, mul vl\] | |
cb26919c RS |
274 | ** ldr p12, \[sp, #8, mul vl\] |
275 | ** ldr p13, \[sp, #9, mul vl\] | |
276 | ** ldr p14, \[sp, #10, mul vl\] | |
277 | ** ldr p15, \[sp, #11, mul vl\] | |
278 | ** addvl sp, sp, #18 | |
c600df9a RS |
279 | ** ldp x29, x30, \[sp\], 16 |
280 | ** ret | |
281 | */ | |
282 | void | |
283 | calls_vpcs_ptr (__SVInt8_t x, | |
284 | void (*__attribute__((aarch64_vector_pcs)) fn) (void)) | |
285 | { | |
286 | fn (); | |
287 | } |