| /* { dg-do compile { target lp64 } } */ |
| /* { dg-options "-O -g" } */ |
| /* { dg-final { check-function-bodies "**" "" } } */ |
| |
| #include <arm_sve.h> |
| |
| /* |
| ** callee: |
| ** ptrue (p[1-3])\.b, all |
| ** ld1b (z[0-9]+\.b), \1/z, \[x4\] |
| ** st1b \2, p0, \[x0, x7\] |
| ** ret |
| */ |
| void __attribute__((noipa)) |
| callee (int8_t *x0, int x1, int x2, int x3, |
| svint32x4_t z0, svint32x4_t z4, svint8_t stack, |
| int x5, svbool_t p0, int x6, int64_t x7) |
| { |
| svst1 (p0, x0 + x7, stack); |
| } |
| |
| void __attribute__((noipa)) |
| caller (int8_t *x0, svbool_t p0, svint32x4_t z0, svint32x4_t z4) |
| { |
| callee (x0, 1, 2, 3, z0, z4, svdup_s8 (42), 5, p0, 6, 7); |
| } |
| |
| /* { dg-final { scan-assembler {\tmov\t(z[0-9]+\.b), #42\n.*\tst1b\t\1, p[0-7], \[x4\]\n} } } */ |