Daily bump.
[official-gcc.git] / libgomp / testsuite / libgomp.c / for-2.h
blob0bd116c5aec1a488b1a0cfaf7d8f8b66e5d14ab2
1 #ifndef VARS
2 #define VARS
3 int a[1500];
4 float b[10][15][10];
5 __attribute__((noreturn)) void
6 noreturn (void)
8 for (;;);
10 #endif
11 #ifndef SC
12 #define SC
13 #endif
14 #ifndef OMPTGT
15 #define OMPTGT
16 #endif
17 #ifndef OMPTO
18 #define OMPTO(v) do {} while (0)
19 #endif
20 #ifndef OMPFROM
21 #define OMPFROM(v) do {} while (0)
22 #endif
24 __attribute__((noinline, noclone)) void
25 N(f0) (void)
27 int i;
28 OMPTGT
29 #pragma omp F S
30 for (i = 0; i < 1500; i++)
31 a[i] += 2;
34 __attribute__((noinline, noclone)) void
35 N(f1) (void)
37 OMPTGT
38 #pragma omp F S
39 for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2)
40 a[(i - __INT_MAX__) >> 1] -= 2;
43 __attribute__((noinline, noclone)) void
44 N(f2) (void)
46 unsigned long long i;
47 OMPTGT
48 #pragma omp F S
49 for (i = __LONG_LONG_MAX__ + 4500ULL - 27;
50 i > __LONG_LONG_MAX__ - 27ULL; i -= 3)
51 a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4;
54 __attribute__((noinline, noclone)) void
55 N(f3) (long long n1, long long n2, long long s3)
57 OMPTGT
58 #pragma omp F S
59 for (long long i = n1 + 23; i > n2 - 25; i -= s3)
60 a[i + 48] += 7;
63 __attribute__((noinline, noclone)) void
64 N(f4) (void)
66 unsigned int i;
67 OMPTGT
68 #pragma omp F S
69 for (i = 30; i < 20; i += 2)
70 a[i] += 10;
73 __attribute__((noinline, noclone)) void
74 N(f5) (int n11, int n12, int n21, int n22, int n31, int n32,
75 int s1, int s2, int s3)
77 SC int v1, v2, v3;
78 OMPTGT
79 #pragma omp F S collapse(3)
80 for (v1 = n11; v1 < n12; v1 += s1)
81 for (v2 = n21; v2 < n22; v2 += s2)
82 for (v3 = n31; v3 < n32; v3 += s3)
83 b[v1][v2][v3] += 2.5;
86 __attribute__((noinline, noclone)) void
87 N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32,
88 int s1, int s2, long long int s3)
90 SC int v1, v2;
91 SC long long v3;
92 OMPTGT
93 #pragma omp F S collapse(3)
94 for (v1 = n11; v1 > n12; v1 += s1)
95 for (v2 = n21; v2 > n22; v2 += s2)
96 for (v3 = n31; v3 > n32; v3 += s3)
97 b[v1][v2 / 2][v3] -= 4.5;
100 __attribute__((noinline, noclone)) void
101 N(f7) (void)
103 SC unsigned int v1, v3;
104 SC unsigned long long v2;
105 OMPTGT
106 #pragma omp F S collapse(3)
107 for (v1 = 0; v1 < 20; v1 += 2)
108 for (v2 = __LONG_LONG_MAX__ + 16ULL;
109 v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3)
110 for (v3 = 10; v3 > 0; v3--)
111 b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5;
114 __attribute__((noinline, noclone)) void
115 N(f8) (void)
117 SC long long v1, v2, v3;
118 OMPTGT
119 #pragma omp F S collapse(3)
120 for (v1 = 0; v1 < 20; v1 += 2)
121 for (v2 = 30; v2 < 20; v2++)
122 for (v3 = 10; v3 < 0; v3--)
123 b[v1][v2][v3] += 5.5;
126 __attribute__((noinline, noclone)) void
127 N(f9) (void)
129 int i;
130 OMPTGT
131 #pragma omp F S
132 for (i = 20; i < 10; i++)
134 a[i] += 2;
135 noreturn ();
136 a[i] -= 4;
140 __attribute__((noinline, noclone)) void
141 N(f10) (void)
143 SC int i;
144 OMPTGT
145 #pragma omp F S collapse(3)
146 for (i = 0; i < 10; i++)
147 for (int j = 10; j < 8; j++)
148 for (long k = -10; k < 10; k++)
150 b[i][j][k] += 4;
151 noreturn ();
152 b[i][j][k] -= 8;
156 __attribute__((noinline, noclone)) void
157 N(f11) (int n)
159 int i;
160 OMPTGT
161 #pragma omp F S
162 for (i = 20; i < n; i++)
164 a[i] += 8;
165 noreturn ();
166 a[i] -= 16;
170 __attribute__((noinline, noclone)) void
171 N(f12) (int n)
173 SC int i;
174 OMPTGT
175 #pragma omp F S collapse(3)
176 for (i = 0; i < 10; i++)
177 for (int j = n; j < 8; j++)
178 for (long k = -10; k < 10; k++)
180 b[i][j][k] += 16;
181 noreturn ();
182 b[i][j][k] -= 32;
186 __attribute__((noinline, noclone)) void
187 N(f13) (void)
189 int *i;
190 OMPTGT
191 #pragma omp F S
192 for (i = a; i < &a[1500]; i++)
193 i[0] += 2;
196 __attribute__((noinline, noclone)) void
197 N(f14) (void)
199 SC float *i;
200 OMPTGT
201 #pragma omp F S collapse(3)
202 for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
203 for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
204 for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
205 b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
206 -= 3.5;
209 __attribute__((noinline, noclone)) int
210 N(test) (void)
212 int i, j, k;
213 for (i = 0; i < 1500; i++)
214 a[i] = i - 25;
215 OMPTO (a);
216 N(f0) ();
217 OMPFROM (a);
218 for (i = 0; i < 1500; i++)
219 if (a[i] != i - 23)
220 return 1;
221 N(f1) ();
222 OMPFROM (a);
223 for (i = 0; i < 1500; i++)
224 if (a[i] != i - 25)
225 return 1;
226 N(f2) ();
227 OMPFROM (a);
228 for (i = 0; i < 1500; i++)
229 if (a[i] != i - 29)
230 return 1;
231 N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL);
232 OMPFROM (a);
233 for (i = 0; i < 1500; i++)
234 if (a[i] != i - 22)
235 return 1;
236 N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL);
237 OMPFROM (a);
238 for (i = 0; i < 1500; i++)
239 if (a[i] != i - 22)
240 return 1;
241 N(f4) ();
242 OMPFROM (a);
243 for (i = 0; i < 1500; i++)
244 if (a[i] != i - 22)
245 return 1;
246 for (i = 0; i < 10; i++)
247 for (j = 0; j < 15; j++)
248 for (k = 0; k < 10; k++)
249 b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
250 OMPTO (b);
251 N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1);
252 OMPFROM (b);
253 for (i = 0; i < 10; i++)
254 for (j = 0; j < 15; j++)
255 for (k = 0; k < 10; k++)
256 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
257 return 1;
258 N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6);
259 OMPFROM (b);
260 for (i = 0; i < 10; i++)
261 for (j = 0; j < 15; j++)
262 for (k = 0; k < 10; k++)
263 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
264 return 1;
265 N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1);
266 OMPFROM (b);
267 for (i = 0; i < 10; i++)
268 for (j = 0; j < 15; j++)
269 for (k = 0; k < 10; k++)
270 if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
271 return 1;
272 N(f7) ();
273 OMPFROM (b);
274 for (i = 0; i < 10; i++)
275 for (j = 0; j < 15; j++)
276 for (k = 0; k < 10; k++)
277 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
278 return 1;
279 N(f8) ();
280 OMPFROM (b);
281 for (i = 0; i < 10; i++)
282 for (j = 0; j < 15; j++)
283 for (k = 0; k < 10; k++)
284 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
285 return 1;
286 N(f9) ();
287 N(f10) ();
288 N(f11) (10);
289 N(f12) (12);
290 OMPFROM (a);
291 OMPFROM (b);
292 for (i = 0; i < 1500; i++)
293 if (a[i] != i - 22)
294 return 1;
295 for (i = 0; i < 10; i++)
296 for (j = 0; j < 15; j++)
297 for (k = 0; k < 10; k++)
298 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
299 return 1;
300 N(f13) ();
301 N(f14) ();
302 OMPFROM (a);
303 OMPFROM (b);
304 for (i = 0; i < 1500; i++)
305 if (a[i] != i - 20)
306 return 1;
307 for (i = 0; i < 10; i++)
308 for (j = 0; j < 15; j++)
309 for (k = 0; k < 10; k++)
310 if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k)
311 return 1;
312 return 0;