* gcc.target/i386/xop-rotate1-vector.c (dg-options): Add -mno-avx2.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx2-gather-5.c
blob892a20034e1ff48056a214e7e5e8619f6a4284f8
1 /* { dg-do run } */
2 /* { dg-require-effective-target avx2 } */
3 /* { dg-options "-O3 -mavx2 -fno-common" } */
5 #include "avx2-check.h"
7 #define N 1024
8 float vf1[N+16], vf2[N], vf3[N];
9 int k[N];
11 __attribute__((noinline, noclone)) void
12 foo (void)
14 int i;
15 for (i = 0; i < N; i++)
17 float f;
18 if (vf3[i] < 0.0f)
19 f = vf1[k[i]];
20 else
21 f = 7.0f;
22 vf2[i] = f;
26 static void
27 avx2_test (void)
29 int i;
30 for (i = 0; i < N + 16; i++)
32 vf1[i] = 5.5f * i;
33 if (i >= N)
34 continue;
35 vf2[i] = 2.0f;
36 vf3[i] = (i & 1) ? i : -i - 1;
37 k[i] = (i & 1) ? ((i & 2) ? -i : N / 2 + i) : (i * 7) % N;
38 asm ("");
40 foo ();
41 for (i = 0; i < N; i++)
42 if (vf1[i] != 5.5 * i
43 || vf2[i] != ((i & 1) ? 7.0f : 5.5f * ((i * 7) % N))
44 || vf3[i] != ((i & 1) ? i : -i - 1)
45 || k[i] != ((i & 1) ? ((i & 2) ? -i : N / 2 + i) : ((i * 7) % N)))
46 abort ();