1 /* { dg-do run { target aarch64_sve_hw } } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
6 #define TEST_CONST_LOOP(NAME, SUFFIX, TYPE, CONST) \
8 for (int i = 0; i < N; ++i) \
11 src[i] = i % (CONST + 3); \
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))) \
19 #define TEST_LOOPS(NAME, TYPE, CONST1, CONST2) \
21 TYPE dst[N], src[N]; \
22 for (int i = 0; i < N; ++i) \
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))) \
31 TEST_CONST_LOOP (NAME, const1, TYPE, CONST1) \
32 TEST_CONST_LOOP (NAME, const2, TYPE, CONST2) \
35 int __attribute__ ((noipa
))
38 FOR_EACH_TYPE (TEST_LOOPS
);