1 /* { dg-do compile } */
2 /* { dg-options "-O -mbig-endian -fno-stack-clash-protection -g" } */
3 /* { dg-final { check-function-bodies "**" "" } } */
4
5 void standard_callee (void);
6
7 /*
8 ** calls_standard:
9 ** stp x29, x30, \[sp, -16\]!
10 ** mov x29, sp
11 ** addvl sp, sp, #-18
12 ** ptrue p0\.b, all
13 ** st1d z8\.d, p0, \[sp, #2, mul vl\]
14 ** st1d z9\.d, p0, \[sp, #3, mul vl\]
15 ** st1d z10\.d, p0, \[sp, #4, mul vl\]
16 ** st1d z11\.d, p0, \[sp, #5, mul vl\]
17 ** st1d z12\.d, p0, \[sp, #6, mul vl\]
18 ** st1d z13\.d, p0, \[sp, #7, mul vl\]
19 ** addvl x11, sp, #16
20 ** st1d z14\.d, p0, \[x11, #-8, mul vl\]
21 ** st1d z15\.d, p0, \[x11, #-7, mul vl\]
22 ** cbnz w0, \.L[0-9]+
23 ** ptrue p0\.b, all
24 ** ld1d z8\.d, p0/z, \[sp, #2, mul vl\]
25 ** ld1d z9\.d, p0/z, \[sp, #3, mul vl\]
26 ** ld1d z10\.d, p0/z, \[sp, #4, mul vl\]
27 ** ld1d z11\.d, p0/z, \[sp, #5, mul vl\]
28 ** ld1d z12\.d, p0/z, \[sp, #6, mul vl\]
29 ** ld1d z13\.d, p0/z, \[sp, #7, mul vl\]
30 ** addvl x11, sp, #16
31 ** ld1d z14\.d, p0/z, \[x11, #-8, mul vl\]
32 ** ld1d z15\.d, p0/z, \[x11, #-7, mul vl\]
33 ** addvl sp, sp, #18
34 ** ldp x29, x30, \[sp\], 16
35 ** ret
36 ** ...
37 ** str z16, \[sp, #10, mul vl\]
38 ** str z17, \[sp, #11, mul vl\]
39 ** str z18, \[sp, #12, mul vl\]
40 ** str z19, \[sp, #13, mul vl\]
41 ** str z20, \[sp, #14, mul vl\]
42 ** str z21, \[sp, #15, mul vl\]
43 ** str z22, \[sp, #16, mul vl\]
44 ** str z23, \[sp, #17, mul vl\]
45 ** str p4, \[sp\]
46 ** str p5, \[sp, #1, mul vl\]
47 ** str p6, \[sp, #2, mul vl\]
48 ** str p7, \[sp, #3, mul vl\]
49 ** str p8, \[sp, #4, mul vl\]
50 ** str p9, \[sp, #5, mul vl\]
51 ** str p10, \[sp, #6, mul vl\]
52 ** str p11, \[sp, #7, mul vl\]
53 ** str p12, \[sp, #8, mul vl\]
54 ** str p13, \[sp, #9, mul vl\]
55 ** str p14, \[sp, #10, mul vl\]
56 ** str p15, \[sp, #11, mul vl\]
57 ** bl standard_callee
58 ** ldr z16, \[sp, #10, mul vl\]
59 ** ldr z17, \[sp, #11, mul vl\]
60 ** ldr z18, \[sp, #12, mul vl\]
61 ** ldr z19, \[sp, #13, mul vl\]
62 ** ldr z20, \[sp, #14, mul vl\]
63 ** ldr z21, \[sp, #15, mul vl\]
64 ** ldr z22, \[sp, #16, mul vl\]
65 ** ldr z23, \[sp, #17, mul vl\]
66 ** ldr p4, \[sp\]
67 ** ldr p5, \[sp, #1, mul vl\]
68 ** ldr p6, \[sp, #2, mul vl\]
69 ** ldr p7, \[sp, #3, mul vl\]
70 ** ldr p8, \[sp, #4, mul vl\]
71 ** ldr p9, \[sp, #5, mul vl\]
72 ** ldr p10, \[sp, #6, mul vl\]
73 ** ldr p11, \[sp, #7, mul vl\]
74 ** ldr p12, \[sp, #8, mul vl\]
75 ** ldr p13, \[sp, #9, mul vl\]
76 ** ldr p14, \[sp, #10, mul vl\]
77 ** ldr p15, \[sp, #11, mul vl\]
78 ** b \.L[0-9]+
79 */
80 void
calls_standard(__SVInt8_t x,int y)81 calls_standard (__SVInt8_t x, int y)
82 {
83 asm volatile ("" ::: "z8");
84 if (__builtin_expect (y, 0))
85 standard_callee ();
86 }
87