Small ChangeLog tweak.
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-simd-clone-2.c
blobf89c73a961b764527a46e8cbe3156433132fb4e5
1 /* { dg-require-effective-target vect_simd_clones } */
2 /* { dg-additional-options "-fopenmp-simd" } */
3 /* { dg-additional-options "-mavx" { target avx_runtime } } */
5 #include "tree-vect.h"
7 #ifndef N
8 #define N 1024
9 #endif
11 int array[N] __attribute__((aligned (32)));
13 #pragma omp declare simd simdlen(4) notinbranch aligned(a:16) uniform(a) linear(b)
14 #pragma omp declare simd simdlen(4) notinbranch aligned(a:32) uniform(a) linear(b)
15 #pragma omp declare simd simdlen(8) notinbranch aligned(a:16) uniform(a) linear(b)
16 #pragma omp declare simd simdlen(8) notinbranch aligned(a:32) uniform(a) linear(b)
17 __attribute__((noinline)) void
18 foo (int *a, int b, int c)
20 a[b] = c;
23 __attribute__((noinline, noclone)) void
24 bar ()
26 int i;
27 #pragma omp simd
28 for (i = 0; i < N; ++i)
29 foo (array, i, i * array[i]);
32 __attribute__((noinline, noclone)) void
33 baz ()
35 int i;
36 for (i = 0; i < N; i++)
37 array[i] = 5 * (i & 7);
40 int
41 main ()
43 int i;
44 check_vect ();
45 baz ();
46 bar ();
47 for (i = 0; i < N; i++)
48 if (array[i] != 5 * (i & 7) * i)
49 abort ();
50 return 0;