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))
callee(float s0,double d1,svfloat32x4_t z2,svfloat64x4_t stack1,float s6,double d7)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))
caller(float32_t * x0,float64_t * x1)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} } } */
34