1 /* { dg-require-effective-target vect_simd_clones } */
2 /* { dg-additional-options "-fopenmp-simd" } */
3 /* { dg-additional-options "-mavx" { target avx_runtime } } */
16 #pragma omp declare simd simdlen(2) notinbranch
18 #pragma omp declare simd simdlen(8) notinbranch
20 __attribute__((noinline
)) int
21 foo (long int a
, int b
, int c
)
22 /* { dg-warning {unsupported simdlen 8 \(amdgcn\)} "" { target amdgcn*-*-* } .-1 } */
28 #pragma omp declare simd simdlen(2) notinbranch
30 #pragma omp declare simd simdlen(8) notinbranch
32 __attribute__((noinline
)) long int
33 bar (int a
, int b
, long int c
)
34 /* { dg-warning {unsupported simdlen 8 \(amdgcn\)} "" { target amdgcn*-*-* } .-1 } */
39 __attribute__((noinline
)) void
44 for (i
= 0; i
< N
; i
++)
45 a
[i
] = foo (c
[i
], a
[i
], b
[i
]) + 6;
47 for (i
= 0; i
< N
; i
++)
48 c
[i
] = bar (a
[i
], b
[i
], c
[i
]) * 2;
51 __attribute__((noinline
)) void
56 for (i
= 0; i
< N
; i
++)
58 a
[i
] = foo (c
[i
], a
[i
], b
[i
]) + 6;
62 for (i
= 0; i
< N
; i
++)
64 c
[i
] = bar (a
[i
], b
[i
], c
[i
]) * 2;
69 __attribute__((noinline
)) void
73 for (i
= 0; i
< N
; i
++)
90 for (i
= 0; i
< N
; i
++)
91 if (a
[i
] != i
* 2 + 23 + (i
% 37) + (i
& 63)
92 || b
[i
] != 17 + (i
% 37)
93 || c
[i
] != i
* 4 + 80 + 4 * (i
% 37) + 4 * (i
& 63))
98 for (i
= 0; i
< N
; i
++)
99 if (a
[i
] != i
* 2 + 23 + (i
% 37) + (i
& 63)
100 || b
[i
] != 17 + (i
% 37)
101 || c
[i
] != i
* 4 + 80 + 4 * (i
% 37) + 4 * (i
& 63)
102 || d
[i
] != ((unsigned char) (17 + i
)) / 2)