2 /* { dg-require-effective-target avx2 } */
3 /* { dg-options "-O3 -mavx2" } */
5 #include "avx2-check.h"
8 float vf1[N+16], vf2[N];
9 double vd1[N+16], vd2[N];
14 __attribute__((noinline, noclone)) void
18 for (i = 0; i < N; i++)
22 __attribute__((noinline, noclone)) void
26 for (i = 0; i < N; i++)
27 n[i] = (int) vf1[k[i]];
30 __attribute__((noinline, noclone)) void
34 for (i = 0; i < N; i++)
35 vf2[i] = vf1[k[i] + x];
38 __attribute__((noinline, noclone)) void
42 for (i = 0; i < N; i++)
43 n[i] = (int) vf1[k[i] + x];
46 __attribute__((noinline, noclone)) void
50 for (i = 0; i < N; i++)
54 __attribute__((noinline, noclone)) void
58 for (i = 0; i < N; i++)
59 n[i] = (int) vd1[k[i]];
62 __attribute__((noinline, noclone)) void
66 for (i = 0; i < N; i++)
67 vd2[i] = vd1[k[i] + x];
70 __attribute__((noinline, noclone)) void
74 for (i = 0; i < N; i++)
75 n[i] = (int) vd1[k[i] + x];
78 __attribute__((noinline, noclone)) void
82 for (i = 0; i < N; i++)
86 __attribute__((noinline, noclone)) void
90 for (i = 0; i < N; i++)
91 n[i] = (int) vf1[l[i]];
94 __attribute__((noinline, noclone)) void
98 for (i = 0; i < N; i++)
99 vf2[i] = vf1[l[i] + x];
102 __attribute__((noinline, noclone)) void
106 for (i = 0; i < N; i++)
107 n[i] = (int) vf1[l[i] + x];
110 __attribute__((noinline, noclone)) void
114 for (i = 0; i < N; i++)
118 __attribute__((noinline, noclone)) void
122 for (i = 0; i < N; i++)
123 n[i] = (int) vd1[l[i]];
126 __attribute__((noinline, noclone)) void
130 for (i = 0; i < N; i++)
131 vd2[i] = vd1[l[i] + x];
134 __attribute__((noinline, noclone)) void
138 for (i = 0; i < N; i++)
139 n[i] = (int) vd1[l[i] + x];
147 for (i = 0; i < N + 16; i++)
153 for (i = 0; i < N; i++)
156 k[i] = (i * 731) & (N - 1);
157 l[i] = (i * 657) & (N - 1);
162 for (i = 0; i < N; i++)
163 if (vf2[i] != ((i * 731) & (N - 1)) + 17
164 || n[i] != ((i * 731) & (N - 1)) + 17)
169 for (i = 0; i < N; i++)
170 if (vf2[i] != ((i * 731) & (N - 1)) + 17 + 12
171 || n[i] != ((i * 731) & (N - 1)) + 17 + 14)
176 for (i = 0; i < N; i++)
177 if (vd2[i] != ((i * 731) & (N - 1)) + 19
178 || n[i] != ((i * 731) & (N - 1)) + 19)
183 for (i = 0; i < N; i++)
184 if (vd2[i] != ((i * 731) & (N - 1)) + 19 + 7
185 || n[i] != ((i * 731) & (N - 1)) + 19 + 9)
190 for (i = 0; i < N; i++)
191 if (vf2[i] != ((i * 657) & (N - 1)) + 17
192 || n[i] != ((i * 657) & (N - 1)) + 17)
197 for (i = 0; i < N; i++)
198 if (vf2[i] != ((i * 657) & (N - 1)) + 17 + 2
199 || n[i] != ((i * 657) & (N - 1)) + 17 + 4)
204 for (i = 0; i < N; i++)
205 if (vd2[i] != ((i * 657) & (N - 1)) + 19
206 || n[i] != ((i * 657) & (N - 1)) + 19)
211 for (i = 0; i < N; i++)
212 if (vd2[i] != ((i * 657) & (N - 1)) + 19 + 13
213 || n[i] != ((i * 657) & (N - 1)) + 19 + 15)