fortran: Factor the evaluation of MINLOC/MAXLOC's BACK argument
[official-gcc.git] / libgomp / testsuite / libgomp.c / loop-21.c
blob1baf13d84db175ff931ff5f2f353c77c46f20b8a
1 /* { dg-do run } */
3 extern void abort (void);
5 int x, i, j;
6 volatile int a, b, c, d, e, f, g, h;
7 int k[13][27];
9 int
10 main ()
12 int niters;
13 for (i = -4; i < 8; i++)
14 for (j = 3 * i; j > 2 * i; j--)
15 k[i + 5][j + 5] = 1;
16 a = -4; b = 8; c = 1; d = 3; e = 0; f = 2; g = 0; h = -1;
17 niters = 0; i = -100; j = -100; x = -100;
18 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
19 for (i = -4; i < 8; i++)
20 for (j = 3 * i; j > 2 * i; j--)
22 if (i < -4 || i >= 8 || j > 3 * i || j <= i * 2 || k[i + 5][j + 5] != 1)
23 abort ();
24 k[i + 5][j + 5]++;
25 x = i * 1024 + (j & 1023);
26 niters++;
28 if (i != 8 || j != 14 || x != 7183 || niters != 28)
29 abort ();
30 niters = 0; i = -100; j = -100; x = -100;
31 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
32 for (i = a; i < b; i += c)
33 for (j = d * i + e; j > g + i * f; j += h)
35 if (i < -4 || i >= 8 || j > 3 * i || j <= i * 2 || k[i + 5][j + 5] != 2)
36 abort ();
37 k[i + 5][j + 5]++;
38 x = i * 1024 + (j & 1023);
39 niters++;
41 if (i != 8 || j != 14 || x != 7183 || niters != 28)
42 abort ();
43 for (int i = -4; i < 8; i++)
44 for (int j = 3 * i; j > 2 * i; j--)
45 if (k[i + 5][j + 5] == 3)
46 k[i + 5][j + 5] = 0;
47 else
48 abort ();
49 for (i = -2; i < 4; i++)
50 for (j = -2 * i + 3; j > -3; j -= 2)
51 k[i + 5][j + 5] = 1;
52 a = -2; b = 4; c = 1; d = -2; e = 3; f = 0; g = -3; h = -2;
53 niters = 0; i = -100; j = -100; x = -100;
54 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
55 for (i = -2; i < 4; i++)
56 for (j = -2 * i + 3; j > -3; j -= 2)
58 if (i < -2 || i >= 4 || j <= -3 || j > -2 * i + 3 || k[i + 5][j + 5] != 1)
59 abort ();
60 k[i + 5][j + 5]++;
61 x = i * 1024 + (j & 1023);
62 niters++;
64 if (/* i != 4 || j != -3 || */x != 3071 || niters != 15)
65 abort ();
66 niters = 0; i = -100; j = -100; x = -100;
67 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
68 for (i = a; i < b; i += c)
69 for (j = d * i + e; j > g + i * f; j += h)
71 if (i < -2 || i >= 4 || j <= -3 || j > -2 * i + 3 || k[i + 5][j + 5] != 2)
72 abort ();
73 k[i + 5][j + 5]++;
74 x = i * 1024 + (j & 1023);
75 niters++;
77 if (/*i != 4 || j != -3 || */x != 3071 || niters != 15)
78 abort ();
79 for (i = -2; i < 4; i++)
80 for (j = -2 * i + 3; j > -3; j -= 2)
81 if (k[i + 5][j + 5] == 3)
82 k[i + 5][j + 5] = 0;
83 else
84 abort ();
85 for (i = 3; i > -3; i--)
86 for (j = -2 * i + 7; j > 2 * i + 1; j--)
87 k[i + 5][j + 5] = 1;
88 a = 3; b = -3; c = -1; d = -2; e = 7; f = 2; g = 1; h = -1;
89 niters = 0; i = -100; j = -100; x = -100;
90 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
91 for (i = 3; i > -3; i--)
92 for (j = -2 * i + 7; j > 2 * i + 1; j--)
94 if (i <= -3 || i > 3 || j <= 2 * i + 1 || j > -2 * i + 7 || k[i + 5][j + 5] != 1)
95 abort ();
96 k[i + 5][j + 5]++;
97 x = i * 1024 + (j & 1023);
98 niters++;
100 if (i != -3 || j != -3 || x != -1026 || niters != 32)
101 abort ();
102 niters = 0; i = -100; j = -100; x = -100;
103 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
104 for (i = a; i > b; i += c)
105 for (j = d * i + e; j > g + i * f; j += h)
107 if (i <= -3 || i > 3 || j <= 2 * i + 1 || j > -2 * i + 7 || k[i + 5][j + 5] != 2)
108 abort ();
109 k[i + 5][j + 5]++;
110 x = i * 1024 + (j & 1023);
111 niters++;
113 if (i != -3 || j != -3 || x != -1026 || niters != 32)
114 abort ();
115 for (i = 3; i > -3; i--)
116 for (j = -2 * i + 7; j > 2 * i + 1; j--)
117 if (k[i + 5][j + 5] == 3)
118 k[i + 5][j + 5] = 0;
119 else
120 abort ();
121 for (i = 3; i > -3; i--)
122 for (j = 2 * i + 7; j > -2 * i + 1; j--)
123 k[i + 5][j + 5] = 1;
124 a = 3; b = -3; c = -1; d = 2; e = 7; f = -2; g = 1; h = -1;
125 niters = 0; i = -100; j = -100; x = -100;
126 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
127 for (i = 3; i > -3; i--)
128 for (j = 2 * i + 7; j > -2 * i + 1; j--)
130 if (i <= -3 || i > 3 || j <= -2 * i + 1 || j > 2 * i + 7 || k[i + 5][j + 5] != 1)
131 abort ();
132 k[i + 5][j + 5]++;
133 x = i * 1024 + (j & 1023);
134 niters++;
136 if (/*i != -3 || j != 3 || */x != -1020 || niters != 50)
137 abort ();
138 niters = 0; i = -100; j = -100; x = -100;
139 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
140 for (i = a; i > b; i += c)
141 for (j = d * i + e; j > g + i * f; j += h)
143 if (i <= -3 || i > 3 || j <= -2 * i + 1 || j > 2 * i + 7 || k[i + 5][j + 5] != 2)
144 abort ();
145 k[i + 5][j + 5]++;
146 x = i * 1024 + (j & 1023);
147 niters++;
149 if (/*i != -3 || j != 3 || */x != -1020 || niters != 50)
150 abort ();
151 for (i = 3; i > -3; i--)
152 for (j = 2 * i + 7; j > -2 * i + 1; j--)
153 if (k[i + 5][j + 5] == 3)
154 k[i + 5][j + 5] = 0;
155 else
156 abort ();
157 for (i = 6; i > -6; i--)
158 for (j = 2 * i + 7; j <= -2 * i + 1; j++)
159 k[i + 5][j + 5] = 1;
160 a = 6; b = -6; c = -1; d = 2; e = 7; f = -2; g = 2; h = 1;
161 niters = 0; i = -100; j = -100; x = -100;
162 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
163 for (i = 6; i > -6; i--)
164 for (j = 2 * i + 7; j <= -2 * i + 1; j++)
166 if (i <= -6 || i > 6 || j < 2 * i + 7 || j >= -2 * i + 2 || k[i + 5][j + 5] != 1)
167 abort ();
168 k[i + 5][j + 5]++;
169 x = i * 1024 + (j & 1023);
170 niters++;
172 if (i != -6 || j != 12 || x != -5109 || niters != 36)
173 abort ();
174 niters = 0; i = -100; j = -100; x = -100;
175 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
176 for (i = a; i > b; i += c)
177 for (j = d * i + e; j < g + i * f; j += h)
179 if (i <= -6 || i > 6 || j < 2 * i + 7 || j >= -2 * i + 2 || k[i + 5][j + 5] != 2)
180 abort ();
181 k[i + 5][j + 5]++;
182 x = i * 1024 + (j & 1023);
183 niters++;
185 if (i != -6 || j != 12 || x != -5109 || niters != 36)
186 abort ();
187 for (i = 6; i > -6; i--)
188 for (j = 2 * i + 7; j <= -2 * i + 1; j++)
189 if (k[i + 5][j + 5] == 3)
190 k[i + 5][j + 5] = 0;
191 else
192 abort ();
193 for (i = 6; i > -6; i -= 2)
194 for (j = -2 * i + 7; j <= 2 * i + 1; j++)
195 k[i + 5][j + 5] = 1;
196 a = 6; b = -6; c = -2; d = -2; e = 7; f = 2; g = 2; h = 1;
197 niters = 0; i = -100; j = -100; x = -100;
198 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
199 for (i = 6; i > -6; i -= 2)
200 for (j = -2 * i + 7; j <= 2 * i + 1; j++)
202 if (i <= -6 || i > 6 || j < -2 * i + 7 || j >= 2 * i + 2 || k[i + 5][j + 5] != 1)
203 abort ();
204 k[i + 5][j + 5]++;
205 x = i * 1024 + (j & 1023);
206 niters++;
208 if (/*i != -6 || j != 15 || */x != 2053 || niters != 33)
209 abort ();
210 niters = 0; i = -100; j = -100; x = -100;
211 #pragma omp parallel for collapse(2) lastprivate (i, j, x) reduction(+:niters)
212 for (i = a; i > b; i += c)
213 for (j = d * i + e; j < g + i * f; j += h)
215 if (i <= -6 || i > 6 || j < -2 * i + 7 || j >= 2 * i + 2 || k[i + 5][j + 5] != 2)
216 abort ();
217 k[i + 5][j + 5]++;
218 x = i * 1024 + (j & 1023);
219 niters++;
221 if (/*i != -6 || j != 15 || */x != 2053 || niters != 33)
222 abort ();
223 for (i = 6; i > -6; i -= 2)
224 for (j = -2 * i + 7; j <= 2 * i + 1; j++)
225 if (k[i + 5][j + 5] == 3)
226 k[i + 5][j + 5] = 0;
227 else
228 abort ();
229 return 0;