2 /* { dg-options "-O2" } */
3 /* { dg-additional-options "-msse2" { target sse2_runtime } } */
4 /* { dg-additional-options "-mavx" { target avx_runtime } } */
7 foo (int *b
, int *i
, int *j
, int x
)
9 *b
= *b
+ x
+ (*i
- *i
) + (*j
- *j
);
17 #pragma omp simd linear(b:2) reduction(+:c)
18 for (i
= 0; i
< 64; i
++)
20 c
= c
+ (b
!= 7 + 2 * i
);
23 if (c
|| i
!= 64 || b
!= 7 + 64 * 2)
26 #pragma omp simd linear(b:3) reduction(+:c)
27 for (i
= 0; i
< 64; i
+= 4)
29 c
= c
+ (b
!= 7 + i
/ 4 * 3);
32 if (c
|| i
!= 64 || b
!= 7 + 16 * 3)
35 #pragma omp simd linear(i) linear(b:2) reduction(+:c)
36 for (i
= 0; i
< 64; i
++)
38 c
= c
+ (b
!= 7 + 2 * i
);
41 if (c
|| i
!= 64 || b
!= 7 + 64 * 2)
44 #pragma omp simd linear(i:4) linear(b:3) reduction(+:c)
45 for (i
= 0; i
< 64; i
+= 4)
47 c
= c
+ (b
!= 7 + i
/ 4 * 3);
50 if (c
|| i
!= 64 || b
!= 7 + 16 * 3)
53 #pragma omp simd collapse (2) linear(b:2) reduction(+:c)
54 for (i
= 0; i
< 8; i
++)
55 for (j
= 0; j
< 8; j
++)
57 c
= c
+ (b
!= 7 + 2 * j
+ 2 * 8 * i
);
60 if (c
|| i
!= 8 || j
!= 8 || b
!= 7 + 64 * 2)
63 #pragma omp simd collapse (2) lastprivate (i, j) linear(b:2) reduction(+:c)
64 for (i
= 0; i
< 8; i
++)
65 for (j
= 0; j
< 8; j
++)
67 c
= c
+ (b
!= 7 + 2 * j
+ 2 * 8 * i
);
70 if (c
|| i
!= 8 || j
!= 8 || b
!= 7 + 64 * 2)
73 #pragma omp parallel for simd schedule (static, 4) linear(b:2) reduction(+:c)
74 for (i
= 0; i
< 64; i
++)
76 c
= c
+ (b
!= 7 + 2 * i
);
79 if (c
|| i
!= 64 || b
!= 7 + 64 * 2)
82 #pragma omp parallel for simd schedule (static, 4) linear(b:3) reduction(+:c)
83 for (i
= 0; i
< 64; i
+= 4)
85 c
= c
+ (b
!= 7 + i
/ 4 * 3);
88 if (c
|| i
!= 64 || b
!= 7 + 16 * 3)
91 #pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c)
92 for (i
= 0; i
< 64; i
++)
94 c
= c
+ (b
!= 7 + 2 * i
);
97 if (c
|| i
!= 64 || b
!= 7 + 64 * 2)
100 #pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c)
101 for (i
= 0; i
< 64; i
+= 4)
103 c
= c
+ (b
!= 7 + i
/ 4 * 3);
106 if (c
|| i
!= 64 || b
!= 7 + 16 * 3)
109 #pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
110 for (i
= 0; i
< 8; i
++)
111 for (j
= 0; j
< 8; j
++)
113 c
= c
+ (b
!= 7 + 2 * j
+ 2 * 8 * i
);
116 if (c
|| i
!= 8 || j
!= 8 || b
!= 7 + 64 * 2)
119 #pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
120 for (i
= 0; i
< 8; i
++)
121 for (j
= 0; j
< 8; j
++)
123 c
= c
+ (b
!= 7 + 2 * j
+ 2 * 8 * i
);
126 if (c
|| i
!= 8 || j
!= 8 || b
!= 7 + 64 * 2)