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