1 /* { dg-do compile { target { powerpc64*-*-* } } } */
2 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
3 /* { dg-require-effective-target powerpc_p9vector_ok } */
4 /* { dg-options "-mcpu=power9 -O3" } */
8 /* Verify P9 vec_revb builtin generates the XXBR{Q,D,W,H} instructions. */
11 rev_char (vector
char a
)
13 return vec_revb (a
); /* XXBRQ. */
17 rev_schar (vector
signed char a
)
19 return vec_revb (a
); /* XXBRQ. */
23 rev_uchar (vector
unsigned char a
)
25 return vec_revb (a
); /* XXBRQ. */
29 rev_short (vector
short a
)
31 return vec_revb (a
); /* XXBRH. */
35 rev_ushort (vector
unsigned short a
)
37 return vec_revb (a
); /* XXBRH. */
41 rev_int (vector
int a
)
43 return vec_revb (a
); /* XXBRW. */
47 rev_uint (vector
unsigned int a
)
49 return vec_revb (a
); /* XXBRW. */
53 rev_float (vector
float a
)
55 return vec_revb (a
); /* XXBRW. */
59 rev_double (vector
double a
)
61 return vec_revb (a
); /* XXBRD. */
64 /* { dg-final { scan-assembler-times "xxbrd" 1 } } */
65 /* { dg-final { scan-assembler-times "xxbrh" 2 } } */
66 /* { dg-final { scan-assembler-times "xxbrq" 3 } } */
67 /* { dg-final { scan-assembler-times "xxbrw" 3 } } */