1 /* PR middle-end/61486 */
2 /* { dg-do compile } */
3 /* { dg-require-effective-target alloca } */
5 #pragma omp declare target
6 void dosomething (int *a
, int n
, int m
);
7 #pragma omp end declare target
10 test (int n
, int o
, int p
, int q
, int r
, int s
, int *pp
)
13 #pragma omp target data device (n + 1) if (n != 6) map (tofrom: n, r)
15 #pragma omp target device (n + 1) if (n != 6) map (from: n) map (alloc: a[2:o-2])
16 dosomething (a
, n
, 0);
17 #pragma omp target teams device (n + 1) num_teams (n + 4) thread_limit (n * 2) \
18 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
19 private (p) firstprivate (q) shared (n) reduction (+: r)
23 dosomething (a
, n
, p
+ q
);
25 #pragma omp target teams distribute device (n + 1) num_teams (n + 4) collapse (2) \
26 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
27 private (p) firstprivate (q) shared (n) reduction (+: r) \
28 thread_limit (n * 2) dist_schedule (static, 4)
29 for (i
= 0; i
< 10; i
++)
30 for (j
= 0; j
< 10; j
++)
34 dosomething (a
, n
, p
+ q
);
36 #pragma omp target teams distribute device (n + 1) num_teams (n + 4) \
37 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
38 private (p) firstprivate (q) shared (n) reduction (+: r) \
39 thread_limit (n * 2) dist_schedule (static, 4)
40 for (i
= 0; i
< 10; i
++)
41 for (j
= 0; j
< 10; j
++)
45 dosomething (a
, n
, p
+ q
);
47 #pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
48 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
49 private (p) firstprivate (q) shared (n) reduction (+: r) \
50 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
51 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
53 for (i
= 0; i
< 10; i
++)
54 for (j
= 0; j
< 10; j
++)
58 dosomething (a
, n
, p
+ q
);
62 #pragma omp target teams distribute parallel for device (n + 1) num_teams (n + 4) \
63 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
64 private (p) firstprivate (q) shared (n) reduction (+: r) \
65 thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
66 proc_bind (master) lastprivate (s) schedule (static, 8)
67 for (i
= 0; i
< 10; i
++)
69 for (j
= 0; j
< 10; j
++)
73 dosomething (a
, n
, p
+ q
);
78 #pragma omp target teams distribute parallel for simd device (n + 1) \
79 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
80 private (p) firstprivate (q) shared (n) reduction (+: r) \
81 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
82 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
83 schedule (static, 8) num_teams (n + 4) safelen(8)
84 for (i
= 0; i
< 10; i
++)
85 for (j
= 0; j
< 10; j
++)
92 #pragma omp target teams distribute parallel for simd device (n + 1) \
93 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
94 private (p) firstprivate (q) shared (n) reduction (+: r) \
95 thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
96 proc_bind (master) lastprivate (s) schedule (static, 8) \
97 num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
98 for (i
= 0; i
< 10; i
++)
105 #pragma omp target teams distribute simd device (n + 1) \
106 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
107 private (p) firstprivate (q) shared (n) reduction (+: r) \
108 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
109 lastprivate (s) num_teams (n + 4) safelen(8)
110 for (i
= 0; i
< 10; i
++)
111 for (j
= 0; j
< 10; j
++)
118 #pragma omp target teams distribute simd device (n + 1) \
119 if (n != 6)map (from: n) map (alloc: a[2:o-2]) default(shared) \
120 private (p) firstprivate (q) shared (n) reduction (+: r) \
121 thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
122 num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
123 for (i
= 0; i
< 10; i
++)
130 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
131 #pragma omp teams num_teams (n + 4) thread_limit (n * 2) default(shared) \
132 private (p) firstprivate (q) shared (n) reduction (+: r)
136 dosomething (a
, n
, p
+ q
);
138 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
139 #pragma omp teams distribute num_teams (n + 4) collapse (2) default(shared) \
140 private (p) firstprivate (q) shared (n) reduction (+: r) \
141 thread_limit (n * 2) dist_schedule (static, 4)
142 for (i
= 0; i
< 10; i
++)
143 for (j
= 0; j
< 10; j
++)
147 dosomething (a
, n
, p
+ q
);
149 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
150 #pragma omp teams distribute num_teams (n + 4) default(shared) \
151 private (p) firstprivate (q) shared (n) reduction (+: r) \
152 thread_limit (n * 2) dist_schedule (static, 4)
153 for (i
= 0; i
< 10; i
++)
154 for (j
= 0; j
< 10; j
++)
158 dosomething (a
, n
, p
+ q
);
160 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
161 #pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
162 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
163 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
164 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
166 for (i
= 0; i
< 10; i
++)
167 for (j
= 0; j
< 10; j
++)
171 dosomething (a
, n
, p
+ q
);
175 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
176 #pragma omp teams distribute parallel for num_teams (n + 4) if (n != 6) \
177 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
178 thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
179 proc_bind (master) lastprivate (s) schedule (static, 8)
180 for (i
= 0; i
< 10; i
++)
182 for (j
= 0; j
< 10; j
++)
186 dosomething (a
, n
, p
+ q
);
191 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
192 #pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
193 private (p) firstprivate (q) shared (n) reduction (+: r) \
194 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
195 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
196 schedule (static, 8) num_teams (n + 4) safelen(8)
197 for (i
= 0; i
< 10; i
++)
198 for (j
= 0; j
< 10; j
++)
205 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
206 #pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
207 private (p) firstprivate (q) shared (n) reduction (+: r) \
208 thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
209 proc_bind (master) lastprivate (s) schedule (static, 8) \
210 num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
211 for (i
= 0; i
< 10; i
++)
218 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
219 #pragma omp teams distribute parallel for simd if (n != 6)default(shared) \
220 private (p) firstprivate (q) shared (n) reduction (+: r) \
221 thread_limit (n * 2) dist_schedule (static, 4) num_threads (n + 4) \
222 proc_bind (primary) lastprivate (s) schedule (static, 8) \
223 num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
224 for (i
= 0; i
< 10; i
++)
231 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
232 #pragma omp teams distribute simd default(shared) \
233 private (p) firstprivate (q) shared (n) reduction (+: r) \
234 thread_limit (n * 2) dist_schedule (static, 4) collapse (2) \
235 lastprivate (s) num_teams (n + 4) safelen(8)
236 for (i
= 0; i
< 10; i
++)
237 for (j
= 0; j
< 10; j
++)
244 #pragma omp target device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2])
245 #pragma omp teams distribute simd default(shared) \
246 private (p) firstprivate (q) shared (n) reduction (+: r) \
247 thread_limit (n * 2) dist_schedule (static, 4) lastprivate (s) \
248 num_teams (n + 4) safelen(16) linear(i:1) aligned (pp:4)
249 for (i
= 0; i
< 10; i
++)
256 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
257 num_teams (n + 4) thread_limit (n * 2)default(shared) shared(n) \
258 private (p) reduction (+: r)
259 #pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
260 for (i
= 0; i
< 10; i
++)
261 for (j
= 0; j
< 10; j
++)
265 dosomething (a
, n
, p
+ q
);
267 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
268 num_teams (n + 4) thread_limit (n * 2) shared(n) private(p) reduction (+ : r) \
270 #pragma omp distribute dist_schedule (static, 4) firstprivate (q)
271 for (i
= 0; i
< 10; i
++)
272 for (j
= 0; j
< 10; j
++)
276 dosomething (a
, n
, p
+ q
);
278 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
279 num_teams (n + 4) thread_limit (n * 2)
280 #pragma omp distribute parallel for if (n != 6) \
281 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
282 collapse (2) dist_schedule (static, 4) \
283 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
285 for (i
= 0; i
< 10; i
++)
286 for (j
= 0; j
< 10; j
++)
290 dosomething (a
, n
, p
+ q
);
294 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
295 num_teams (n + 4) thread_limit (n * 2)
296 #pragma omp distribute parallel for if (n != 6) \
297 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
298 num_threads (n + 4) dist_schedule (static, 4) \
299 proc_bind (master) lastprivate (s) schedule (static, 8)
300 for (i
= 0; i
< 10; i
++)
302 for (j
= 0; j
< 10; j
++)
306 dosomething (a
, n
, p
+ q
);
311 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
312 num_teams (n + 4) thread_limit (n * 2)
313 #pragma omp distribute parallel for simd if (n != 6)default(shared) \
314 private (p) firstprivate (q) shared (n) reduction (+: r) \
315 collapse (2) dist_schedule (static, 4) \
316 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
317 schedule (static, 8) safelen(8)
318 for (i
= 0; i
< 10; i
++)
319 for (j
= 0; j
< 10; j
++)
326 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
327 num_teams (n + 4) thread_limit (n * 2)
328 #pragma omp distribute parallel for simd if (n != 6)default(shared) \
329 private (p) firstprivate (q) shared (n) reduction (+: r) \
330 num_threads (n + 4) dist_schedule (static, 4) \
331 proc_bind (master) lastprivate (s) schedule (static, 8) \
332 safelen(16) linear(i:1) aligned (pp:4)
333 for (i
= 0; i
< 10; i
++)
340 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
341 num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
343 #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
344 collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
345 for (i
= 0; i
< 10; i
++)
346 for (j
= 0; j
< 10; j
++)
353 #pragma omp target teams device (n + 1) if (n != 6)map(from:n) map(alloc:a[2:o-2]) \
354 num_teams (n + 4) thread_limit (n * 2) default(shared) shared(n) private(p) \
356 #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
357 lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
358 for (i
= 0; i
< 10; i
++)
370 #pragma omp declare target
374 test2 (int n
, int o
, int p
, int r
, int *pp
)
377 #pragma omp distribute collapse (2) dist_schedule (static, 4) firstprivate (q)
378 for (i
= 0; i
< 10; i
++)
379 for (j
= 0; j
< 10; j
++)
383 dosomething (a
, n
, p
+ q
);
385 #pragma omp distribute dist_schedule (static, 4) firstprivate (q)
386 for (i
= 0; i
< 10; i
++)
387 for (j
= 0; j
< 10; j
++)
391 dosomething (a
, n
, p
+ q
);
393 #pragma omp distribute parallel for if (n != 6) \
394 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
395 collapse (2) dist_schedule (static, 4) \
396 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
398 for (i
= 0; i
< 10; i
++)
399 for (j
= 0; j
< 10; j
++)
403 dosomething (a
, n
, p
+ q
);
407 #pragma omp distribute parallel for if (n != 6) \
408 default(shared) private (p) firstprivate (q) shared (n) reduction (+: r) \
409 num_threads (n + 4) dist_schedule (static, 4) \
410 proc_bind (master) lastprivate (s) schedule (static, 8)
411 for (i
= 0; i
< 10; i
++)
413 for (j
= 0; j
< 10; j
++)
417 dosomething (a
, n
, p
+ q
);
422 #pragma omp distribute parallel for simd if (n != 6)default(shared) \
423 private (p) firstprivate (q) shared (n) reduction (+: r) \
424 collapse (2) dist_schedule (static, 4) \
425 num_threads (n + 4) proc_bind (spread) lastprivate (s) \
426 schedule (static, 8) safelen(8)
427 for (i
= 0; i
< 10; i
++)
428 for (j
= 0; j
< 10; j
++)
435 #pragma omp distribute parallel for simd if (n != 6)default(shared) \
436 private (p) firstprivate (q) shared (n) reduction (+: r) \
437 num_threads (n + 4) dist_schedule (static, 4) \
438 proc_bind (master) lastprivate (s) schedule (static, 8) \
439 safelen(16) linear(i:1) aligned (pp:4)
440 for (i
= 0; i
< 10; i
++)
447 #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
448 collapse (2) dist_schedule (static, 4) lastprivate (s) safelen(8)
449 for (i
= 0; i
< 10; i
++)
450 for (j
= 0; j
< 10; j
++)
457 #pragma omp distribute simd private (p) firstprivate (q) reduction (+: r) \
458 lastprivate (s) dist_schedule (static, 4) safelen(16) linear(i:1) aligned (pp:4)
459 for (i
= 0; i
< 10; i
++)
467 #pragma omp end declare target