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