1 /* { dg-do run } */
2 /* { dg-options "-O2 -ftree-vectorize -ffast-math" } */
3
4 #include "cond_fmaxnm_3.c"
5
6 #define N 99
7
8 #define TEST_LOOP(FN, TYPE, PRED_TYPE, NAME, CONST) \
9 { \
10 TYPE x[N], y[N]; \
11 PRED_TYPE pred[N]; \
12 for (int i = 0; i < N; ++i) \
13 { \
14 y[i] = i * i; \
15 pred[i] = i % 3; \
16 } \
17 test_##TYPE##_##NAME (x, y, pred, N); \
18 for (int i = 0; i < N; ++i) \
19 { \
20 TYPE expected = i % 3 != 1 ? FN (y[i], CONST) : 4; \
21 if (x[i] != expected) \
22 __builtin_abort (); \
23 asm volatile ("" ::: "memory"); \
24 } \
25 }
26
27 int
28 main (void)
29 {
30 TEST_ALL (TEST_LOOP)
31 return 0;
32 }