aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/aarch64/sve/pcs/return_2.c
blob: efaa81394a9b6189496176d20a97fd766237dfcc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* { dg-do compile } */
/* { dg-options "-O -g" } */
/* { dg-final { check-function-bodies "**" "" { target lp64 } } } */

#include <arm_sve.h>

/*
** callee_pred:
**	ldr	p0, \[x0\]
**	ret
*/
svbool_t __attribute__((noipa))
callee_pred (svbool_t *ptr)
{
  return *ptr;
}

/*
** caller_pred:
**	...
**	bl	callee_pred
**	cntp	x0, p0, p0.b
**	ldp	x29, x30, \[sp\], 16
**	ret
*/
uint64_t __attribute__((noipa))
caller_pred (svbool_t *ptr1)
{
  svbool_t p;
  p = callee_pred (ptr1);
  return svcntp_b8 (p, p);
}