[flang] Update CommandTest for AIX (NFC) (#118403)
[llvm-project.git] / flang / test / Semantics / OpenMP / combined-constructs.f90
blob4f2a4a4f501b9d18e8fb337b76ff0ae555232321
1 ! RUN: %python %S/../test_errors.py %s %flang -fopenmp
3 program main
4 implicit none
5 integer :: N
6 integer :: i
7 real(8) :: a(256), b(256)
8 N = 256
10 !ERROR: `DISTRIBUTE` region has to be strictly nested inside `TEAMS` region.
11 !$omp distribute simd
12 do i = 1, N
13 a(i) = 3.14
14 enddo
15 !$omp end distribute simd
17 !$omp target parallel device(0)
18 do i = 1, N
19 a(i) = 3.14
20 enddo
21 !$omp end target parallel
23 !ERROR: At most one DEVICE clause can appear on the TARGET PARALLEL directive
24 !$omp target parallel device(0) device(1)
25 do i = 1, N
26 a(i) = 3.14
27 enddo
28 !$omp end target parallel
30 !$omp target parallel defaultmap(tofrom:scalar)
31 do i = 1, N
32 a(i) = 3.14
33 enddo
34 !$omp end target parallel
36 !ERROR: 'variable-category' modifier is required
37 !$omp target parallel defaultmap(tofrom)
38 do i = 1, N
39 a(i) = 3.14
40 enddo
41 !$omp end target parallel
43 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET PARALLEL directive
44 !$omp target parallel defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
45 do i = 1, N
46 a(i) = 3.14
47 enddo
48 !$omp end target parallel
50 !$omp target parallel map(tofrom:a)
51 do i = 1, N
52 a(i) = 3.14
53 enddo
54 !$omp end target parallel
56 !ERROR: COPYIN clause is not allowed on the TARGET PARALLEL directive
57 !ERROR: Non-THREADPRIVATE object 'a' in COPYIN clause
58 !$omp target parallel copyin(a)
59 do i = 1, N
60 a(i) = 3.14
61 enddo
62 !$omp end target parallel
64 !$omp target parallel do device(0)
65 do i = 1, N
66 a(i) = 3.14
67 enddo
68 !$omp end target parallel do
70 !ERROR: At most one DEVICE clause can appear on the TARGET PARALLEL DO directive
71 !$omp target parallel do device(0) device(1)
72 do i = 1, N
73 a(i) = 3.14
74 enddo
75 !$omp end target parallel do
77 !$omp target parallel do defaultmap(tofrom:scalar)
78 do i = 1, N
79 a(i) = 3.14
80 enddo
81 !$omp end target parallel do
83 !ERROR: 'variable-category' modifier is required
84 !$omp target parallel do defaultmap(tofrom)
85 do i = 1, N
86 a(i) = 3.14
87 enddo
88 !$omp end target parallel do
90 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET PARALLEL DO directive
91 !$omp target parallel do defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
92 do i = 1, N
93 a(i) = 3.14
94 enddo
95 !$omp end target parallel do
97 !$omp target parallel do map(tofrom:a)
98 do i = 1, N
99 a(i) = 3.14
100 enddo
101 !$omp end target parallel do
103 !ERROR: COPYIN clause is not allowed on the TARGET PARALLEL DO directive
104 !ERROR: Non-THREADPRIVATE object 'a' in COPYIN clause
105 !$omp target parallel do copyin(a)
106 do i = 1, N
107 a(i) = 3.14
108 enddo
109 !$omp end target parallel do
111 !$omp target teams map(a)
112 do i = 1, N
113 a(i) = 3.14
114 enddo
115 !$omp end target teams
117 !$omp target teams device(0)
118 do i = 1, N
119 a(i) = 3.14
120 enddo
121 !$omp end target teams
123 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS directive
124 !$omp target teams device(0) device(1)
125 do i = 1, N
126 a(i) = 3.14
127 enddo
128 !$omp end target teams
130 !ERROR: SCHEDULE clause is not allowed on the TARGET TEAMS directive
131 !$omp target teams schedule(static)
132 do i = 1, N
133 a(i) = 3.14
134 enddo
135 !$omp end target teams
137 !$omp target teams defaultmap(tofrom:scalar)
138 do i = 1, N
139 a(i) = 3.14
140 enddo
141 !$omp end target teams
143 !ERROR: 'variable-category' modifier is required
144 !$omp target teams defaultmap(tofrom)
145 do i = 1, N
146 a(i) = 3.14
147 enddo
148 !$omp end target teams
150 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS directive
151 !$omp target teams defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
152 do i = 1, N
153 a(i) = 3.14
154 enddo
155 !$omp end target teams
157 !$omp target teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
158 do i = 1, N
159 a(i) = 3.14
160 enddo
161 !$omp end target teams
163 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS directive
164 !$omp target teams num_teams(2) num_teams(3)
165 do i = 1, N
166 a(i) = 3.14
167 enddo
168 !$omp end target teams
170 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
171 !$omp target teams num_teams(-1)
172 do i = 1, N
173 a(i) = 3.14
174 enddo
175 !$omp end target teams
177 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS directive
178 !$omp target teams thread_limit(2) thread_limit(3)
179 do i = 1, N
180 a(i) = 3.14
181 enddo
182 !$omp end target teams
184 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
185 !$omp target teams thread_limit(-1)
186 do i = 1, N
187 a(i) = 3.14
188 enddo
189 !$omp end target teams
191 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS directive
192 !$omp target teams default(shared) default(private)
193 do i = 1, N
194 a(i) = 3.14
195 enddo
196 !$omp end target teams
198 !$omp target teams num_teams(2) defaultmap(tofrom:scalar)
199 do i = 1, N
200 a(i) = 3.14
201 enddo
202 !$omp end target teams
204 !$omp target teams map(tofrom:a)
205 do i = 1, N
206 a(i) = 3.14
207 enddo
208 !$omp end target teams
210 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS directive
211 !$omp target teams map(delete:a)
212 do i = 1, N
213 a(i) = 3.14
214 enddo
215 !$omp end target teams
218 !$omp target teams distribute map(a)
219 do i = 1, N
220 a(i) = 3.14
221 enddo
222 !$omp end target teams distribute
224 !$omp target teams distribute device(0)
225 do i = 1, N
226 a(i) = 3.14
227 enddo
228 !$omp end target teams distribute
230 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE directive
231 !$omp target teams distribute device(0) device(1)
232 do i = 1, N
233 a(i) = 3.14
234 enddo
235 !$omp end target teams distribute
237 !$omp target teams distribute defaultmap(tofrom:scalar)
238 do i = 1, N
239 a(i) = 3.14
240 enddo
241 !$omp end target teams distribute
243 !ERROR: 'variable-category' modifier is required
244 !$omp target teams distribute defaultmap(tofrom)
245 do i = 1, N
246 a(i) = 3.14
247 enddo
248 !$omp end target teams distribute
250 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE directive
251 !$omp target teams distribute defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
252 do i = 1, N
253 a(i) = 3.14
254 enddo
255 !$omp end target teams distribute
257 !$omp target teams distribute num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
258 do i = 1, N
259 a(i) = 3.14
260 enddo
261 !$omp end target teams distribute
263 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE directive
264 !$omp target teams distribute num_teams(2) num_teams(3)
265 do i = 1, N
266 a(i) = 3.14
267 enddo
268 !$omp end target teams distribute
270 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
271 !$omp target teams distribute num_teams(-1)
272 do i = 1, N
273 a(i) = 3.14
274 enddo
275 !$omp end target teams distribute
277 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE directive
278 !$omp target teams distribute thread_limit(2) thread_limit(3)
279 do i = 1, N
280 a(i) = 3.14
281 enddo
282 !$omp end target teams distribute
284 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
285 !$omp target teams distribute thread_limit(-1)
286 do i = 1, N
287 a(i) = 3.14
288 enddo
289 !$omp end target teams distribute
291 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE directive
292 !$omp target teams distribute default(shared) default(private)
293 do i = 1, N
294 a(i) = 3.14
295 enddo
296 !$omp end target teams distribute
298 !$omp target teams distribute num_teams(2) defaultmap(tofrom:scalar)
299 do i = 1, N
300 a(i) = 3.14
301 enddo
302 !$omp end target teams distribute
304 !$omp target teams distribute map(tofrom:a)
305 do i = 1, N
306 a(i) = 3.14
307 enddo
308 !$omp end target teams distribute
310 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE directive
311 !$omp target teams distribute map(delete:a)
312 do i = 1, N
313 a(i) = 3.14
314 enddo
315 !$omp end target teams distribute
317 !$omp target teams distribute parallel do device(0)
318 do i = 1, N
319 a(i) = 3.14
320 enddo
321 !$omp end target teams distribute parallel do
323 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
324 !$omp target teams distribute parallel do device(0) device(1)
325 do i = 1, N
326 a(i) = 3.14
327 enddo
328 !$omp end target teams distribute parallel do
330 !$omp target teams distribute parallel do defaultmap(tofrom:scalar)
331 do i = 1, N
332 a(i) = 3.14
333 enddo
334 !$omp end target teams distribute parallel do
336 !ERROR: 'variable-category' modifier is required
337 !$omp target teams distribute parallel do defaultmap(tofrom)
338 do i = 1, N
339 a(i) = 3.14
340 enddo
341 !$omp end target teams distribute parallel do
343 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
344 !$omp target teams distribute parallel do defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
345 do i = 1, N
346 a(i) = 3.14
347 enddo
348 !$omp end target teams distribute parallel do
350 !$omp target teams distribute parallel do num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
351 do i = 1, N
352 a(i) = 3.14
353 enddo
354 !$omp end target teams distribute parallel do
356 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
357 !$omp target teams distribute parallel do num_teams(2) num_teams(3)
358 do i = 1, N
359 a(i) = 3.14
360 enddo
361 !$omp end target teams distribute parallel do
363 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
364 !$omp target teams distribute parallel do num_teams(-1)
365 do i = 1, N
366 a(i) = 3.14
367 enddo
368 !$omp end target teams distribute parallel do
370 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
371 !$omp target teams distribute parallel do thread_limit(2) thread_limit(3)
372 do i = 1, N
373 a(i) = 3.14
374 enddo
375 !$omp end target teams distribute parallel do
377 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
378 !$omp target teams distribute parallel do thread_limit(-1)
379 do i = 1, N
380 a(i) = 3.14
381 enddo
382 !$omp end target teams distribute parallel do
384 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
385 !$omp target teams distribute parallel do default(shared) default(private)
386 do i = 1, N
387 a(i) = 3.14
388 enddo
389 !$omp end target teams distribute parallel do
391 !$omp target teams distribute parallel do num_teams(2) defaultmap(tofrom:scalar)
392 do i = 1, N
393 a(i) = 3.14
394 enddo
395 !$omp end target teams distribute parallel do
397 !$omp target teams distribute parallel do map(tofrom:a)
398 do i = 1, N
399 a(i) = 3.14
400 enddo
401 !$omp end target teams distribute parallel do
403 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
404 !$omp target teams distribute parallel do map(delete:a)
405 do i = 1, N
406 a(i) = 3.14
407 enddo
408 !$omp end target teams distribute parallel do
411 !$omp target teams distribute parallel do simd map(a)
412 do i = 1, N
413 a(i) = 3.14
414 enddo
415 !$omp end target teams distribute parallel do simd
417 !$omp target teams distribute parallel do simd device(0)
418 do i = 1, N
419 a(i) = 3.14
420 enddo
421 !$omp end target teams distribute parallel do simd
423 !ERROR: At most one DEVICE clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
424 !$omp target teams distribute parallel do simd device(0) device(1)
425 do i = 1, N
426 a(i) = 3.14
427 enddo
428 !$omp end target teams distribute parallel do simd
430 !$omp target teams distribute parallel do simd defaultmap(tofrom:scalar)
431 do i = 1, N
432 a(i) = 3.14
433 enddo
434 !$omp end target teams distribute parallel do simd
436 !ERROR: 'variable-category' modifier is required
437 !$omp target teams distribute parallel do simd defaultmap(tofrom)
438 do i = 1, N
439 a(i) = 3.14
440 enddo
441 !$omp end target teams distribute parallel do simd
443 !ERROR: At most one DEFAULTMAP clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
444 !$omp target teams distribute parallel do simd defaultmap(tofrom:scalar) defaultmap(tofrom:scalar)
445 do i = 1, N
446 a(i) = 3.14
447 enddo
448 !$omp end target teams distribute parallel do simd
450 !$omp target teams distribute parallel do simd num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
451 do i = 1, N
452 a(i) = 3.14
453 enddo
454 !$omp end target teams distribute parallel do simd
456 !ERROR: At most one NUM_TEAMS clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
457 !$omp target teams distribute parallel do simd num_teams(2) num_teams(3)
458 do i = 1, N
459 a(i) = 3.14
460 enddo
461 !$omp end target teams distribute parallel do simd
463 !ERROR: The parameter of the NUM_TEAMS clause must be a positive integer expression
464 !$omp target teams distribute parallel do simd num_teams(-1)
465 do i = 1, N
466 a(i) = 3.14
467 enddo
468 !$omp end target teams distribute parallel do simd
470 !ERROR: At most one THREAD_LIMIT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
471 !$omp target teams distribute parallel do simd thread_limit(2) thread_limit(3)
472 do i = 1, N
473 a(i) = 3.14
474 enddo
475 !$omp end target teams distribute parallel do simd
477 !ERROR: The parameter of the THREAD_LIMIT clause must be a positive integer expression
478 !$omp target teams distribute parallel do simd thread_limit(-1)
479 do i = 1, N
480 a(i) = 3.14
481 enddo
482 !$omp end target teams distribute parallel do simd
484 !ERROR: At most one DEFAULT clause can appear on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
485 !$omp target teams distribute parallel do simd default(shared) default(private)
486 do i = 1, N
487 a(i) = 3.14
488 enddo
489 !$omp end target teams distribute parallel do simd
491 !$omp target teams distribute parallel do simd num_teams(2) defaultmap(tofrom:scalar)
492 do i = 1, N
493 a(i) = 3.14
494 enddo
495 !$omp end target teams distribute parallel do simd
497 !$omp target teams distribute parallel do simd map(tofrom:a)
498 do i = 1, N
499 a(i) = 3.14
500 enddo
501 !$omp end target teams distribute parallel do simd
503 !ERROR: Only the TO, FROM, TOFROM, ALLOC map types are permitted for MAP clauses on the TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD directive
504 !$omp target teams distribute parallel do simd map(delete:a)
505 do i = 1, N
506 a(i) = 3.14
507 enddo
508 !$omp end target teams distribute parallel do simd
511 end program main