1  /* { dg-do compile } */
       2  /* { dg-options "-fshrink-wrap -ffat-lto-objects" } */
       3  /* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
       4  /* { dg-final { check-function-bodies "**" "" } } */
       5  
       6  int callee (void);
       7  
       8  /*
       9  ** caller:	{ target lp64 }
      10  **	ldr	(w[0-9]+), \[x0\]
      11  **	cbn?z	\1, [^\n]*
      12  **	...
      13  **	ret
      14  */
      15  int __attribute__ ((aarch64_vector_pcs))
      16  caller (int *x)
      17  {
      18    if (*x)
      19      return callee () + 1;
      20    else
      21      return 0;
      22  }
      23  
      24  /* { dg-final { scan-assembler {\sstp\tq8, q9} } } */
      25  /* { dg-final { scan-assembler {\sstp\tq10, q11} } } */
      26  /* { dg-final { scan-assembler {\sstp\tq12, q13} } } */
      27  /* { dg-final { scan-assembler {\sstp\tq14, q15} } } */
      28  /* { dg-final { scan-assembler {\sstp\tq16, q17} } } */
      29  /* { dg-final { scan-assembler {\sstp\tq18, q19} } } */
      30  /* { dg-final { scan-assembler {\sstp\tq20, q21} } } */
      31  /* { dg-final { scan-assembler {\sstp\tq22, q23} } } */
      32  /* { dg-final { scan-assembler {\sldp\tq8, q9} } } */
      33  /* { dg-final { scan-assembler {\sldp\tq10, q11} } } */
      34  /* { dg-final { scan-assembler {\sldp\tq12, q13} } } */
      35  /* { dg-final { scan-assembler {\sldp\tq14, q15} } } */
      36  /* { dg-final { scan-assembler {\sldp\tq16, q17} } } */
      37  /* { dg-final { scan-assembler {\sldp\tq18, q19} } } */
      38  /* { dg-final { scan-assembler {\sldp\tq20, q21} } } */
      39  /* { dg-final { scan-assembler {\sldp\tq22, q23} } } */
      40  
      41  /* { dg-final { scan-assembler-not {\tstp\tq[0-7],} } } */
      42  /* { dg-final { scan-assembler-not {\tldp\tq[0-7],} } } */
      43  /* { dg-final { scan-assembler-not {\tstp\tq2[4-9],} } } */
      44  /* { dg-final { scan-assembler-not {\tldp\tq2[4-9],} } } */
      45  /* { dg-final { scan-assembler-not {\tstp\td} } } */
      46  /* { dg-final { scan-assembler-not {\tldp\td} } } */
      47  /* { dg-final { scan-assembler-not {\tstr\tq} } } */
      48  /* { dg-final { scan-assembler-not {\tldr\tq} } } */