Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / vcond_7_run.c
blobe440f3a67942cab8d2d937c2d6f18e525454724e
1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
4 #include "vcond_7.c"
6 #define TEST_CONST_LOOP(NAME, SUFFIX, TYPE, CONST) \
7 { \
8 for (int i = 0; i < N; ++i) \
9 { \
10 dst[i] = i * 3; \
11 src[i] = i % (CONST + 3); \
12 } \
13 NAME##_##SUFFIX##_##TYPE (dst, src); \
14 for (int i = 0; i < N; ++i) \
15 if (dst[i] != (NAME (src[i], CONST) ? (TYPE) 1 : (TYPE) (i * 3))) \
16 __builtin_abort (); \
19 #define TEST_LOOPS(NAME, TYPE, CONST1, CONST2) \
20 { \
21 TYPE dst[N], src[N]; \
22 for (int i = 0; i < N; ++i) \
23 { \
24 dst[i] = i * 2; \
25 src[i] = i % 5; \
26 } \
27 NAME##_var_##TYPE (dst, src, 3); \
28 for (int i = 0; i < N; ++i) \
29 if (dst[i] != (NAME (src[i], 3) ? (TYPE) 3 : (TYPE) (i * 2))) \
30 __builtin_abort (); \
31 TEST_CONST_LOOP (NAME, const1, TYPE, CONST1) \
32 TEST_CONST_LOOP (NAME, const2, TYPE, CONST2) \
35 int __attribute__ ((noipa))
36 main (void)
38 FOR_EACH_TYPE (TEST_LOOPS);
39 return 0;