1 /* { dg-additional-options "-fopenmp-simd -fno-tree-vectorize" } */
2 /* { dg-additional-options "-mavx" { target avx_runtime } } */
3 /* { dg-final { scan-tree-dump "vectorized 1\[1-2] loops" "vect" { target i?86-*-* x86_64-*-* } } } */
8 volatile int a
, b
, c
, d
, e
, f
, g
, h
;
11 __attribute__((noipa
)) void
15 for (i
= 1; i
<= 10; i
++)
16 for (j
= 1; j
<= 10 * i
; j
++)
19 asm volatile ("" : : : "memory");
21 a
= 1; b
= 11; c
= 1; d
= 0; e
= 1; f
= 10; g
= 1; h
= 1;
22 niters
= 0; i
= -100; j
= -100; x
= -100;
23 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
24 for (i
= 1; i
<= 10; i
++)
25 for (j
= 1; j
<= 10 * i
; j
++)
31 err
|= (k
[i
][j
] != 1);
33 x
= i
* 1024 + (j
& 1023);
36 if (i
!= 11 || j
!= 101 || x
!= 10340 || niters
!= 550 || err
)
38 niters
= 0; i
= -100; j
= -100; x
= -100;
39 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
40 for (i
= a
; i
< b
; i
+= c
)
41 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
47 err
|= (k
[i
][j
] != 2);
49 x
= i
* 1024 + (j
& 1023);
52 if (i
!= 11 || j
!= 101 || x
!= 10340 || niters
!= 550 || err
)
54 for (i
= 1; i
<= 10; i
++)
56 for (j
= 1; j
<= 10 * i
; j
++)
61 for (i
= 0; i
< 11; i
++)
63 for (j
= 0; j
< 101; j
++)
66 for (i
= 0; i
< 10; i
++)
67 for (j
= 0; j
< 10 * i
; j
++)
70 asm volatile ("" : : : "memory");
72 a
= 0; b
= 10; c
= 1; d
= 0; e
= 0; f
= 10; g
= 0; h
= 1;
73 niters
= 0; i
= -100; j
= -100; x
= -100;
74 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
75 for (i
= 0; i
< 10; i
++)
76 for (j
= 0; j
< 10 * i
; j
++)
82 err
|= (k
[i
][j
] != 1);
84 x
= i
* 1024 + (j
& 1023);
87 if (i
!= 10 || j
!= 90 || x
!= 9305 || niters
!= 450 || err
)
89 niters
= 0; i
= -100; j
= -100; x
= -100;
90 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
91 for (i
= a
; i
< b
; i
+= c
)
92 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
98 err
|= (k
[i
][j
] != 2);
100 x
= i
* 1024 + (j
& 1023);
103 if (i
!= 10 || j
!= 90 || x
!= 9305 || niters
!= 450 || err
)
105 for (i
= 0; i
< 10; i
++)
107 for (j
= 0; j
< 10 * i
; j
++)
112 for (i
= 0; i
< 11; i
++)
114 for (j
= 0; j
< 101; j
++)
117 for (i
= 4; i
< 10; i
++)
118 for (j
= -9 + 2 * i
; j
< i
; j
++)
121 asm volatile ("" : : : "memory");
123 a
= 4; b
= 10; c
= 1; d
= 2; e
= -9; f
= 1; g
= 0; h
= 1;
124 niters
= 0; i
= -100; j
= -100; x
= -100;
125 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
126 for (i
= 4; i
< 10; i
++)
127 for (j
= -9 + 2 * i
; j
< i
; j
++)
131 err
|= (j
< -9 + 2 * i
);
133 err
|= (k
[i
][j
+ 1] != 1);
135 x
= i
* 1024 + (j
& 1023);
138 if (/*i != 10 || j != 9 || */x
!= 8199 || niters
!= 15 || err
)
140 niters
= 0; i
= -100; j
= -100; x
= -100;
141 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
142 for (i
= a
; i
< b
; i
+= c
)
143 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
147 err
|= (j
< -9 + 2 * i
);
149 err
|= (k
[i
][j
+ 1] != 2);
151 x
= i
* 1024 + (j
& 1023);
154 if (/*i != 10 || j != 9 || */x
!= 8199 || niters
!= 15 || err
)
156 for (i
= 4; i
< 10; i
++)
157 for (j
= -9 + 2 * i
; j
< i
; j
++)
158 if (k
[i
][j
+ 1] == 3)
162 for (i
= 0; i
< 11; i
++)
164 for (j
= 0; j
< 101; j
++)
167 for (i
= 1; i
< 10; i
+= 2)
168 for (j
= 1; j
< i
+ 1; j
++)
171 asm volatile ("" : : : "memory");
173 a
= 1; b
= 10; c
= 2; d
= 0; e
= 1; f
= 1; g
= 1; h
= 1;
174 niters
= 0; i
= -100; j
= -100; x
= -100;
175 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
176 for (i
= 1; i
< 10; i
+= 2)
177 for (j
= 1; j
< i
+ 1; j
++)
183 err
|= (k
[i
][j
] != 1);
185 x
= i
* 1024 + (j
& 1023);
188 if (i
!= 11 || j
!= 10 || x
!= 9225 || niters
!= 25 || err
)
190 niters
= 0; i
= -100; j
= -100; x
= -100;
191 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
192 for (i
= a
; i
< b
; i
+= c
)
193 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
199 err
|= (k
[i
][j
] != 2);
201 x
= i
* 1024 + (j
& 1023);
204 if (i
!= 11 || j
!= 10 || x
!= 9225 || niters
!= 25 || err
)
206 for (i
= 1; i
< 10; i
+= 2)
208 for (j
= 1; j
< i
+ 1; j
++)
213 for (i
= 0; i
< 11; i
++)
215 for (j
= 0; j
< 101; j
++)
218 for (j
= -11; j
>= -41; j
-= 15)
221 asm volatile ("" : : : "memory");
223 a
= 4; b
= 8; c
= 12; d
= -8; e
= -9; f
= -3; g
= 6; h
= 15;
224 niters
= 0; i
= -100; j
= -100; x
= -100;
225 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
226 for (i
= 4; i
< 8; i
+= 12)
227 for (j
= -8 * i
- 9; j
< i
* -3 + 6; j
+= 15)
232 err
|= (k
[0][-j
] != 1);
234 x
= i
* 1024 + (j
& 1023);
237 if (i
!= 16 || j
!= 4 || x
!= 5109 || niters
!= 3 || err
)
239 niters
= 0; i
= -100; j
= -100; x
= -100;
240 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
241 for (i
= a
; i
< b
; i
+= c
)
242 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
247 err
|= (k
[0][-j
] != 2);
249 x
= i
* 1024 + (j
& 1023);
252 if (i
!= 16 || j
!= 4 || x
!= 5109 || niters
!= 3 || err
)
255 for (j
= -11; j
>= -41; j
-= 15)
261 for (j
= -11; j
>= -41; j
--)
264 for (j
= -34; j
<= -7; j
++)
267 asm volatile ("" : : : "memory");
269 a
= -13; b
= 7; c
= 12; d
= 3; e
= 5; f
= 0; g
= -6; h
= 1;
270 niters
= 0; i
= -100; j
= -100; x
= -100;
271 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
272 for (i
= -13; i
< 7; i
+= 12)
273 for (j
= 3 * i
+ 5; j
< -6; j
++)
278 err
|= (k
[0][-j
] != 1);
280 x
= i
* 1024 + (j
& 1023);
283 if (/*i != 11 || j != 2 || */x
!= -12295 || niters
!= 28 || err
)
285 niters
= 0; i
= -100; j
= -100; x
= -100;
286 #pragma omp simd collapse(2) lastprivate (i, j, x) reduction(+:niters) reduction(|:err)
287 for (i
= a
; i
< b
; i
+= c
)
288 for (j
= d
* i
+ e
; j
< g
+ i
* f
; j
+= h
)
293 err
|= (k
[0][-j
] != 2);
295 x
= i
* 1024 + (j
& 1023);
298 if (/*i != 11 || j != 2 || */x
!= -12295 || niters
!= 28 || err
)
301 for (j
= -34; j
<= -7; j
++)