Add support for conditional reductions using SVE CLASTB
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / vec_bool_cmp_1_run.c
blobcd0fd562f99bd5d51cedcd9140ff16999ffa1b5f
1 /* { dg-do run { target { aarch64_sve_hw } } } */
2 /* { dg-options "-O3 -fno-inline" } */
4 #include "vec_bool_cmp_1.c"
6 #define N 103
8 #define TEST_VEC_BOOL(NAME, OP, VARTYPE, INDUCTYPE) \
9 { \
10 INDUCTYPE i; \
11 VARTYPE src[N]; \
12 VARTYPE dst[N]; \
13 for (i = 0; i < N; i++) \
14 { \
15 src[i] = i; \
16 dst[i] = i * 2; \
17 asm volatile ("" ::: "memory"); \
18 } \
19 vec_bool_##NAME##_##VARTYPE##_##INDUCTYPE (dst, src, 13, \
20 97, 0xFF); \
21 for (i = 0; i < 13; i++) \
22 if (dst[i] != (VARTYPE) (0 OP 1 ? i : i * 2)) \
23 __builtin_abort (); \
24 for (i = 13; i < 97; i++) \
25 if (dst[i] != (VARTYPE) (1 OP (i != 0x3D) ? i : i * 2)) \
26 __builtin_abort (); \
27 for (i = 97; i < N; i++) \
28 if (dst[i] != (i * 2)) \
29 __builtin_abort (); \
32 int __attribute__ ((optimize (1)))
33 main ()
35 TEST_ALL (TEST_VEC_BOOL)
36 return 0;