1 /* { dg-do compile } */
2 /* { dg-options "-O -msve-vector-bits=512 -g" } */
3 /* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
4 
5 /*
6 ** callee_pred:
7 **	ldr	p0, \[x0\]
8 **	ret
9 */
10 __SVBool_t __attribute__((noipa))
callee_pred(__SVBool_t * ptr)11 callee_pred (__SVBool_t *ptr)
12 {
13   return *ptr;
14 }
15 
16 #include <arm_sve.h>
17 
18 /*
19 ** caller_pred:
20 **	...
21 **	bl	callee_pred
22 **	cntp	x0, p0, p0.b
23 **	ldp	x29, x30, \[sp\], 16
24 **	ret
25 */
26 uint64_t __attribute__((noipa))
caller_pred(__SVBool_t * ptr1)27 caller_pred (__SVBool_t *ptr1)
28 {
29   __SVBool_t p = callee_pred (ptr1);
30   return svcntp_b8 (p, p);
31 }
32