]> git.ipfire.org Git - thirdparty/gcc.git/blob - libgomp/testsuite/libgomp.c-c++-common/for-2.h
0bd116c5aec1a488b1a0cfaf7d8f8b66e5d14ab2
[thirdparty/gcc.git] / libgomp / testsuite / libgomp.c-c++-common / for-2.h
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 OMPTO
18 #define OMPTO(v) do {} while (0)
19 #endif
20 #ifndef OMPFROM
21 #define OMPFROM(v) do {} while (0)
22 #endif
23
24 __attribute__((noinline, noclone)) void
25 N(f0) (void)
26 {
27 int i;
28 OMPTGT
29 #pragma omp F S
30 for (i = 0; i < 1500; i++)
31 a[i] += 2;
32 }
33
34 __attribute__((noinline, noclone)) void
35 N(f1) (void)
36 {
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;
41 }
42
43 __attribute__((noinline, noclone)) void
44 N(f2) (void)
45 {
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;
52 }
53
54 __attribute__((noinline, noclone)) void
55 N(f3) (long long n1, long long n2, long long s3)
56 {
57 OMPTGT
58 #pragma omp F S
59 for (long long i = n1 + 23; i > n2 - 25; i -= s3)
60 a[i + 48] += 7;
61 }
62
63 __attribute__((noinline, noclone)) void
64 N(f4) (void)
65 {
66 unsigned int i;
67 OMPTGT
68 #pragma omp F S
69 for (i = 30; i < 20; i += 2)
70 a[i] += 10;
71 }
72
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)
76 {
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;
84 }
85
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)
89 {
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;
98 }
99
100 __attribute__((noinline, noclone)) void
101 N(f7) (void)
102 {
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;
112 }
113
114 __attribute__((noinline, noclone)) void
115 N(f8) (void)
116 {
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;
124 }
125
126 __attribute__((noinline, noclone)) void
127 N(f9) (void)
128 {
129 int i;
130 OMPTGT
131 #pragma omp F S
132 for (i = 20; i < 10; i++)
133 {
134 a[i] += 2;
135 noreturn ();
136 a[i] -= 4;
137 }
138 }
139
140 __attribute__((noinline, noclone)) void
141 N(f10) (void)
142 {
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++)
149 {
150 b[i][j][k] += 4;
151 noreturn ();
152 b[i][j][k] -= 8;
153 }
154 }
155
156 __attribute__((noinline, noclone)) void
157 N(f11) (int n)
158 {
159 int i;
160 OMPTGT
161 #pragma omp F S
162 for (i = 20; i < n; i++)
163 {
164 a[i] += 8;
165 noreturn ();
166 a[i] -= 16;
167 }
168 }
169
170 __attribute__((noinline, noclone)) void
171 N(f12) (int n)
172 {
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++)
179 {
180 b[i][j][k] += 16;
181 noreturn ();
182 b[i][j][k] -= 32;
183 }
184 }
185
186 __attribute__((noinline, noclone)) void
187 N(f13) (void)
188 {
189 int *i;
190 OMPTGT
191 #pragma omp F S
192 for (i = a; i < &a[1500]; i++)
193 i[0] += 2;
194 }
195
196 __attribute__((noinline, noclone)) void
197 N(f14) (void)
198 {
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;
207 }
208
209 __attribute__((noinline, noclone)) int
210 N(test) (void)
211 {
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;
313 }