1 #ifndef VARS
2 #define VARS
3 int a[1500];
4 float b[10][15][10];
5 __attribute__((noreturn)) void
6 noreturn (void)
7 {
8 for (;;);
9 }
10 #endif
11 #ifndef SC
12 #define SC
13 #endif
14 #ifndef OMPTGT
15 #define OMPTGT
16 #endif
17 #ifndef OMPTEAMS
18 #define OMPTEAMS
19 #endif
20 #ifndef OMPTO
21 #define OMPTO(v) do {} while (0)
22 #endif
23 #ifndef OMPFROM
24 #define OMPFROM(v) do {} while (0)
25 #endif
26
27 #ifndef CONDNE
28 __attribute__((noinline, noclone)) void
29 N(f0) (void)
30 {
31 int i;
32 OMPTGT
33 #pragma omp F S
34 for (i = 0; i < 1500; i++)
35 a[i] += 2;
36 }
37
38 __attribute__((noinline, noclone)) void
39 N(f1) (void)
40 {
41 OMPTGT
42 #pragma omp F S
43 for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2)
44 a[(i - __INT_MAX__) >> 1] -= 2;
45 }
46
47 __attribute__((noinline, noclone)) void
48 N(f2) (void)
49 {
50 unsigned long long i;
51 OMPTGT
52 #pragma omp F S
53 for (i = __LONG_LONG_MAX__ + 4500ULL - 27;
54 i > __LONG_LONG_MAX__ - 27ULL; i -= 3)
55 a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4;
56 }
57
58 __attribute__((noinline, noclone)) void
59 N(f3) (long long n1, long long n2, long long s3)
60 {
61 OMPTGT
62 #pragma omp F S
63 for (long long i = n1 + 23; i > n2 - 25; i -= s3)
64 a[i + 48] += 7;
65 }
66
67 __attribute__((noinline, noclone)) void
68 N(f4) (void)
69 {
70 unsigned int i;
71 OMPTGT
72 #pragma omp F S
73 for (i = 30; i < 20; i += 2)
74 a[i] += 10;
75 }
76
77 __attribute__((noinline, noclone)) void
78 N(f5) (int n11, int n12, int n21, int n22, int n31, int n32,
79 int s1, int s2, int s3)
80 {
81 SC int v1, v2, v3;
82 OMPTGT
83 #pragma omp F S collapse(3)
84 for (v1 = n11; v1 < n12; v1 += s1)
85 for (v2 = n21; v2 < n22; v2 += s2)
86 for (v3 = n31; v3 < n32; v3 += s3)
87 b[v1][v2][v3] += 2.5;
88 }
89
90 __attribute__((noinline, noclone)) void
91 N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32,
92 int s1, int s2, long long int s3)
93 {
94 SC int v1, v2;
95 SC long long v3;
96 OMPTGT
97 #pragma omp F S collapse(3)
98 for (v1 = n11; v1 > n12; v1 += s1)
99 for (v2 = n21; v2 > n22; v2 += s2)
100 for (v3 = n31; v3 > n32; v3 += s3)
101 b[v1][v2 / 2][v3] -= 4.5;
102 }
103
104 __attribute__((noinline, noclone)) void
105 N(f7) (void)
106 {
107 SC unsigned int v1, v3;
108 SC unsigned long long v2;
109 OMPTGT
110 #pragma omp F S collapse(3)
111 for (v1 = 0; v1 < 20; v1 += 2)
112 for (v2 = __LONG_LONG_MAX__ + 16ULL;
113 v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3)
114 for (v3 = 10; v3 > 0; v3--)
115 b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5;
116 }
117
118 __attribute__((noinline, noclone)) void
119 N(f8) (void)
120 {
121 SC long long v1, v2, v3;
122 OMPTGT
123 #pragma omp F S collapse(3)
124 for (v1 = 0; v1 < 20; v1 += 2)
125 for (v2 = 30; v2 < 20; v2++)
126 for (v3 = 10; v3 < 0; v3--)
127 b[v1][v2][v3] += 5.5;
128 }
129
130 __attribute__((noinline, noclone)) void
131 N(f9) (void)
132 {
133 int i;
134 OMPTGT
135 #pragma omp F S
136 for (i = 20; i < 10; i++)
137 {
138 a[i] += 2;
139 noreturn ();
140 a[i] -= 4;
141 }
142 }
143
144 __attribute__((noinline, noclone)) void
145 N(f10) (void)
146 {
147 SC int i;
148 OMPTGT
149 #pragma omp F S collapse(3)
150 for (i = 0; i < 10; i++)
151 for (int j = 10; j < 8; j++)
152 for (long k = -10; k < 10; k++)
153 {
154 b[i][j][k] += 4;
155 noreturn ();
156 b[i][j][k] -= 8;
157 }
158 }
159
160 __attribute__((noinline, noclone)) void
161 N(f11) (int n)
162 {
163 int i;
164 OMPTGT
165 #pragma omp F S
166 for (i = 20; i < n; i++)
167 {
168 a[i] += 8;
169 noreturn ();
170 a[i] -= 16;
171 }
172 }
173
174 __attribute__((noinline, noclone)) void
175 N(f12) (int n)
176 {
177 SC int i;
178 OMPTGT
179 #pragma omp F S collapse(3)
180 for (i = 0; i < 10; i++)
181 for (int j = n; j < 8; j++)
182 for (long k = -10; k < 10; k++)
183 {
184 b[i][j][k] += 16;
185 noreturn ();
186 b[i][j][k] -= 32;
187 }
188 }
189
190 __attribute__((noinline, noclone)) void
191 N(f13) (void)
192 {
193 int *i;
194 OMPTGT
195 #pragma omp F S
196 for (i = a; i < &a[1500]; i++)
197 i[0] += 2;
198 }
199
200 __attribute__((noinline, noclone)) void
201 N(f14) (void)
202 {
203 SC float *i;
204 OMPTGT
205 #pragma omp F S collapse(3)
206 for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
207 for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
208 for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
209 b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
210 -= 3.5;
211 }
212
213 __attribute__((noinline, noclone)) int
214 N(test) (void)
215 {
216 int i, j, k;
217 for (i = 0; i < 1500; i++)
218 a[i] = i - 25;
219 OMPTO (a);
220 OMPTEAMS
221 N(f0) ();
222 OMPFROM (a);
223 for (i = 0; i < 1500; i++)
224 if (a[i] != i - 23)
225 return 1;
226 OMPTEAMS
227 N(f1) ();
228 OMPFROM (a);
229 for (i = 0; i < 1500; i++)
230 if (a[i] != i - 25)
231 return 1;
232 OMPTEAMS
233 N(f2) ();
234 OMPFROM (a);
235 for (i = 0; i < 1500; i++)
236 if (a[i] != i - 29)
237 return 1;
238 OMPTEAMS
239 N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL);
240 OMPFROM (a);
241 for (i = 0; i < 1500; i++)
242 if (a[i] != i - 22)
243 return 1;
244 OMPTEAMS
245 N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL);
246 OMPFROM (a);
247 for (i = 0; i < 1500; i++)
248 if (a[i] != i - 22)
249 return 1;
250 OMPTEAMS
251 N(f4) ();
252 OMPFROM (a);
253 for (i = 0; i < 1500; i++)
254 if (a[i] != i - 22)
255 return 1;
256 for (i = 0; i < 10; i++)
257 for (j = 0; j < 15; j++)
258 for (k = 0; k < 10; k++)
259 b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
260 OMPTO (b);
261 OMPTEAMS
262 N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1);
263 OMPFROM (b);
264 for (i = 0; i < 10; i++)
265 for (j = 0; j < 15; j++)
266 for (k = 0; k < 10; k++)
267 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
268 return 1;
269 OMPTEAMS
270 N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6);
271 OMPFROM (b);
272 for (i = 0; i < 10; i++)
273 for (j = 0; j < 15; j++)
274 for (k = 0; k < 10; k++)
275 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
276 return 1;
277 OMPTEAMS
278 N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1);
279 OMPFROM (b);
280 for (i = 0; i < 10; i++)
281 for (j = 0; j < 15; j++)
282 for (k = 0; k < 10; k++)
283 if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
284 return 1;
285 OMPTEAMS
286 N(f7) ();
287 OMPFROM (b);
288 for (i = 0; i < 10; i++)
289 for (j = 0; j < 15; j++)
290 for (k = 0; k < 10; k++)
291 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
292 return 1;
293 OMPTEAMS
294 N(f8) ();
295 OMPFROM (b);
296 for (i = 0; i < 10; i++)
297 for (j = 0; j < 15; j++)
298 for (k = 0; k < 10; k++)
299 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
300 return 1;
301 OMPTEAMS
302 N(f9) ();
303 OMPTEAMS
304 N(f10) ();
305 OMPTEAMS
306 N(f11) (10);
307 OMPTEAMS
308 N(f12) (12);
309 OMPFROM (a);
310 OMPFROM (b);
311 for (i = 0; i < 1500; i++)
312 if (a[i] != i - 22)
313 return 1;
314 for (i = 0; i < 10; i++)
315 for (j = 0; j < 15; j++)
316 for (k = 0; k < 10; k++)
317 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
318 return 1;
319 OMPTEAMS
320 N(f13) ();
321 OMPTEAMS
322 N(f14) ();
323 OMPFROM (a);
324 OMPFROM (b);
325 for (i = 0; i < 1500; i++)
326 if (a[i] != i - 20)
327 return 1;
328 for (i = 0; i < 10; i++)
329 for (j = 0; j < 15; j++)
330 for (k = 0; k < 10; k++)
331 if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k)
332 return 1;
333 return 0;
334 }
335
336 #else
337
338 __attribute__((noinline, noclone)) void
339 N(f20) (void)
340 {
341 int i;
342 OMPTGT
343 #pragma omp F S
344 for (i = 0; i != 1500; i++)
345 a[i] += 2;
346 }
347
348 __attribute__((noinline, noclone)) void
349 N(f21) (void)
350 {
351 OMPTGT
352 #pragma omp F S
353 for (unsigned int i = __INT_MAX__; i < 1500U + __INT_MAX__; i += 2 - 1)
354 a[(i - __INT_MAX__)] -= 2;
355 }
356
357 __attribute__((noinline, noclone)) void
358 N(f22) (void)
359 {
360 unsigned long long i;
361 OMPTGT
362 #pragma omp F S
363 for (i = __LONG_LONG_MAX__ + 1500ULL - 27;
364 i != __LONG_LONG_MAX__ - 27ULL; i -= 3 - 2)
365 a[i + 26LL - __LONG_LONG_MAX__] -= 4;
366 }
367
368 __attribute__((noinline, noclone)) void
369 N(f23) (long long n1, long long n2)
370 {
371 OMPTGT
372 #pragma omp F S
373 for (long long i = n1 + 23; i != n2 - 25; --i)
374 a[i + 48] += 7;
375 }
376
377 __attribute__((noinline, noclone)) void
378 N(f24) (void)
379 {
380 unsigned int i;
381 OMPTGT
382 #pragma omp F S
383 for (i = 30; i != 30; i += 1)
384 a[i] += 10;
385 }
386
387 __attribute__((noinline, noclone)) void
388 N(f25) (int n11, int n12, int n21, int n22, int n31, int n32,
389 int s2)
390 {
391 SC int v1, v2, v3;
392 OMPTGT
393 #pragma omp F S collapse(3)
394 for (v1 = n11; v1 != n12; v1 += 17 - 19 + 3)
395 for (v2 = n21; v2 < n22; v2 += s2)
396 for (v3 = n31; v3 != n32; ++v3)
397 b[v1][v2][v3] += 2.5;
398 }
399
400 __attribute__((noinline, noclone)) void
401 N(f26) (int n11, int n12, int n21, int n22, long long n31, long long n32,
402 int s2)
403 {
404 SC int v1, v2;
405 SC long long v3;
406 OMPTGT
407 #pragma omp F S collapse(3)
408 for (v1 = n11; v1 != n12; v1 += -1)
409 for (v2 = n21; v2 > n22; v2 += s2)
410 for (v3 = n31; v3 != n32; v3 --)
411 b[v1][v2 / 2][v3] -= 4.5;
412 }
413
414 __attribute__((noinline, noclone)) void
415 N(f27) (void)
416 {
417 SC unsigned int v1, v3;
418 SC unsigned long long v2;
419 OMPTGT
420 #pragma omp F S collapse(3)
421 for (v1 = 0; v1 < 20; v1 += 2)
422 for (v2 = __LONG_LONG_MAX__ + 11ULL;
423 v2 != __LONG_LONG_MAX__ - 4ULL; -- v2)
424 for (v3 = 10; v3 != 0; v3--)
425 b[v1 >> 1][v2 - __LONG_LONG_MAX__ + 3][v3 - 1] += 5.5;
426 }
427
428 __attribute__((noinline, noclone)) void
429 N(f28) (void)
430 {
431 SC long long v1, v2, v3;
432 OMPTGT
433 #pragma omp F S collapse(3)
434 for (v1 = 0; v1 != 20; v1 -= 17 - 18)
435 for (v2 = 30; v2 < 20; v2++)
436 for (v3 = 10; v3 < 0; v3--)
437 b[v1][v2][v3] += 5.5;
438 }
439
440 __attribute__((noinline, noclone)) void
441 N(f29) (void)
442 {
443 int i;
444 OMPTGT
445 #pragma omp F S
446 for (i = 20; i != 20; i++)
447 {
448 a[i] += 2;
449 noreturn ();
450 a[i] -= 4;
451 }
452 }
453
454 __attribute__((noinline, noclone)) void
455 N(f30) (void)
456 {
457 SC int i;
458 OMPTGT
459 #pragma omp F S collapse(3)
460 for (i = 0; i != 10; i++)
461 for (int j = 10; j < 8; j++)
462 for (long k = -10; k != 10; k++)
463 {
464 b[i][j][k] += 4;
465 noreturn ();
466 b[i][j][k] -= 8;
467 }
468 }
469
470 __attribute__((noinline, noclone)) void
471 N(f31) (int n)
472 {
473 int i;
474 OMPTGT
475 #pragma omp F S
476 for (i = 20; i != n; i++)
477 {
478 a[i] += 8;
479 noreturn ();
480 a[i] -= 16;
481 }
482 }
483
484 __attribute__((noinline, noclone)) void
485 N(f32) (int n)
486 {
487 SC int i;
488 OMPTGT
489 #pragma omp F S collapse(3)
490 for (i = 0; i != 10; i++)
491 for (int j = n; j != 12; j++)
492 for (long k = -10; k != 10; k++)
493 {
494 b[i][j][k] += 16;
495 noreturn ();
496 b[i][j][k] -= 32;
497 }
498 }
499
500 __attribute__((noinline, noclone)) void
501 N(f33) (void)
502 {
503 int *i;
504 OMPTGT
505 #pragma omp F S
506 for (i = a; i != &a[1500]; i++)
507 i[0] += 2;
508 }
509
510 __attribute__((noinline, noclone)) void
511 N(f34) (void)
512 {
513 SC float *i;
514 OMPTGT
515 #pragma omp F S collapse(3)
516 for (i = &b[0][0][0]; i != &b[0][0][10]; i++)
517 for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
518 for (float *k = &b[0][0][10]; k != &b[0][0][0]; --k)
519 b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
520 -= 3.5;
521 }
522
523 __attribute__((noinline, noclone)) int
524 N(test) (void)
525 {
526 int i, j, k;
527 for (i = 0; i < 1500; i++)
528 a[i] = i - 25;
529 OMPTO (a);
530 OMPTEAMS
531 N(f20) ();
532 OMPFROM (a);
533 for (i = 0; i < 1500; i++)
534 if (a[i] != i - 23)
535 return 1;
536 OMPTEAMS
537 N(f21) ();
538 OMPFROM (a);
539 for (i = 0; i < 1500; i++)
540 if (a[i] != i - 25)
541 return 1;
542 OMPTEAMS
543 N(f22) ();
544 OMPFROM (a);
545 for (i = 0; i < 1500; i++)
546 if (a[i] != i - 29)
547 return 1;
548 OMPTEAMS
549 N(f23) (1500LL - 1 - 23 - 48, -1LL + 25 - 48);
550 OMPFROM (a);
551 for (i = 0; i < 1500; i++)
552 if (a[i] != i - 22)
553 return 1;
554 OMPTEAMS
555 N(f24) ();
556 OMPFROM (a);
557 for (i = 0; i < 1500; i++)
558 if (a[i] != i - 22)
559 return 1;
560 for (i = 0; i < 10; i++)
561 for (j = 0; j < 15; j++)
562 for (k = 0; k < 10; k++)
563 b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
564 OMPTO (b);
565 OMPTEAMS
566 N(f25) (0, 10, 0, 15, 0, 10, 1);
567 OMPFROM (b);
568 for (i = 0; i < 10; i++)
569 for (j = 0; j < 15; j++)
570 for (k = 0; k < 10; k++)
571 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
572 return 1;
573 OMPTEAMS
574 N(f25) (0, 10, 30, 15, 0, 10, 5);
575 OMPFROM (b);
576 for (i = 0; i < 10; i++)
577 for (j = 0; j < 15; j++)
578 for (k = 0; k < 10; k++)
579 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
580 return 1;
581 OMPTEAMS
582 N(f26) (9, -1, 29, 0, 9, -1, -2);
583 OMPFROM (b);
584 for (i = 0; i < 10; i++)
585 for (j = 0; j < 15; j++)
586 for (k = 0; k < 10; k++)
587 if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
588 return 1;
589 OMPTEAMS
590 N(f27) ();
591 OMPFROM (b);
592 for (i = 0; i < 10; i++)
593 for (j = 0; j < 15; j++)
594 for (k = 0; k < 10; k++)
595 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
596 return 1;
597 OMPTEAMS
598 N(f28) ();
599 OMPFROM (b);
600 for (i = 0; i < 10; i++)
601 for (j = 0; j < 15; j++)
602 for (k = 0; k < 10; k++)
603 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
604 return 1;
605 OMPTEAMS
606 N(f29) ();
607 OMPTEAMS
608 N(f30) ();
609 OMPTEAMS
610 N(f31) (20);
611 OMPTEAMS
612 N(f32) (12);
613 OMPFROM (a);
614 OMPFROM (b);
615 for (i = 0; i < 1500; i++)
616 if (a[i] != i - 22)
617 return 1;
618 for (i = 0; i < 10; i++)
619 for (j = 0; j < 15; j++)
620 for (k = 0; k < 10; k++)
621 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
622 return 1;
623 OMPTEAMS
624 N(f33) ();
625 OMPTEAMS
626 N(f34) ();
627 OMPFROM (a);
628 OMPFROM (b);
629 for (i = 0; i < 1500; i++)
630 if (a[i] != i - 20)
631 return 1;
632 for (i = 0; i < 10; i++)
633 for (j = 0; j < 15; j++)
634 for (k = 0; k < 10; k++)
635 if (b[i][j][k] != i - 2.5 + 1.5 * j - 1.5 * k)
636 return 1;
637 return 0;
638 }
639 #endif