1  /* { dg-do compile } */
       2  /* { dg-options "-O -fno-stack-clash-protection -g" } */
       3  /* { dg-final { check-function-bodies "**" "" } } */
       4  
       5  #include <arm_sve.h>
       6  
       7  /*
       8  ** callee:
       9  **	fadd	s0, (s0, s6|s6, s0)
      10  **	ret
      11  */
      12  float __attribute__((noipa))
      13  callee (float s0, double d1, svfloat32x4_t z2, svfloat64x4_t stack1,
      14  	float s6, double d7)
      15  {
      16    return s0 + s6;
      17  }
      18  
      19  float __attribute__((noipa))
      20  caller (float32_t *x0, float64_t *x1)
      21  {
      22    return callee (0.0f, 1.0,
      23  		 svld4 (svptrue_b8 (), x0),
      24  		 svld4 (svptrue_b8 (), x1),
      25  		 6.0f, 7.0);
      26  }
      27  
      28  /* { dg-final { scan-assembler {\tld4w\t{z2\.s - z5\.s}, p[0-7]/z, \[x0\]\n} } } */
      29  /* { dg-final { scan-assembler {\tld4d\t{z[0-9]+\.d - z[0-9]+\.d}, p[0-7]/z, \[x1\]\n} } } */
      30  /* { dg-final { scan-assembler {\tmovi\tv0\.[24]s, #0\n} } } */
      31  /* { dg-final { scan-assembler {\tfmov\td1, #?1\.0} } } */
      32  /* { dg-final { scan-assembler {\tfmov\ts6, #?6\.0} } } */
      33  /* { dg-final { scan-assembler {\tfmov\td7, #?7\.0} } } */