1 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
2 /* { dg-additional-options "-mavx2" } */
4 typedef float __v4sf
__attribute__((vector_size (16)));
5 typedef int __v4si
__attribute__((vector_size (16)));
6 typedef float __v8sf
__attribute__((vector_size (32)));
7 typedef int __v8si
__attribute__((vector_size (32)));
8 __v4si
f1 (__v4sf
, __v4sf
, float *);
9 __v8si
f2 (__v8sf
, __v8sf
, float *);
10 __v4si
f3 (__v4si
, int, __v4si
);
12 #pragma omp declare variant (f1) match (construct={parallel,for,simd(simdlen(4),notinbranch,uniform(z),aligned(z:4 * sizeof (*z)))})
13 int f4 (float x
, float y
, float *z
);
14 #pragma omp declare variant (f1) match (construct={parallel,for,simd(uniform(w),simdlen(8*2-12),aligned(w:4*sizeof (float)),notinbranch)})
15 int f5 (float u
, float v
, float *w
);
16 #pragma omp declare variant (f1) match (construct={parallel,for,simd(linear(w),notinbranch,simdlen(4),aligned(w:4*sizeof (float)))}) /* { dg-error "'f1' used as a variant with incompatible 'construct' selector sets" "" { target c } } */
17 int f6 (float u
, float v
, float *w
);
18 #pragma omp declare variant (f1) match (construct={parallel,for,simd(uniform(w),notinbranch,simdlen(4),aligned(w:2*sizeof (float)))}) /* { dg-error "'f1' used as a variant with incompatible 'construct' selector sets" "" { target c } } */
19 int f7 (float u
, float v
, float *w
);
20 #pragma omp declare variant (f1) match (construct={parallel,for,simd(uniform(w),notinbranch,simdlen(4),aligned(w))}) /* { dg-error "'f1' used as a variant with incompatible 'construct' selector sets" "" { target c } } */
21 int f8 (float u
, float v
, float *w
);
22 #pragma omp declare variant (f2) match (construct={for,simd(uniform(z),simdlen(8),notinbranch)})
23 int f9 (float x
, float y
, float *z
);
24 #pragma omp declare variant (f2) match (construct={for,simd(notinbranch,simdlen(2+2+4),uniform (q))})
25 int f10 (float x
, float y
, float *q
);
26 #pragma omp declare variant (f2) match (construct={for,simd(linear(z:2),simdlen(8),notinbranch)}) /* { dg-error "'f2' used as a variant with incompatible 'construct' selector sets" "" { target c } } */
27 int f11 (float x
, float y
, float *z
);
28 #pragma omp declare variant (f3) match (construct={simd(simdlen(4),inbranch,linear(y:1))})
29 int f12 (int x
, int y
);
30 #pragma omp declare variant (f3) match (construct={simd(inbranch, simdlen (5-1), linear (q:4-3))})
31 int f13 (int x
, int q
);
32 #pragma omp declare variant (f3) match (construct={simd(inbranch,simdlen(4),linear(q:2))}) /* { dg-error "'f3' used as a variant with incompatible 'construct' selector sets" "" { target c } } */
33 int f14 (int x
, int q
);
34 #pragma omp declare variant (f3) match (construct={simd(inbranch simdlen (4) linear (q:1))}) /* { dg-error "clauses in 'simd' trait should be separated by ','" } */
35 int f15 (int x
, int q
);
36 #pragma omp declare variant (f3) match (construct={simd(inbranch, simdlen (5-1) linear (q:4-3))}) /* { dg-error "clauses in 'simd' trait should be separated by ','" } */
37 int f16 (int x
, int q
);