1 /* { dg-do run } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
3
4 #include "cond_shift_8.c"
5
6 #define N 99
7
8 #define TEST_LOOP(TYPE, NAME, OP) \
9 { \
10 TYPE r[N], a[N], b[N], c[N]; \
11 for (int i = 0; i < N; ++i) \
12 { \
13 a[i] = (i & 1 ? i : 3 * i); \
14 b[i] = (i >> 4) << (i & 15); \
15 c[i] = ~i & 7; \
16 asm volatile ("" ::: "memory"); \
17 } \
18 test_##TYPE##_##NAME (r, a, b, c, N); \
19 for (int i = 0; i < N; ++i) \
20 if (r[i] != (TYPE) (a[i] > 20 ? b[i] OP c[i] : 91)) \
21 __builtin_abort (); \
22 }
23
24 int main ()
25 {
26 TEST_ALL (TEST_LOOP)
27 return 0;
28 }