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
      81  calls_standard (__SVInt8_t x, int y)
      82  {
      83    asm volatile ("" ::: "z8");
      84    if (__builtin_expect (y, 0))
      85      standard_callee ();
      86  }