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)15callee_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)29caller_pred (my_pred *ptr1) 30 { 31 my_pred p; 32 p = callee_pred (ptr1); 33 return svcntp_b8 (p, p); 34 } 35