Merge from trunk
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-simd-clone-5.c
blob1d2b067a7d5281c756ea7ae3ab401cdde66fca58
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 d[N], e[N];
13 #pragma omp declare simd simdlen(4) notinbranch uniform(b) linear(c:3)
14 __attribute__((noinline)) long long int
15 foo (int a, int b, int c)
17 return a + b + c;
20 __attribute__((noinline, noclone)) void
21 bar ()
23 int i;
24 #pragma omp simd
25 for (i = 0; i < N; ++i)
27 d[i] = foo (i, 123, i * 3);
28 e[i] = e[i] + i;
32 int
33 main ()
35 int i;
36 check_vect ();
37 bar ();
38 for (i = 0; i < N; i++)
39 if (d[i] != i * 4 + 123 || e[i] != i)
40 abort ();
41 return 0;
44 /* { dg-final { cleanup-tree-dump "vect" } } */