(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
sve/
pcs/
args_9.c
       1  /* { dg-do compile { target lp64 } } */
       2  /* { dg-options "-O -g" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  
       5  #include <arm_sve.h>
       6  
       7  /*
       8  ** callee:
       9  **	ldr	(x[0-9]+), \[sp, 8\]
      10  **	ldr	p0, \[\1\]
      11  **	ret
      12  */
      13  svbool_t __attribute__((noipa))
      14  callee (svint64x4_t z0, svint16x4_t z4,
      15  	svint64_t stack1, svint32_t stack2,
      16  	svint16_t stack3, svint8_t stack4,
      17  	svuint64_t stack5, svuint32_t stack6,
      18  	svuint16_t stack7, svuint8_t stack8,
      19  	svbool_t p0, svbool_t p1, svbool_t p2, svbool_t p3,
      20  	svbool_t stack9, svbool_t stack10)
      21  {
      22    return stack10;
      23  }
      24  
      25  uint64_t __attribute__((noipa))
      26  caller (int64_t *x0, int16_t *x1, svbool_t p0)
      27  {
      28    svbool_t res;
      29    res = callee (svld4 (p0, x0),
      30  		svld4 (p0, x1),
      31  		svdup_s64 (1),
      32  		svdup_s32 (2),
      33  		svdup_s16 (3),
      34  		svdup_s8 (4),
      35  		svdup_u64 (5),
      36  		svdup_u32 (6),
      37  		svdup_u16 (7),
      38  		svdup_u8 (8),
      39  		svptrue_pat_b8 (SV_VL5),
      40  		svptrue_pat_b16 (SV_VL6),
      41  		svptrue_pat_b32 (SV_VL7),
      42  		svptrue_pat_b64 (SV_VL8),
      43  		svptrue_pat_b8 (SV_MUL3),
      44  		svptrue_pat_b16 (SV_MUL3));
      45    return svcntp_b8 (res, res);
      46  }
      47  
      48  /* { dg-final { scan-assembler {\tptrue\t(p[0-9]+)\.b, mul3\n\tstr\t\1, \[(x[0-9]+)\]\n.*\tstr\t\2, \[sp\]\n} } } */
      49  /* { dg-final { scan-assembler {\tptrue\t(p[0-9]+)\.h, mul3\n\tstr\t\1, \[(x[0-9]+)\]\n.*\tstr\t\2, \[sp, 8\]\n} } } */