Support cond_add/sub/mul/div for vector float/double.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / cond_op_addsubmuldiv_double-2.c
blob360891f3d21ad4dc4774331988679fe151889ee5
1 /* { dg-do run } */
2 /* { dg-options "-O2 -mavx512vl -mprefer-vector-width=256" } */
4 #define AVX512VL
5 #ifndef CHECK
6 #define CHECK "avx512f-helper.h"
7 #endif
9 #include CHECK
11 #include "cond_op_addsubmuldiv_double-1.c"
12 #define BINO2(OPNAME, OP) \
13 void \
14 __attribute__ ((noipa,optimize ("O2"))) \
15 foo_o2_##OPNAME () \
16 { \
17 for (int i = 0; i != NUM; i++) \
18 if (b[i] < c[i]) \
19 j[i] = d[i] OP e[i]; \
23 BINO2 (add, +);
24 BINO2 (sub, -);
25 BINO2 (mul, *);
26 BINO2 (div, /);
28 static void
29 test_256 (void)
31 int sign = -1;
32 for (int i = 0; i != NUM; i++)
34 a[i] = 0.0;
35 d[i] = i * 0.5;
36 e[i] = i * i * 0.3 - i * 0.9 + 15.3;
37 b[i] = i * 0.83;
38 c[i] = b[i] + sign;
39 sign *= -1;
40 j[i] = b[i] < c[i] ? 1.0 : 0.0;
42 foo_add ();
43 foo_o2_add ();
44 for (int i = 0; i != NUM; i++)
46 if (a[i] != j[i])
47 abort ();
48 a[i] = 0.0;
49 j[i] = b[i] < c[i] ? 1.0 : 0.0;
52 foo_sub ();
53 foo_o2_sub ();
54 for (int i = 0; i != NUM; i++)
56 if (a[i] != j[i])
57 abort ();
58 a[i] = 0.0;
59 j[i] = b[i] < c[i] ? 1.0 : 0.0;
62 foo_mul ();
63 foo_o2_mul ();
64 for (int i = 0; i != NUM; i++)
66 if (a[i] != j[i])
67 abort ();
68 a[i] = 0.0;
69 j[i] = b[i] < c[i] ? 1.0 : 0.0;
72 foo_div ();
73 foo_o2_div ();
74 for (int i = 0; i != NUM; i++)
76 if (a[i] != j[i])
77 abort ();
81 static void
82 test_128 ()