PR tree-optimization/87009
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / parallel-loop-2.h
blob5691b7e845f2e41b91b1ee53838f21237ef904dc
1 #ifndef VARS
2 #define VARS
3 int a[1500];
4 float b[10][15][10];
5 #pragma acc routine
6 __attribute__((noreturn)) void
7 noreturn (void)
9 for (;;);
11 #endif
12 #ifndef SC
13 #define SC
14 #endif
16 __attribute__((noinline, noclone)) void
17 N(f0) (void)
19 int i;
20 #pragma acc PK loop L F
21 for (i = 0; i < 1500; i++)
22 a[i] += 2;
25 __attribute__((noinline, noclone)) void
26 N(f1) (void)
28 #pragma acc PK loop L F
29 for (unsigned int i = __INT_MAX__; i < 3000U + __INT_MAX__; i += 2)
30 a[(i - __INT_MAX__) >> 1] -= 2;
33 __attribute__((noinline, noclone)) void
34 N(f2) (void)
36 unsigned long long i;
37 #pragma acc PK loop L F
38 for (i = __LONG_LONG_MAX__ + 4500ULL - 27;
39 i > __LONG_LONG_MAX__ - 27ULL; i -= 3)
40 a[(i + 26LL - __LONG_LONG_MAX__) / 3] -= 4;
43 __attribute__((noinline, noclone)) void
44 N(f3) (long long n1, long long n2, long long s3)
46 #pragma acc PK loop L F
47 for (long long i = n1 + 23; i > n2 - 25; i -= s3)
48 a[i + 48] += 7;
51 __attribute__((noinline, noclone)) void
52 N(f4) (void)
54 unsigned int i;
55 #pragma acc PK loop L F
56 for (i = 30; i < 20; i += 2)
57 a[i] += 10;
60 __attribute__((noinline, noclone)) void
61 N(f5) (int n11, int n12, int n21, int n22, int n31, int n32,
62 int s1, int s2, int s3)
64 SC int v1, v2, v3;
65 #pragma acc PK loop L F
66 for (v1 = n11; v1 < n12; v1 += s1)
67 #pragma acc loop S
68 for (v2 = n21; v2 < n22; v2 += s2)
69 for (v3 = n31; v3 < n32; v3 += s3)
70 b[v1][v2][v3] += 2.5;
73 __attribute__((noinline, noclone)) void
74 N(f6) (int n11, int n12, int n21, int n22, long long n31, long long n32,
75 int s1, int s2, long long int s3)
77 SC int v1, v2;
78 SC long long v3;
79 #pragma acc PK loop L F
80 for (v1 = n11; v1 > n12; v1 += s1)
81 #pragma acc loop S
82 for (v2 = n21; v2 > n22; v2 += s2)
83 for (v3 = n31; v3 > n32; v3 += s3)
84 b[v1][v2 / 2][v3] -= 4.5;
87 __attribute__((noinline, noclone)) void
88 N(f7) (void)
90 SC unsigned int v1, v3;
91 SC unsigned long long v2;
92 #pragma acc PK loop L F
93 for (v1 = 0; v1 < 20; v1 += 2)
94 #pragma acc loop S
95 for (v2 = __LONG_LONG_MAX__ + 16ULL;
96 v2 > __LONG_LONG_MAX__ - 29ULL; v2 -= 3)
97 for (v3 = 10; v3 > 0; v3--)
98 b[v1 >> 1][(v2 - __LONG_LONG_MAX__ + 64) / 3 - 12][v3 - 1] += 5.5;
101 __attribute__((noinline, noclone)) void
102 N(f8) (void)
104 SC long long v1, v2, v3;
105 #pragma acc PK loop L F
106 for (v1 = 0; v1 < 20; v1 += 2)
107 #pragma acc loop S
108 for (v2 = 30; v2 < 20; v2++)
109 for (v3 = 10; v3 < 0; v3--)
110 b[v1][v2][v3] += 5.5;
113 __attribute__((noinline, noclone)) void
114 N(f9) (void)
116 int i;
117 #pragma acc PK loop L F
118 for (i = 20; i < 10; i++)
120 a[i] += 2;
121 noreturn ();
122 a[i] -= 4;
126 __attribute__((noinline, noclone)) void
127 N(f10) (void)
129 SC int i;
130 #pragma acc PK loop L F
131 for (i = 0; i < 10; i++)
132 #pragma acc loop S
133 for (int j = 10; j < 8; j++)
134 for (long k = -10; k < 10; k++)
136 b[i][j][k] += 4;
137 noreturn ();
138 b[i][j][k] -= 8;
142 __attribute__((noinline, noclone)) void
143 N(f11) (int n)
145 int i;
146 #pragma acc PK loop L F
147 for (i = 20; i < n; i++)
149 a[i] += 8;
150 noreturn ();
151 a[i] -= 16;
155 __attribute__((noinline, noclone)) void
156 N(f12) (int n)
158 SC int i;
159 #pragma acc PK loop L F
160 for (i = 0; i < 10; i++)
161 #pragma acc loop S
162 for (int j = n; j < 8; j++)
163 for (long k = -10; k < 10; k++)
165 b[i][j][k] += 16;
166 noreturn ();
167 b[i][j][k] -= 32;
171 __attribute__((noinline, noclone)) void
172 N(f13) (void)
174 int *i;
175 #pragma acc PK loop L F
176 for (i = a; i < &a[1500]; i++)
177 i[0] += 2;
180 __attribute__((noinline, noclone)) void
181 N(f14) (void)
183 SC float *i;
184 #pragma acc PK loop L F
185 for (i = &b[0][0][0]; i < &b[0][0][10]; i++)
186 #pragma acc loop S
187 for (float *j = &b[0][15][0]; j > &b[0][0][0]; j -= 10)
188 for (float *k = &b[0][0][10]; k > &b[0][0][0]; --k)
189 b[i - &b[0][0][0]][(j - &b[0][0][0]) / 10 - 1][(k - &b[0][0][0]) - 1]
190 -= 3.5;
193 __attribute__((noinline, noclone)) int
194 N(test) (void)
196 int i, j, k;
197 for (i = 0; i < 1500; i++)
198 a[i] = i - 25;
199 N(f0) ();
200 for (i = 0; i < 1500; i++)
201 if (a[i] != i - 23)
202 return 1;
203 N(f1) ();
204 for (i = 0; i < 1500; i++)
205 if (a[i] != i - 25)
206 return 1;
207 N(f2) ();
208 for (i = 0; i < 1500; i++)
209 if (a[i] != i - 29)
210 return 1;
211 N(f3) (1500LL - 1 - 23 - 48, -1LL + 25 - 48, 1LL);
212 for (i = 0; i < 1500; i++)
213 if (a[i] != i - 22)
214 return 1;
215 N(f3) (1500LL - 1 - 23 - 48, 1500LL - 1, 7LL);
216 for (i = 0; i < 1500; i++)
217 if (a[i] != i - 22)
218 return 1;
219 N(f4) ();
220 for (i = 0; i < 1500; i++)
221 if (a[i] != i - 22)
222 return 1;
223 for (i = 0; i < 10; i++)
224 for (j = 0; j < 15; j++)
225 for (k = 0; k < 10; k++)
226 b[i][j][k] = i - 2.5 + 1.5 * j - 1.5 * k;
227 N(f5) (0, 10, 0, 15, 0, 10, 1, 1, 1);
228 for (i = 0; i < 10; i++)
229 for (j = 0; j < 15; j++)
230 for (k = 0; k < 10; k++)
231 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
232 return 1;
233 N(f5) (0, 10, 30, 15, 0, 10, 4, 5, 6);
234 for (i = 0; i < 10; i++)
235 for (j = 0; j < 15; j++)
236 for (k = 0; k < 10; k++)
237 if (b[i][j][k] != i + 1.5 * j - 1.5 * k)
238 return 1;
239 N(f6) (9, -1, 29, 0, 9, -1, -1, -2, -1);
240 for (i = 0; i < 10; i++)
241 for (j = 0; j < 15; j++)
242 for (k = 0; k < 10; k++)
243 if (b[i][j][k] != i - 4.5 + 1.5 * j - 1.5 * k)
244 return 1;
245 N(f7) ();
246 for (i = 0; i < 10; i++)
247 for (j = 0; j < 15; j++)
248 for (k = 0; k < 10; k++)
249 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
250 return 1;
251 N(f8) ();
252 for (i = 0; i < 10; i++)
253 for (j = 0; j < 15; j++)
254 for (k = 0; k < 10; k++)
255 if (b[i][j][k] != i + 1.0 + 1.5 * j - 1.5 * k)
256 return 1;
257 N(f9) ();
258 N(f10) ();
259 N(f11) (10);
260 N(f12) (12);
261 for (i = 0; i < 1500; i++)
262 if (a[i] != i - 22)
263 return 1;
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.0 + 1.5 * j - 1.5 * k)
268 return 1;
269 N(f13) ();
270 N(f14) ();
271 for (i = 0; i < 1500; i++)
272 if (a[i] != i - 20)
273 return 1;
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 - 2.5 + 1.5 * j - 1.5 * k)
278 return 1;
279 return 0;