111
|
1 /* PR tree-optimization/59591 */
|
|
2 /* { dg-additional-options "-fopenmp-simd" } */
|
|
3
|
|
4 #ifndef CHECK_H
|
|
5 #include "tree-vect.h"
|
|
6 #endif
|
|
7
|
|
8 extern void abort (void);
|
|
9
|
|
10 int p[256], q[256], r[256], t[256];
|
|
11
|
|
12 __attribute__((noinline, noclone)) void
|
|
13 foo (void)
|
|
14 {
|
|
15 int i;
|
|
16 #pragma omp simd safelen(64)
|
|
17 for (i = 0; i < 256; i++)
|
|
18 if (r[i] > 32)
|
|
19 t[i] = p[q[i] * 3L + 2L];
|
|
20 }
|
|
21
|
|
22 __attribute__((noinline, noclone)) void
|
|
23 bar (void)
|
|
24 {
|
|
25 int i;
|
|
26 for (i = 0; i < 256; i++)
|
|
27 {
|
|
28 r[i] = ((i >> 2) & (1 << (i & 3))) ? 32 + i : 32 - i;
|
|
29 q[i] = r[i] > 32 ? ((i * 7) % 84) : 99 + i;
|
|
30 p[i] = i * 11;
|
|
31 t[i] = i * 13;
|
|
32 }
|
|
33 foo ();
|
|
34 for (i = 0; i < 256; i++)
|
|
35 if ((i >> 2) & (1 << (i & 3)))
|
|
36 {
|
|
37 if (t[i] != (((i * 7) % 84) * 3 + 2) * 11)
|
|
38 abort ();
|
|
39 }
|
|
40 else if (t[i] != i * 13)
|
|
41 abort ();
|
|
42 }
|
|
43
|
|
44 #ifndef CHECK_H
|
|
45 int
|
|
46 main ()
|
|
47 {
|
|
48 check_vect ();
|
|
49 bar ();
|
|
50 return 0;
|
|
51 }
|
|
52 #endif
|
|
53
|