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