2 /* { dg-options "-O2 -fopenmp-simd" } */
3 /* { dg-additional-options "-msse2" { target sse2_runtime } } */
4 /* { dg-additional-options "-mavx" { target avx_runtime } } */
16 bar (unsigned char *a
, int i
, int safelen
)
21 for (j
= i
- safelen
- 32; j
< i
; j
++)
22 if (j
>= 0 && a
[j
] != 2)
24 if (j
<= i
- safelen
|| a
[j
] != 1)
26 for (k
= j
; k
< i
+ safelen
+ 32; k
++)
27 if (k
>= N
|| a
[k
] != 1)
29 if (k
<= i
|| k
> j
+ safelen
)
31 if (k
< N
&& a
[k
] != 0)
33 for (; k
< i
+ safelen
+ 32; k
++)
34 if (k
< N
&& a
[k
] != 0)
39 foo (unsigned char *a
, int i
)
41 #pragma omp ordered simd
48 unsigned char a
[N
], b
[N
];
51 for (i
= 0; i
< N
; i
++)
53 #pragma omp simd safelen (64)
54 for (i
= 0; i
< N
; i
++)
61 for (i
= 0; i
< N
; i
++)
67 #pragma omp simd safelen (32)
68 for (i
= 0; i
< N
; i
++)
71 #pragma omp ordered simd
75 for (i
= 0; i
< N
; i
++)
78 #pragma omp simd safelen (32)
79 for (i
= 1; i
< N
; i
++)
81 #pragma omp ordered simd
84 #pragma omp ordered simd
87 for (i
= 0; i
< N
; i
++)
88 if (a
[i
] != (unsigned char) (2 + 3 * i
) || b
[i
] != (unsigned char) i
)