xref: /llvm-project/flang/test/Lower/OpenMP/if-clause.f90 (revision 57726c440c30b3f0b5ebfaf345b0237df4430259)
1! This test checks lowering of OpenMP IF clauses.
2
3! The "if" clause was added to the "simd" directive in OpenMP 5.0, and
4! to the "teams" directive in OpenMP 5.2.
5! RUN: bbc -fopenmp -fopenmp-version=52 -emit-hlfir %s -o - | FileCheck %s
6! RUN: %flang_fc1 -fopenmp -fopenmp-version=52 -emit-hlfir %s -o - | FileCheck %s
7
8program main
9  integer :: i
10
11  ! TODO When they are supported, add tests for:
12  ! - PARALLEL SECTIONS
13  ! - PARALLEL WORKSHARE
14  ! - TARGET UPDATE
15  ! - TASKLOOP
16  ! - TASKLOOP SIMD
17
18  ! ----------------------------------------------------------------------------
19  ! DISTRIBUTE PARALLEL DO
20  ! ----------------------------------------------------------------------------
21  !$omp teams
22
23  ! CHECK:      omp.parallel
24  ! CHECK-NOT:  if({{.*}})
25  ! CHECK-SAME: {
26  ! CHECK:      omp.distribute
27  ! CHECK-NOT:  if({{.*}})
28  ! CHECK-SAME: {
29  ! CHECK-NEXT: omp.wsloop
30  ! CHECK-NOT:  if({{.*}})
31  ! CHECK-SAME: {
32  ! CHECK-NEXT: omp.loop_nest
33  !$omp distribute parallel do
34  do i = 1, 10
35  end do
36  !$omp end distribute parallel do
37
38  ! CHECK:      omp.parallel
39  ! CHECK-SAME: if({{.*}})
40  ! CHECK:      omp.distribute
41  ! CHECK-NOT:  if({{.*}})
42  ! CHECK-SAME: {
43  ! CHECK-NEXT: omp.wsloop
44  ! CHECK-NOT:  if({{.*}})
45  ! CHECK-SAME: {
46  ! CHECK-NEXT: omp.loop_nest
47  !$omp distribute parallel do if(.true.)
48  do i = 1, 10
49  end do
50  !$omp end distribute parallel do
51
52  ! CHECK:      omp.parallel
53  ! CHECK-SAME: if({{.*}})
54  ! CHECK:      omp.distribute
55  ! CHECK-NOT:  if({{.*}})
56  ! CHECK-SAME: {
57  ! CHECK-NEXT: omp.wsloop
58  ! CHECK-NOT:  if({{.*}})
59  ! CHECK-SAME: {
60  ! CHECK-NEXT: omp.loop_nest
61  !$omp distribute parallel do if(parallel: .true.)
62  do i = 1, 10
63  end do
64  !$omp end distribute parallel do
65
66  !$omp end teams
67
68  ! ----------------------------------------------------------------------------
69  ! DISTRIBUTE PARALLEL DO SIMD
70  ! ----------------------------------------------------------------------------
71  !$omp teams
72
73  ! CHECK:      omp.parallel
74  ! CHECK-NOT:  if({{.*}})
75  ! CHECK-SAME: {
76  ! CHECK:      omp.distribute
77  ! CHECK-NOT:  if({{.*}})
78  ! CHECK-SAME: {
79  ! CHECK-NEXT: omp.wsloop
80  ! CHECK-NOT:  if({{.*}})
81  ! CHECK-SAME: {
82  ! CHECK-NEXT: omp.simd
83  ! CHECK-NOT:  if({{.*}})
84  ! CHECK-SAME: {
85  ! CHECK-NEXT: omp.loop_nest
86  !$omp distribute parallel do simd
87  do i = 1, 10
88  end do
89  !$omp end distribute parallel do simd
90
91  ! CHECK:      omp.parallel
92  ! CHECK-SAME: if({{.*}})
93  ! CHECK:      omp.distribute
94  ! CHECK-NOT:  if({{.*}})
95  ! CHECK-SAME: {
96  ! CHECK-NEXT: omp.wsloop
97  ! CHECK-NOT:  if({{.*}})
98  ! CHECK-SAME: {
99  ! CHECK-NEXT: omp.simd
100  ! CHECK-SAME: if({{.*}})
101  ! CHECK-NEXT: omp.loop_nest
102  !$omp distribute parallel do simd if(.true.)
103  do i = 1, 10
104  end do
105  !$omp end distribute parallel do simd
106
107  ! CHECK:      omp.parallel
108  ! CHECK-SAME: if({{.*}})
109  ! CHECK:      omp.distribute
110  ! CHECK-NOT:  if({{.*}})
111  ! CHECK-SAME: {
112  ! CHECK-NEXT: omp.wsloop
113  ! CHECK-NOT:  if({{.*}})
114  ! CHECK-SAME: {
115  ! CHECK-NEXT: omp.simd
116  ! CHECK-SAME: if({{.*}})
117  ! CHECK-NEXT: omp.loop_nest
118  !$omp distribute parallel do simd if(parallel: .true.) if(simd: .false.)
119  do i = 1, 10
120  end do
121  !$omp end distribute parallel do simd
122
123  ! CHECK:      omp.parallel
124  ! CHECK-SAME: if({{.*}})
125  ! CHECK:      omp.distribute
126  ! CHECK-NOT:  if({{.*}})
127  ! CHECK-SAME: {
128  ! CHECK-NEXT: omp.wsloop
129  ! CHECK-NOT:  if({{.*}})
130  ! CHECK-SAME: {
131  ! CHECK-NEXT: omp.simd
132  ! CHECK-NOT:  if({{.*}})
133  ! CHECK-SAME: {
134  ! CHECK-NEXT: omp.loop_nest
135  !$omp distribute parallel do simd if(parallel: .true.)
136  do i = 1, 10
137  end do
138  !$omp end distribute parallel do simd
139
140  ! CHECK:      omp.parallel
141  ! CHECK-NOT:  if({{.*}})
142  ! CHECK-SAME: {
143  ! CHECK:      omp.distribute
144  ! CHECK-NOT:  if({{.*}})
145  ! CHECK-SAME: {
146  ! CHECK-NEXT: omp.wsloop
147  ! CHECK-NOT:  if({{.*}})
148  ! CHECK-SAME: {
149  ! CHECK-NEXT: omp.simd
150  ! CHECK-SAME: if({{.*}})
151  ! CHECK-NEXT: omp.loop_nest
152  !$omp distribute parallel do simd if(simd: .true.)
153  do i = 1, 10
154  end do
155  !$omp end distribute parallel do simd
156
157  !$omp end teams
158
159  ! ----------------------------------------------------------------------------
160  ! DISTRIBUTE SIMD
161  ! ----------------------------------------------------------------------------
162  !$omp teams
163
164  ! CHECK:      omp.distribute
165  ! CHECK-NOT:  if({{.*}})
166  ! CHECK-SAME: {
167  ! CHECK-NEXT: omp.simd
168  ! CHECK-NOT:  if({{.*}})
169  ! CHECK-SAME: {
170  ! CHECK-NEXT: omp.loop_nest
171  !$omp distribute simd
172  do i = 1, 10
173  end do
174  !$omp end distribute simd
175
176  ! CHECK:      omp.distribute
177  ! CHECK-NOT:  if({{.*}})
178  ! CHECK-SAME: {
179  ! CHECK-NEXT: omp.simd
180  ! CHECK-SAME: if({{.*}})
181  ! CHECK-NEXT: omp.loop_nest
182  !$omp distribute simd if(.true.)
183  do i = 1, 10
184  end do
185  !$omp end distribute simd
186
187  ! CHECK:      omp.distribute
188  ! CHECK-NOT:  if({{.*}})
189  ! CHECK-SAME: {
190  ! CHECK-NEXT: omp.simd
191  ! CHECK-SAME: if({{.*}})
192  ! CHECK-NEXT: omp.loop_nest
193  !$omp distribute simd if(simd: .true.)
194  do i = 1, 10
195  end do
196  !$omp end distribute simd
197
198  !$omp end teams
199
200  ! ----------------------------------------------------------------------------
201  ! DO SIMD
202  ! ----------------------------------------------------------------------------
203  ! CHECK:      omp.wsloop
204  ! CHECK-NOT:  if({{.*}})
205  ! CHECK-SAME: {
206  ! CHECK-NEXT: omp.simd
207  ! CHECK-NOT:  if({{.*}})
208  ! CHECK-SAME: {
209  ! CHECK-NEXT: omp.loop_nest
210  !$omp do simd
211  do i = 1, 10
212  end do
213  !$omp end do simd
214
215  ! CHECK:      omp.wsloop
216  ! CHECK-NOT:  if({{.*}})
217  ! CHECK-SAME: {
218  ! CHECK-NEXT: omp.simd
219  ! CHECK-SAME: if({{.*}})
220  ! CHECK-NEXT: omp.loop_nest
221  !$omp do simd if(.true.)
222  do i = 1, 10
223  end do
224  !$omp end do simd
225
226  ! CHECK:      omp.wsloop
227  ! CHECK-NOT:  if({{.*}})
228  ! CHECK-SAME: {
229  ! CHECK-NEXT: omp.simd
230  ! CHECK-SAME: if({{.*}})
231  ! CHECK-NEXT: omp.loop_nest
232  !$omp do simd if(simd: .true.)
233  do i = 1, 10
234  end do
235  !$omp end do simd
236
237  ! ----------------------------------------------------------------------------
238  ! PARALLEL
239  ! ----------------------------------------------------------------------------
240  ! CHECK:      omp.parallel
241  ! CHECK-NOT:  if({{.*}})
242  ! CHECK-SAME: {
243  !$omp parallel
244  i = 10
245  !$omp end parallel
246
247  ! CHECK:      omp.parallel
248  ! CHECK-SAME: if({{.*}})
249  !$omp parallel if(.true.)
250  i = 10
251  !$omp end parallel
252
253  ! CHECK:      omp.parallel
254  ! CHECK-SAME: if({{.*}})
255  !$omp parallel if(parallel: .true.)
256  i = 10
257  !$omp end parallel
258
259  ! ----------------------------------------------------------------------------
260  ! PARALLEL DO
261  ! ----------------------------------------------------------------------------
262  ! CHECK:      omp.parallel
263  ! CHECK-NOT:  if({{.*}})
264  ! CHECK-SAME: {
265  ! CHECK:      omp.wsloop
266  ! CHECK-NOT:  if({{.*}})
267  ! CHECK-SAME: {
268  ! CHECK-NEXT: omp.loop_nest
269  !$omp parallel do
270  do i = 1, 10
271  end do
272  !$omp end parallel do
273
274  ! CHECK:      omp.parallel
275  ! CHECK-SAME: if({{.*}})
276  ! CHECK:      omp.wsloop
277  ! CHECK-NOT:  if({{.*}})
278  ! CHECK-SAME: {
279  ! CHECK-NEXT: omp.loop_nest
280  !$omp parallel do if(.true.)
281  do i = 1, 10
282  end do
283  !$omp end parallel do
284
285  ! CHECK:      omp.parallel
286  ! CHECK-SAME: if({{.*}})
287  ! CHECK:      omp.wsloop
288  ! CHECK-NOT:  if({{.*}})
289  ! CHECK-SAME: {
290  ! CHECK-NEXT: omp.loop_nest
291  !$omp parallel do if(parallel: .true.)
292  do i = 1, 10
293  end do
294  !$omp end parallel do
295
296  ! ----------------------------------------------------------------------------
297  ! PARALLEL DO SIMD
298  ! ----------------------------------------------------------------------------
299  ! CHECK:      omp.parallel
300  ! CHECK-NOT:  if({{.*}})
301  ! CHECK-SAME: {
302  ! CHECK:      omp.wsloop
303  ! CHECK-NOT:  if({{.*}})
304  ! CHECK-SAME: {
305  ! CHECK-NEXT: omp.simd
306  ! CHECK-NOT:  if({{.*}})
307  ! CHECK-SAME: {
308  ! CHECK-NEXT: omp.loop_nest
309  !$omp parallel do simd
310  do i = 1, 10
311  end do
312  !$omp end parallel do simd
313
314  ! CHECK:      omp.parallel
315  ! CHECK-SAME: if({{.*}})
316  ! CHECK:      omp.wsloop
317  ! CHECK-NOT:  if({{.*}})
318  ! CHECK-SAME: {
319  ! CHECK-NEXT: omp.simd
320  ! CHECK-SAME: if({{.*}})
321  ! CHECK-NEXT: omp.loop_nest
322  !$omp parallel do simd if(.true.)
323  do i = 1, 10
324  end do
325  !$omp end parallel do simd
326
327  ! CHECK:      omp.parallel
328  ! CHECK-SAME: if({{.*}})
329  ! CHECK:      omp.wsloop
330  ! CHECK-NOT:  if({{.*}})
331  ! CHECK-SAME: {
332  ! CHECK-NEXT: omp.simd
333  ! CHECK-SAME: if({{.*}})
334  ! CHECK-NEXT: omp.loop_nest
335  !$omp parallel do simd if(parallel: .true.) if(simd: .false.)
336  do i = 1, 10
337  end do
338  !$omp end parallel do simd
339
340  ! CHECK:      omp.parallel
341  ! CHECK-SAME: if({{.*}})
342  ! CHECK:      omp.wsloop
343  ! CHECK-NOT:  if({{.*}})
344  ! CHECK-SAME: {
345  ! CHECK-NEXT: omp.simd
346  ! CHECK-NOT:  if({{.*}})
347  ! CHECK-SAME: {
348  ! CHECK-NEXT: omp.loop_nest
349  !$omp parallel do simd if(parallel: .true.)
350  do i = 1, 10
351  end do
352  !$omp end parallel do simd
353
354  ! CHECK:      omp.parallel
355  ! CHECK-NOT:  if({{.*}})
356  ! CHECK-SAME: {
357  ! CHECK:      omp.wsloop
358  ! CHECK-NOT:  if({{.*}})
359  ! CHECK-SAME: {
360  ! CHECK-NEXT: omp.simd
361  ! CHECK-SAME: if({{.*}})
362  ! CHECK-NEXT: omp.loop_nest
363  !$omp parallel do simd if(simd: .true.)
364  do i = 1, 10
365  end do
366  !$omp end parallel do simd
367
368  ! ----------------------------------------------------------------------------
369  ! SIMD
370  ! ----------------------------------------------------------------------------
371  ! CHECK:      omp.simd
372  ! CHECK-NOT:  if({{.*}})
373  ! CHECK-SAME: {
374  ! CHECK-NEXT: omp.loop_nest
375  !$omp simd
376  do i = 1, 10
377  end do
378  !$omp end simd
379
380  ! CHECK:      omp.simd
381  ! CHECK-SAME: if({{.*}})
382  ! CHECK-NEXT: omp.loop_nest
383  !$omp simd if(.true.)
384  do i = 1, 10
385  end do
386  !$omp end simd
387
388  ! CHECK:      omp.simd
389  ! CHECK-SAME: if({{.*}})
390  ! CHECK-NEXT: omp.loop_nest
391  !$omp simd if(simd: .true.)
392  do i = 1, 10
393  end do
394  !$omp end simd
395
396  ! ----------------------------------------------------------------------------
397  ! TARGET
398  ! ----------------------------------------------------------------------------
399  ! CHECK:      omp.target
400  ! CHECK-NOT:  if({{.*}})
401  ! CHECK-SAME: {
402  !$omp target
403  !$omp end target
404
405  ! CHECK:      omp.target
406  ! CHECK-SAME: if({{.*}})
407  !$omp target if(.true.)
408  !$omp end target
409
410  ! CHECK:      omp.target
411  ! CHECK-SAME: if({{.*}})
412  !$omp target if(target: .true.)
413  !$omp end target
414
415  ! ----------------------------------------------------------------------------
416  ! TARGET DATA
417  ! ----------------------------------------------------------------------------
418  ! CHECK:      omp.target_data
419  ! CHECK-NOT:  if({{.*}})
420  ! CHECK-SAME: {
421  !$omp target data map(tofrom: i)
422  !$omp end target data
423
424  ! CHECK:      omp.target_data
425  ! CHECK-SAME: if({{.*}})
426  !$omp target data map(tofrom: i) if(.true.)
427  !$omp end target data
428
429  ! CHECK:      omp.target_data
430  ! CHECK-SAME: if({{.*}})
431  !$omp target data map(tofrom: i) if(target data: .true.)
432  !$omp end target data
433
434  ! ----------------------------------------------------------------------------
435  ! TARGET ENTER DATA
436  ! ----------------------------------------------------------------------------
437  ! CHECK:      omp.target_enter_data
438  ! CHECK-NOT:  if({{.*}})
439  ! CHECK-SAME: map
440  !$omp target enter data map(to: i)
441
442  ! CHECK:      omp.target_enter_data
443  ! CHECK-SAME: if({{.*}})
444  !$omp target enter data map(to: i) if(.true.)
445
446  ! CHECK:      omp.target_enter_data
447  ! CHECK-SAME: if({{.*}})
448  !$omp target enter data map(to: i) if(target enter data: .true.)
449
450  ! ----------------------------------------------------------------------------
451  ! TARGET EXIT DATA
452  ! ----------------------------------------------------------------------------
453  ! CHECK:      omp.target_exit_data
454  ! CHECK-NOT:  if({{.*}})
455  ! CHECK-SAME: map
456  !$omp target exit data map(from: i)
457
458  ! CHECK:      omp.target_exit_data
459  ! CHECK-SAME: if({{.*}})
460  !$omp target exit data map(from: i) if(.true.)
461
462  ! CHECK:      omp.target_exit_data
463  ! CHECK-SAME: if({{.*}})
464  !$omp target exit data map(from: i) if(target exit data: .true.)
465
466  ! ----------------------------------------------------------------------------
467  ! TARGET PARALLEL DO
468  ! ----------------------------------------------------------------------------
469  ! CHECK:      omp.target
470  ! CHECK-NOT:  if({{.*}})
471  ! CHECK-SAME: {
472  ! CHECK:      omp.parallel
473  ! CHECK-NOT:  if({{.*}})
474  ! CHECK-SAME: {
475  ! CHECK:      omp.wsloop
476  ! CHECK-NOT:  if({{.*}})
477  ! CHECK-SAME: {
478  ! CHECK-NEXT: omp.loop_nest
479  !$omp target parallel do
480  do i = 1, 10
481  end do
482  !$omp end target parallel do
483
484  ! CHECK:      omp.target
485  ! CHECK-SAME: if({{.*}})
486  ! CHECK:      omp.parallel
487  ! CHECK-SAME: if({{.*}})
488  ! CHECK:      omp.wsloop
489  ! CHECK-NOT:  if({{.*}})
490  ! CHECK-SAME: {
491  ! CHECK-NEXT: omp.loop_nest
492  !$omp target parallel do if(.true.)
493  do i = 1, 10
494  end do
495  !$omp end target parallel do
496
497  ! CHECK:      omp.target
498  ! CHECK-SAME: if({{.*}})
499  ! CHECK:      omp.parallel
500  ! CHECK-SAME: if({{.*}})
501  ! CHECK:      omp.wsloop
502  ! CHECK-NOT:  if({{.*}})
503  ! CHECK-SAME: {
504  ! CHECK-NEXT: omp.loop_nest
505  !$omp target parallel do if(target: .true.) if(parallel: .false.)
506  do i = 1, 10
507  end do
508  !$omp end target parallel do
509
510  ! CHECK:      omp.target
511  ! CHECK-SAME: if({{.*}})
512  ! CHECK:      omp.parallel
513  ! CHECK-NOT:  if({{.*}})
514  ! CHECK-SAME: {
515  ! CHECK:      omp.wsloop
516  ! CHECK-NOT:  if({{.*}})
517  ! CHECK-SAME: {
518  ! CHECK-NEXT: omp.loop_nest
519  !$omp target parallel do if(target: .true.)
520  do i = 1, 10
521  end do
522  !$omp end target parallel do
523
524  ! CHECK:      omp.target
525  ! CHECK-NOT:  if({{.*}})
526  ! CHECK-SAME: {
527  ! CHECK:      omp.parallel
528  ! CHECK-SAME: if({{.*}})
529  ! CHECK:      omp.wsloop
530  ! CHECK-NOT:  if({{.*}})
531  ! CHECK-SAME: {
532  ! CHECK-NEXT: omp.loop_nest
533  !$omp target parallel do if(parallel: .true.)
534  do i = 1, 10
535  end do
536  !$omp end target parallel do
537
538  ! ----------------------------------------------------------------------------
539  ! TARGET PARALLEL DO SIMD
540  ! ----------------------------------------------------------------------------
541  ! CHECK:      omp.target
542  ! CHECK-NOT:  if({{.*}})
543  ! CHECK-SAME: {
544  ! CHECK:      omp.parallel
545  ! CHECK-NOT:  if({{.*}})
546  ! CHECK-SAME: {
547  ! CHECK:      omp.wsloop
548  ! CHECK-NOT:  if({{.*}})
549  ! CHECK-SAME: {
550  ! CHECK-NEXT: omp.simd
551  ! CHECK-NOT:  if({{.*}})
552  ! CHECK-SAME: {
553  ! CHECK-NEXT: omp.loop_nest
554  !$omp target parallel do simd
555  do i = 1, 10
556  end do
557  !$omp end target parallel do simd
558
559  ! CHECK:      omp.target
560  ! CHECK-SAME: if({{.*}})
561  ! CHECK:      omp.parallel
562  ! CHECK-SAME: if({{.*}})
563  ! CHECK:      omp.wsloop
564  ! CHECK-NOT:  if({{.*}})
565  ! CHECK-SAME: {
566  ! CHECK-NEXT: omp.simd
567  ! CHECK-SAME: if({{.*}})
568  ! CHECK-NEXT: omp.loop_nest
569  !$omp target parallel do simd if(.true.)
570  do i = 1, 10
571  end do
572  !$omp end target parallel do simd
573
574  ! CHECK:      omp.target
575  ! CHECK-SAME: if({{.*}})
576  ! CHECK:      omp.parallel
577  ! CHECK-SAME: if({{.*}})
578  ! CHECK:      omp.wsloop
579  ! CHECK-NOT:  if({{.*}})
580  ! CHECK-SAME: {
581  ! CHECK-NEXT: omp.simd
582  ! CHECK-SAME: if({{.*}})
583  ! CHECK-NEXT: omp.loop_nest
584  !$omp target parallel do simd if(target: .true.) if(parallel: .false.) &
585  !$omp&                        if(simd: .true.)
586  do i = 1, 10
587  end do
588  !$omp end target parallel do simd
589
590  ! CHECK:      omp.target
591  ! CHECK-SAME: if({{.*}})
592  ! CHECK:      omp.parallel
593  ! CHECK-NOT:  if({{.*}})
594  ! CHECK-SAME: {
595  ! CHECK:      omp.wsloop
596  ! CHECK-NOT:  if({{.*}})
597  ! CHECK-SAME: {
598  ! CHECK-NEXT: omp.simd
599  ! CHECK-NOT:  if({{.*}})
600  ! CHECK-SAME: {
601  ! CHECK-NEXT: omp.loop_nest
602  !$omp target parallel do simd if(target: .true.)
603  do i = 1, 10
604  end do
605  !$omp end target parallel do simd
606
607  ! CHECK:      omp.target
608  ! CHECK-NOT:  if({{.*}})
609  ! CHECK-SAME: {
610  ! CHECK:      omp.parallel
611  ! CHECK-SAME: if({{.*}})
612  ! CHECK:      omp.wsloop
613  ! CHECK-NOT:  if({{.*}})
614  ! CHECK-SAME: {
615  ! CHECK-NEXT: omp.simd
616  ! CHECK-SAME: if({{.*}})
617  ! CHECK-NEXT: omp.loop_nest
618  !$omp target parallel do simd if(parallel: .true.) if(simd: .false.)
619  do i = 1, 10
620  end do
621  !$omp end target parallel do simd
622
623  ! ----------------------------------------------------------------------------
624  ! TARGET PARALLEL
625  ! ----------------------------------------------------------------------------
626  ! CHECK:      omp.target
627  ! CHECK-NOT:  if({{.*}})
628  ! CHECK-SAME: {
629  ! CHECK:      omp.parallel
630  ! CHECK-NOT:  if({{.*}})
631  ! CHECK-SAME: {
632  !$omp target parallel
633  i = 1
634  !$omp end target parallel
635
636  ! CHECK:      omp.target
637  ! CHECK-SAME: if({{.*}})
638  ! CHECK:      omp.parallel
639  ! CHECK-SAME: if({{.*}})
640  !$omp target parallel if(.true.)
641  i = 1
642  !$omp end target parallel
643
644  ! CHECK:      omp.target
645  ! CHECK-SAME: if({{.*}})
646  ! CHECK:      omp.parallel
647  ! CHECK-SAME: if({{.*}})
648  !$omp target parallel if(target: .true.) if(parallel: .false.)
649  i = 1
650  !$omp end target parallel
651
652  ! CHECK:      omp.target
653  ! CHECK-SAME: if({{.*}})
654  ! CHECK:      omp.parallel
655  ! CHECK-NOT:  if({{.*}})
656  ! CHECK-SAME: {
657  !$omp target parallel if(target: .true.)
658  i = 1
659  !$omp end target parallel
660
661  ! CHECK:      omp.target
662  ! CHECK-NOT:  if({{.*}})
663  ! CHECK-SAME: {
664  ! CHECK:      omp.parallel
665  ! CHECK-SAME: if({{.*}})
666  !$omp target parallel if(parallel: .true.)
667  i = 1
668  !$omp end target parallel
669
670  ! ----------------------------------------------------------------------------
671  ! TARGET SIMD
672  ! ----------------------------------------------------------------------------
673  ! CHECK:      omp.target
674  ! CHECK-NOT:  if({{.*}})
675  ! CHECK-SAME: {
676  ! CHECK:      omp.simd
677  ! CHECK-NOT:  if({{.*}})
678  ! CHECK-SAME: {
679  ! CHECK-NEXT: omp.loop_nest
680  !$omp target simd
681  do i = 1, 10
682  end do
683  !$omp end target simd
684
685  ! CHECK:      omp.target
686  ! CHECK-SAME: if({{.*}})
687  ! CHECK:      omp.simd
688  ! CHECK-SAME: if({{.*}})
689  ! CHECK-NEXT: omp.loop_nest
690  !$omp target simd if(.true.)
691  do i = 1, 10
692  end do
693  !$omp end target simd
694
695  ! CHECK:      omp.target
696  ! CHECK-SAME: if({{.*}})
697  ! CHECK:      omp.simd
698  ! CHECK-SAME: if({{.*}})
699  ! CHECK-NEXT: omp.loop_nest
700  !$omp target simd if(target: .true.) if(simd: .false.)
701  do i = 1, 10
702  end do
703  !$omp end target simd
704
705  ! CHECK:      omp.target
706  ! CHECK-SAME: if({{.*}})
707  ! CHECK:      omp.simd
708  ! CHECK-NOT:  if({{.*}})
709  ! CHECK-SAME: {
710  ! CHECK-NEXT: omp.loop_nest
711  !$omp target simd if(target: .true.)
712  do i = 1, 10
713  end do
714  !$omp end target simd
715
716  ! CHECK:      omp.target
717  ! CHECK-NOT:  if({{.*}})
718  ! CHECK-SAME: {
719  ! CHECK:      omp.simd
720  ! CHECK-SAME: if({{.*}})
721  ! CHECK-NEXT: omp.loop_nest
722  !$omp target simd if(simd: .true.)
723  do i = 1, 10
724  end do
725  !$omp end target simd
726
727  ! ----------------------------------------------------------------------------
728  ! TARGET TEAMS DISTRIBUTE
729  ! ----------------------------------------------------------------------------
730  ! CHECK:      omp.target
731  ! CHECK-NOT:  if({{.*}})
732  ! CHECK-SAME: {
733  ! CHECK:      omp.teams
734  ! CHECK-NOT:  if({{.*}})
735  ! CHECK-SAME: {
736  ! CHECK:      omp.distribute
737  ! CHECK-NOT:  if({{.*}})
738  ! CHECK-SAME: {
739  ! CHECK-NEXT: omp.loop_nest
740  !$omp target teams distribute
741  do i = 1, 10
742  end do
743  !$omp end target teams distribute
744
745  ! CHECK:      omp.target
746  ! CHECK-SAME: if({{.*}})
747  ! CHECK:      omp.teams
748  ! CHECK-SAME: if({{.*}})
749  ! CHECK:      omp.distribute
750  ! CHECK-NOT:  if({{.*}})
751  ! CHECK-SAME: {
752  ! CHECK-NEXT: omp.loop_nest
753  !$omp target teams distribute if(.true.)
754  do i = 1, 10
755  end do
756  !$omp end target teams distribute
757
758  ! CHECK:      omp.target
759  ! CHECK-SAME: if({{.*}})
760  ! CHECK:      omp.teams
761  ! CHECK-SAME: if({{.*}})
762  ! CHECK:      omp.distribute
763  ! CHECK-NOT:  if({{.*}})
764  ! CHECK-SAME: {
765  ! CHECK-NEXT: omp.loop_nest
766  !$omp target teams distribute if(target: .true.) if(teams: .false.)
767  do i = 1, 10
768  end do
769  !$omp end target teams distribute
770
771  ! CHECK:      omp.target
772  ! CHECK-SAME: if({{.*}})
773  ! CHECK:      omp.teams
774  ! CHECK-NOT:  if({{.*}})
775  ! CHECK-SAME: {
776  ! CHECK:      omp.distribute
777  ! CHECK-NOT:  if({{.*}})
778  ! CHECK-SAME: {
779  ! CHECK-NEXT: omp.loop_nest
780  !$omp target teams distribute if(target: .true.)
781  do i = 1, 10
782  end do
783  !$omp end target teams distribute
784
785  ! CHECK:      omp.target
786  ! CHECK-NOT:  if({{.*}})
787  ! CHECK-SAME: {
788  ! CHECK:      omp.teams
789  ! CHECK-SAME: if({{.*}})
790  ! CHECK:      omp.distribute
791  ! CHECK-NOT:  if({{.*}})
792  ! CHECK-SAME: {
793  ! CHECK-NEXT: omp.loop_nest
794  !$omp target teams distribute if(teams: .true.)
795  do i = 1, 10
796  end do
797  !$omp end target teams distribute
798
799  ! ----------------------------------------------------------------------------
800  ! TARGET TEAMS DISTRIBUTE PARALLEL DO
801  ! ----------------------------------------------------------------------------
802  ! CHECK:      omp.target
803  ! CHECK-NOT:  if({{.*}})
804  ! CHECK-SAME: {
805  ! CHECK:      omp.teams
806  ! CHECK-NOT:  if({{.*}})
807  ! CHECK-SAME: {
808  ! CHECK:      omp.parallel
809  ! CHECK-NOT:  if({{.*}})
810  ! CHECK-SAME: {
811  ! CHECK:      omp.distribute
812  ! CHECK-NOT:  if({{.*}})
813  ! CHECK-SAME: {
814  ! CHECK-NEXT: omp.wsloop
815  ! CHECK-NOT:  if({{.*}})
816  ! CHECK-SAME: {
817  ! CHECK-NEXT: omp.loop_nest
818  !$omp target teams distribute parallel do
819  do i = 1, 10
820  end do
821  !$omp end target teams distribute parallel do
822
823  ! CHECK:      omp.target
824  ! CHECK-SAME: if({{.*}})
825  ! CHECK:      omp.teams
826  ! CHECK-SAME: if({{.*}})
827  ! CHECK:      omp.parallel
828  ! CHECK-SAME: if({{.*}})
829  ! CHECK:      omp.distribute
830  ! CHECK-NOT:  if({{.*}})
831  ! CHECK-SAME: {
832  ! CHECK-NEXT: omp.wsloop
833  ! CHECK-NOT:  if({{.*}})
834  ! CHECK-SAME: {
835  ! CHECK-NEXT: omp.loop_nest
836  !$omp target teams distribute parallel do if(.true.)
837  do i = 1, 10
838  end do
839  !$omp end target teams distribute parallel do
840
841  ! CHECK:      omp.target
842  ! CHECK-SAME: if({{.*}})
843  ! CHECK:      omp.teams
844  ! CHECK-SAME: if({{.*}})
845  ! CHECK:      omp.parallel
846  ! CHECK-SAME: if({{.*}})
847  ! CHECK:      omp.distribute
848  ! CHECK-NOT:  if({{.*}})
849  ! CHECK-SAME: {
850  ! CHECK-NEXT: omp.wsloop
851  ! CHECK-NOT:  if({{.*}})
852  ! CHECK-SAME: {
853  ! CHECK-NEXT: omp.loop_nest
854  !$omp target teams distribute parallel do if(target: .true.) if(teams: .false.) if(parallel: .true.)
855  do i = 1, 10
856  end do
857  !$omp end target teams distribute parallel do
858
859  ! CHECK:      omp.target
860  ! CHECK-SAME: if({{.*}})
861  ! CHECK:      omp.teams
862  ! CHECK-NOT:  if({{.*}})
863  ! CHECK-SAME: {
864  ! CHECK:      omp.parallel
865  ! CHECK-NOT:  if({{.*}})
866  ! CHECK-SAME: {
867  ! CHECK:      omp.distribute
868  ! CHECK-NOT:  if({{.*}})
869  ! CHECK-SAME: {
870  ! CHECK-NEXT: omp.wsloop
871  ! CHECK-NOT:  if({{.*}})
872  ! CHECK-SAME: {
873  ! CHECK-NEXT: omp.loop_nest
874  !$omp target teams distribute parallel do if(target: .true.)
875  do i = 1, 10
876  end do
877  !$omp end target teams distribute parallel do
878
879  ! CHECK:      omp.target
880  ! CHECK-NOT:  if({{.*}})
881  ! CHECK-SAME: {
882  ! CHECK:      omp.teams
883  ! CHECK-SAME: if({{.*}})
884  ! CHECK:      omp.parallel
885  ! CHECK-NOT:  if({{.*}})
886  ! CHECK-SAME: {
887  ! CHECK:      omp.distribute
888  ! CHECK-NOT:  if({{.*}})
889  ! CHECK-SAME: {
890  ! CHECK-NEXT: omp.wsloop
891  ! CHECK-NOT:  if({{.*}})
892  ! CHECK-SAME: {
893  ! CHECK-NEXT: omp.loop_nest
894  !$omp target teams distribute parallel do if(teams: .true.)
895  do i = 1, 10
896  end do
897  !$omp end target teams distribute parallel do
898
899  ! CHECK:      omp.target
900  ! CHECK-NOT:  if({{.*}})
901  ! CHECK-SAME: {
902  ! CHECK:      omp.teams
903  ! CHECK-NOT:  if({{.*}})
904  ! CHECK-SAME: {
905  ! CHECK:      omp.parallel
906  ! CHECK-SAME: if({{.*}})
907  ! CHECK:      omp.distribute
908  ! CHECK-NOT:  if({{.*}})
909  ! CHECK-SAME: {
910  ! CHECK-NEXT: omp.wsloop
911  ! CHECK-NOT:  if({{.*}})
912  ! CHECK-SAME: {
913  ! CHECK-NEXT: omp.loop_nest
914  !$omp target teams distribute parallel do if(parallel: .true.)
915  do i = 1, 10
916  end do
917  !$omp end target teams distribute parallel do
918
919  ! ----------------------------------------------------------------------------
920  ! TARGET TEAMS DISTRIBUTE PARALLEL DO SIMD
921  ! ----------------------------------------------------------------------------
922  ! CHECK:      omp.target
923  ! CHECK-NOT:  if({{.*}})
924  ! CHECK-SAME: {
925  ! CHECK:      omp.teams
926  ! CHECK-NOT:  if({{.*}})
927  ! CHECK-SAME: {
928  ! CHECK:      omp.parallel
929  ! CHECK-NOT:  if({{.*}})
930  ! CHECK-SAME: {
931  ! CHECK:      omp.distribute
932  ! CHECK-NOT:  if({{.*}})
933  ! CHECK-SAME: {
934  ! CHECK-NEXT: omp.wsloop
935  ! CHECK-NOT:  if({{.*}})
936  ! CHECK-SAME: {
937  ! CHECK-NEXT: omp.simd
938  ! CHECK-NOT:  if({{.*}})
939  ! CHECK-SAME: {
940  ! CHECK-NEXT: omp.loop_nest
941  !$omp target teams distribute parallel do simd
942  do i = 1, 10
943  end do
944  !$omp end target teams distribute parallel do simd
945
946  ! CHECK:      omp.target
947  ! CHECK-SAME: if({{.*}})
948  ! CHECK:      omp.teams
949  ! CHECK-SAME: if({{.*}})
950  ! CHECK:      omp.parallel
951  ! CHECK-SAME: if({{.*}})
952  ! CHECK:      omp.distribute
953  ! CHECK-NOT:  if({{.*}})
954  ! CHECK-SAME: {
955  ! CHECK-NEXT: omp.wsloop
956  ! CHECK-NOT:  if({{.*}})
957  ! CHECK-SAME: {
958  ! CHECK-NEXT: omp.simd
959  ! CHECK-SAME: if({{.*}})
960  ! CHECK-NEXT: omp.loop_nest
961  !$omp target teams distribute parallel do simd if(.true.)
962  do i = 1, 10
963  end do
964  !$omp end target teams distribute parallel do simd
965
966  ! CHECK:      omp.target
967  ! CHECK-SAME: if({{.*}})
968  ! CHECK:      omp.teams
969  ! CHECK-SAME: if({{.*}})
970  ! CHECK:      omp.parallel
971  ! CHECK-SAME: if({{.*}})
972  ! CHECK:      omp.distribute
973  ! CHECK-NOT:  if({{.*}})
974  ! CHECK-SAME: {
975  ! CHECK-NEXT: omp.wsloop
976  ! CHECK-NOT:  if({{.*}})
977  ! CHECK-SAME: {
978  ! CHECK-NEXT: omp.simd
979  ! CHECK-SAME: if({{.*}})
980  ! CHECK-NEXT: omp.loop_nest
981  !$omp target teams distribute parallel do simd if(target: .true.) if(teams: .false.) if(parallel: .true.) if(simd: .false.)
982  do i = 1, 10
983  end do
984  !$omp end target teams distribute parallel do simd
985
986  ! CHECK:      omp.target
987  ! CHECK-SAME: if({{.*}})
988  ! CHECK:      omp.teams
989  ! CHECK-NOT:  if({{.*}})
990  ! CHECK-SAME: {
991  ! CHECK:      omp.parallel
992  ! CHECK-NOT:  if({{.*}})
993  ! CHECK-SAME: {
994  ! CHECK:      omp.distribute
995  ! CHECK-NOT:  if({{.*}})
996  ! CHECK-SAME: {
997  ! CHECK-NEXT: omp.wsloop
998  ! CHECK-NOT:  if({{.*}})
999  ! CHECK-SAME: {
1000  ! CHECK-NEXT: omp.simd
1001  ! CHECK-NOT:  if({{.*}})
1002  ! CHECK-SAME: {
1003  ! CHECK-NEXT: omp.loop_nest
1004  !$omp target teams distribute parallel do simd if(target: .true.)
1005  do i = 1, 10
1006  end do
1007  !$omp end target teams distribute parallel do simd
1008
1009  ! CHECK:      omp.target
1010  ! CHECK-NOT:  if({{.*}})
1011  ! CHECK-SAME: {
1012  ! CHECK:      omp.teams
1013  ! CHECK-SAME: if({{.*}})
1014  ! CHECK:      omp.parallel
1015  ! CHECK-NOT:  if({{.*}})
1016  ! CHECK-SAME: {
1017  ! CHECK:      omp.distribute
1018  ! CHECK-NOT:  if({{.*}})
1019  ! CHECK-SAME: {
1020  ! CHECK-NEXT: omp.wsloop
1021  ! CHECK-NOT:  if({{.*}})
1022  ! CHECK-SAME: {
1023  ! CHECK-NEXT: omp.simd
1024  ! CHECK-NOT:  if({{.*}})
1025  ! CHECK-SAME: {
1026  ! CHECK-NEXT: omp.loop_nest
1027  !$omp target teams distribute parallel do simd if(teams: .true.)
1028  do i = 1, 10
1029  end do
1030  !$omp end target teams distribute parallel do simd
1031
1032  ! CHECK:      omp.target
1033  ! CHECK-NOT:  if({{.*}})
1034  ! CHECK-SAME: {
1035  ! CHECK:      omp.teams
1036  ! CHECK-NOT:  if({{.*}})
1037  ! CHECK-SAME: {
1038  ! CHECK:      omp.parallel
1039  ! CHECK-SAME: if({{.*}})
1040  ! CHECK:      omp.distribute
1041  ! CHECK-NOT:  if({{.*}})
1042  ! CHECK-SAME: {
1043  ! CHECK-NEXT: omp.wsloop
1044  ! CHECK-NOT:  if({{.*}})
1045  ! CHECK-SAME: {
1046  ! CHECK-NEXT: omp.simd
1047  ! CHECK-NOT:  if({{.*}})
1048  ! CHECK-SAME: {
1049  ! CHECK-NEXT: omp.loop_nest
1050  !$omp target teams distribute parallel do simd if(parallel: .true.)
1051  do i = 1, 10
1052  end do
1053  !$omp end target teams distribute parallel do simd
1054
1055  ! CHECK:      omp.target
1056  ! CHECK-NOT:  if({{.*}})
1057  ! CHECK-SAME: {
1058  ! CHECK:      omp.teams
1059  ! CHECK-NOT:  if({{.*}})
1060  ! CHECK-SAME: {
1061  ! CHECK:      omp.parallel
1062  ! CHECK-NOT:  if({{.*}})
1063  ! CHECK-SAME: {
1064  ! CHECK:      omp.distribute
1065  ! CHECK-NOT:  if({{.*}})
1066  ! CHECK-SAME: {
1067  ! CHECK-NEXT: omp.wsloop
1068  ! CHECK-NOT:  if({{.*}})
1069  ! CHECK-SAME: {
1070  ! CHECK-NEXT: omp.simd
1071  ! CHECK-SAME: if({{.*}})
1072  ! CHECK-NEXT: omp.loop_nest
1073  !$omp target teams distribute parallel do simd if(simd: .true.)
1074  do i = 1, 10
1075  end do
1076  !$omp end target teams distribute parallel do simd
1077
1078  ! ----------------------------------------------------------------------------
1079  ! TARGET TEAMS DISTRIBUTE SIMD
1080  ! ----------------------------------------------------------------------------
1081  ! CHECK:      omp.target
1082  ! CHECK-NOT:  if({{.*}})
1083  ! CHECK-SAME: {
1084  ! CHECK:      omp.teams
1085  ! CHECK-NOT:  if({{.*}})
1086  ! CHECK-SAME: {
1087  ! CHECK:      omp.distribute
1088  ! CHECK-NOT:  if({{.*}})
1089  ! CHECK-SAME: {
1090  ! CHECK-NEXT: omp.simd
1091  ! CHECK-NOT:  if({{.*}})
1092  ! CHECK-SAME: {
1093  ! CHECK-NEXT: omp.loop_nest
1094  !$omp target teams distribute simd
1095  do i = 1, 10
1096  end do
1097  !$omp end target teams distribute simd
1098
1099  ! CHECK:      omp.target
1100  ! CHECK-SAME: if({{.*}})
1101  ! CHECK:      omp.teams
1102  ! CHECK-SAME: if({{.*}})
1103  ! CHECK:      omp.distribute
1104  ! CHECK-NOT:  if({{.*}})
1105  ! CHECK-SAME: {
1106  ! CHECK-NEXT: omp.simd
1107  ! CHECK-SAME: if({{.*}})
1108  ! CHECK-NEXT: omp.loop_nest
1109  !$omp target teams distribute simd if(.true.)
1110  do i = 1, 10
1111  end do
1112  !$omp end target teams distribute simd
1113
1114  ! CHECK:      omp.target
1115  ! CHECK-SAME: if({{.*}})
1116  ! CHECK:      omp.teams
1117  ! CHECK-SAME: if({{.*}})
1118  ! CHECK:      omp.distribute
1119  ! CHECK-NOT:  if({{.*}})
1120  ! CHECK-SAME: {
1121  ! CHECK-NEXT: omp.simd
1122  ! CHECK-SAME: if({{.*}})
1123  ! CHECK-NEXT: omp.loop_nest
1124  !$omp target teams distribute simd if(target: .true.) if(teams: .false.) if(simd: .false.)
1125  do i = 1, 10
1126  end do
1127  !$omp end target teams distribute simd
1128
1129  ! CHECK:      omp.target
1130  ! CHECK-SAME: if({{.*}})
1131  ! CHECK:      omp.teams
1132  ! CHECK-NOT:  if({{.*}})
1133  ! CHECK-SAME: {
1134  ! CHECK:      omp.distribute
1135  ! CHECK-NOT:  if({{.*}})
1136  ! CHECK-SAME: {
1137  ! CHECK-NEXT: omp.simd
1138  ! CHECK-NOT:  if({{.*}})
1139  ! CHECK-SAME: {
1140  ! CHECK-NEXT: omp.loop_nest
1141  !$omp target teams distribute simd if(target: .true.)
1142  do i = 1, 10
1143  end do
1144  !$omp end target teams distribute simd
1145
1146  ! CHECK:      omp.target
1147  ! CHECK-NOT:  if({{.*}})
1148  ! CHECK-SAME: {
1149  ! CHECK:      omp.teams
1150  ! CHECK-SAME: if({{.*}})
1151  ! CHECK:      omp.distribute
1152  ! CHECK-NOT:  if({{.*}})
1153  ! CHECK-SAME: {
1154  ! CHECK-NEXT: omp.simd
1155  ! CHECK-NOT:  if({{.*}})
1156  ! CHECK-SAME: {
1157  ! CHECK-NEXT: omp.loop_nest
1158  !$omp target teams distribute simd if(teams: .true.)
1159  do i = 1, 10
1160  end do
1161  !$omp end target teams distribute simd
1162
1163  ! CHECK:      omp.target
1164  ! CHECK-NOT:  if({{.*}})
1165  ! CHECK-SAME: {
1166  ! CHECK:      omp.teams
1167  ! CHECK-NOT:  if({{.*}})
1168  ! CHECK-SAME: {
1169  ! CHECK:      omp.distribute
1170  ! CHECK-NOT:  if({{.*}})
1171  ! CHECK-SAME: {
1172  ! CHECK-NEXT: omp.simd
1173  ! CHECK-SAME: if({{.*}})
1174  ! CHECK-NEXT: omp.loop_nest
1175  !$omp target teams distribute simd if(simd: .true.)
1176  do i = 1, 10
1177  end do
1178  !$omp end target teams distribute simd
1179
1180  ! ----------------------------------------------------------------------------
1181  ! TARGET TEAMS
1182  ! ----------------------------------------------------------------------------
1183  ! CHECK:      omp.target
1184  ! CHECK-NOT:  if({{.*}})
1185  ! CHECK-SAME: {
1186  ! CHECK:      omp.teams
1187  ! CHECK-NOT:  if({{.*}})
1188  ! CHECK-SAME: {
1189  !$omp target teams
1190  i = 1
1191  !$omp end target teams
1192
1193  ! CHECK:      omp.target
1194  ! CHECK-SAME: if({{.*}})
1195  ! CHECK:      omp.teams
1196  ! CHECK-SAME: if({{.*}})
1197  !$omp target teams if(.true.)
1198  i = 1
1199  !$omp end target teams
1200
1201  ! CHECK:      omp.target
1202  ! CHECK-SAME: if({{.*}})
1203  ! CHECK:      omp.teams
1204  ! CHECK-SAME: if({{.*}})
1205  !$omp target teams if(target: .true.) if(teams: .false.)
1206  i = 1
1207  !$omp end target teams
1208
1209  ! CHECK:      omp.target
1210  ! CHECK-SAME: if({{.*}})
1211  ! CHECK:      omp.teams
1212  ! CHECK-NOT:  if({{.*}})
1213  ! CHECK-SAME: {
1214  !$omp target teams if(target: .true.)
1215  i = 1
1216  !$omp end target teams
1217
1218  ! CHECK:      omp.target
1219  ! CHECK-NOT:  if({{.*}})
1220  ! CHECK-SAME: {
1221  ! CHECK:      omp.teams
1222  ! CHECK-SAME: if({{.*}})
1223  !$omp target teams if(teams: .true.)
1224  i = 1
1225  !$omp end target teams
1226
1227  ! ----------------------------------------------------------------------------
1228  ! TASK
1229  ! ----------------------------------------------------------------------------
1230  ! CHECK:      omp.task
1231  ! CHECK-NOT:  if({{.*}})
1232  ! CHECK-SAME: {
1233  !$omp task
1234  !$omp end task
1235
1236  ! CHECK:      omp.task
1237  ! CHECK-SAME: if({{.*}})
1238  !$omp task if(.true.)
1239  !$omp end task
1240
1241  ! CHECK:      omp.task
1242  ! CHECK-SAME: if({{.*}})
1243  !$omp task if(task: .true.)
1244  !$omp end task
1245
1246  ! ----------------------------------------------------------------------------
1247  ! TEAMS DISTRIBUTE
1248  ! ----------------------------------------------------------------------------
1249  ! CHECK:      omp.teams
1250  ! CHECK-NOT:  if({{.*}})
1251  ! CHECK-SAME: {
1252  ! CHECK:      omp.distribute
1253  ! CHECK-NOT:  if({{.*}})
1254  ! CHECK-SAME: {
1255  ! CHECK-NEXT: omp.loop_nest
1256  !$omp teams distribute
1257  do i = 1, 10
1258  end do
1259  !$omp end teams distribute
1260
1261  ! CHECK:      omp.teams
1262  ! CHECK-SAME: if({{.*}})
1263  ! CHECK:      omp.distribute
1264  ! CHECK-NOT:  if({{.*}})
1265  ! CHECK-SAME: {
1266  ! CHECK-NEXT: omp.loop_nest
1267  !$omp teams distribute if(.true.)
1268  do i = 1, 10
1269  end do
1270  !$omp end teams distribute
1271
1272  ! CHECK:      omp.teams
1273  ! CHECK-SAME: if({{.*}})
1274  ! CHECK:      omp.distribute
1275  ! CHECK-NOT:  if({{.*}})
1276  ! CHECK-SAME: {
1277  ! CHECK-NEXT: omp.loop_nest
1278  !$omp teams distribute if(teams: .true.)
1279  do i = 1, 10
1280  end do
1281  !$omp end teams distribute
1282
1283  ! ----------------------------------------------------------------------------
1284  ! TEAMS DISTRIBUTE PARALLEL DO
1285  ! ----------------------------------------------------------------------------
1286  ! CHECK:      omp.teams
1287  ! CHECK-NOT:  if({{.*}})
1288  ! CHECK-SAME: {
1289  ! CHECK:      omp.parallel
1290  ! CHECK-NOT:  if({{.*}})
1291  ! CHECK-SAME: {
1292  ! CHECK:      omp.distribute
1293  ! CHECK-NOT:  if({{.*}})
1294  ! CHECK-SAME: {
1295  ! CHECK-NEXT: omp.wsloop
1296  ! CHECK-NOT:  if({{.*}})
1297  ! CHECK-SAME: {
1298  ! CHECK-NEXT: omp.loop_nest
1299  !$omp teams distribute parallel do
1300  do i = 1, 10
1301  end do
1302  !$omp end teams distribute parallel do
1303
1304  ! CHECK:      omp.teams
1305  ! CHECK-SAME: if({{.*}})
1306  ! CHECK:      omp.parallel
1307  ! CHECK-SAME: if({{.*}})
1308  ! CHECK:      omp.distribute
1309  ! CHECK-NOT:  if({{.*}})
1310  ! CHECK-SAME: {
1311  ! CHECK-NEXT: omp.wsloop
1312  ! CHECK-NOT:  if({{.*}})
1313  ! CHECK-SAME: {
1314  ! CHECK-NEXT: omp.loop_nest
1315  !$omp teams distribute parallel do if(.true.)
1316  do i = 1, 10
1317  end do
1318  !$omp end teams distribute parallel do
1319
1320  ! CHECK:      omp.teams
1321  ! CHECK-SAME: if({{.*}})
1322  ! CHECK:      omp.parallel
1323  ! CHECK-SAME: if({{.*}})
1324  ! CHECK:      omp.distribute
1325  ! CHECK-NOT:  if({{.*}})
1326  ! CHECK-SAME: {
1327  ! CHECK-NEXT: omp.wsloop
1328  ! CHECK-NOT:  if({{.*}})
1329  ! CHECK-SAME: {
1330  ! CHECK-NEXT: omp.loop_nest
1331  !$omp teams distribute parallel do if(teams: .true.) if(parallel: .false.)
1332  do i = 1, 10
1333  end do
1334  !$omp end teams distribute parallel do
1335
1336  ! CHECK:      omp.teams
1337  ! CHECK-SAME: if({{.*}})
1338  ! CHECK:      omp.parallel
1339  ! CHECK-NOT:  if({{.*}})
1340  ! CHECK-SAME: {
1341  ! CHECK:      omp.distribute
1342  ! CHECK-NOT:  if({{.*}})
1343  ! CHECK-SAME: {
1344  ! CHECK-NEXT: omp.wsloop
1345  ! CHECK-NOT:  if({{.*}})
1346  ! CHECK-SAME: {
1347  ! CHECK-NEXT: omp.loop_nest
1348  !$omp teams distribute parallel do if(teams: .true.)
1349  do i = 1, 10
1350  end do
1351  !$omp end teams distribute parallel do
1352
1353  ! CHECK:      omp.teams
1354  ! CHECK-NOT:  if({{.*}})
1355  ! CHECK-SAME: {
1356  ! CHECK:      omp.parallel
1357  ! CHECK-SAME: if({{.*}})
1358  ! CHECK:      omp.distribute
1359  ! CHECK-NOT:  if({{.*}})
1360  ! CHECK-SAME: {
1361  ! CHECK-NEXT: omp.wsloop
1362  ! CHECK-NOT:  if({{.*}})
1363  ! CHECK-SAME: {
1364  ! CHECK-NEXT: omp.loop_nest
1365  !$omp teams distribute parallel do if(parallel: .true.)
1366  do i = 1, 10
1367  end do
1368  !$omp end teams distribute parallel do
1369
1370  ! ----------------------------------------------------------------------------
1371  ! TEAMS DISTRIBUTE PARALLEL DO SIMD
1372  ! ----------------------------------------------------------------------------
1373  ! CHECK:      omp.teams
1374  ! CHECK-NOT:  if({{.*}})
1375  ! CHECK-SAME: {
1376  ! CHECK:      omp.parallel
1377  ! CHECK-NOT:  if({{.*}})
1378  ! CHECK-SAME: {
1379  ! CHECK:      omp.distribute
1380  ! CHECK-NOT:  if({{.*}})
1381  ! CHECK-SAME: {
1382  ! CHECK-NEXT: omp.wsloop
1383  ! CHECK-NOT:  if({{.*}})
1384  ! CHECK-SAME: {
1385  ! CHECK-NEXT: omp.simd
1386  ! CHECK-NOT:  if({{.*}})
1387  ! CHECK-SAME: {
1388  ! CHECK-NEXT: omp.loop_nest
1389  !$omp teams distribute parallel do simd
1390  do i = 1, 10
1391  end do
1392  !$omp end teams distribute parallel do simd
1393
1394  ! CHECK:      omp.teams
1395  ! CHECK-SAME: if({{.*}})
1396  ! CHECK:      omp.parallel
1397  ! CHECK-SAME: if({{.*}})
1398  ! CHECK:      omp.distribute
1399  ! CHECK-NOT:  if({{.*}})
1400  ! CHECK-SAME: {
1401  ! CHECK-NEXT: omp.wsloop
1402  ! CHECK-NOT:  if({{.*}})
1403  ! CHECK-SAME: {
1404  ! CHECK-NEXT: omp.simd
1405  ! CHECK-SAME: if({{.*}})
1406  ! CHECK-NEXT: omp.loop_nest
1407  !$omp teams distribute parallel do simd if(.true.)
1408  do i = 1, 10
1409  end do
1410  !$omp end teams distribute parallel do simd
1411
1412  ! CHECK:      omp.teams
1413  ! CHECK-SAME: if({{.*}})
1414  ! CHECK:      omp.parallel
1415  ! CHECK-SAME: if({{.*}})
1416  ! CHECK:      omp.distribute
1417  ! CHECK-NOT:  if({{.*}})
1418  ! CHECK-SAME: {
1419  ! CHECK-NEXT: omp.wsloop
1420  ! CHECK-NOT:  if({{.*}})
1421  ! CHECK-SAME: {
1422  ! CHECK-NEXT: omp.simd
1423  ! CHECK-SAME: if({{.*}})
1424  ! CHECK-NEXT: omp.loop_nest
1425  !$omp teams distribute parallel do simd if(teams: .false.) if(parallel: .true.) if(simd: .false.)
1426  do i = 1, 10
1427  end do
1428  !$omp end teams distribute parallel do simd
1429
1430  ! CHECK:      omp.teams
1431  ! CHECK-SAME: if({{.*}})
1432  ! CHECK:      omp.parallel
1433  ! CHECK-NOT:  if({{.*}})
1434  ! CHECK-SAME: {
1435  ! CHECK:      omp.distribute
1436  ! CHECK-NOT:  if({{.*}})
1437  ! CHECK-SAME: {
1438  ! CHECK-NEXT: omp.wsloop
1439  ! CHECK-NOT:  if({{.*}})
1440  ! CHECK-SAME: {
1441  ! CHECK-NEXT: omp.simd
1442  ! CHECK-NOT:  if({{.*}})
1443  ! CHECK-SAME: {
1444  ! CHECK-NEXT: omp.loop_nest
1445  !$omp teams distribute parallel do simd if(teams: .true.)
1446  do i = 1, 10
1447  end do
1448  !$omp end teams distribute parallel do simd
1449
1450  ! CHECK:      omp.teams
1451  ! CHECK-NOT:  if({{.*}})
1452  ! CHECK-SAME: {
1453  ! CHECK:      omp.parallel
1454  ! CHECK-SAME: if({{.*}})
1455  ! CHECK:      omp.distribute
1456  ! CHECK-NOT:  if({{.*}})
1457  ! CHECK-SAME: {
1458  ! CHECK-NEXT: omp.wsloop
1459  ! CHECK-NOT:  if({{.*}})
1460  ! CHECK-SAME: {
1461  ! CHECK-NEXT: omp.simd
1462  ! CHECK-NOT:  if({{.*}})
1463  ! CHECK-SAME: {
1464  ! CHECK-NEXT: omp.loop_nest
1465  !$omp teams distribute parallel do simd if(parallel: .true.)
1466  do i = 1, 10
1467  end do
1468  !$omp end teams distribute parallel do simd
1469
1470  ! CHECK:      omp.teams
1471  ! CHECK-NOT:  if({{.*}})
1472  ! CHECK-SAME: {
1473  ! CHECK:      omp.parallel
1474  ! CHECK-NOT:  if({{.*}})
1475  ! CHECK-SAME: {
1476  ! CHECK:      omp.distribute
1477  ! CHECK-NOT:  if({{.*}})
1478  ! CHECK-SAME: {
1479  ! CHECK-NEXT: omp.wsloop
1480  ! CHECK-NOT:  if({{.*}})
1481  ! CHECK-SAME: {
1482  ! CHECK-NEXT: omp.simd
1483  ! CHECK-SAME: if({{.*}})
1484  ! CHECK-NEXT: omp.loop_nest
1485  !$omp teams distribute parallel do simd if(simd: .true.)
1486  do i = 1, 10
1487  end do
1488  !$omp end teams distribute parallel do simd
1489
1490  ! ----------------------------------------------------------------------------
1491  ! TEAMS DISTRIBUTE SIMD
1492  ! ----------------------------------------------------------------------------
1493  ! CHECK:      omp.teams
1494  ! CHECK-NOT:  if({{.*}})
1495  ! CHECK-SAME: {
1496  ! CHECK:      omp.distribute
1497  ! CHECK-NOT:  if({{.*}})
1498  ! CHECK-SAME: {
1499  ! CHECK-NEXT: omp.simd
1500  ! CHECK-NOT:  if({{.*}})
1501  ! CHECK-SAME: {
1502  ! CHECK-NEXT: omp.loop_nest
1503  !$omp teams distribute simd
1504  do i = 1, 10
1505  end do
1506  !$omp end teams distribute simd
1507
1508  ! CHECK:      omp.teams
1509  ! CHECK-SAME: if({{.*}})
1510  ! CHECK:      omp.distribute
1511  ! CHECK-NOT:  if({{.*}})
1512  ! CHECK-SAME: {
1513  ! CHECK-NEXT: omp.simd
1514  ! CHECK-SAME: if({{.*}})
1515  ! CHECK-NEXT: omp.loop_nest
1516  !$omp teams distribute simd if(.true.)
1517  do i = 1, 10
1518  end do
1519  !$omp end teams distribute simd
1520
1521  ! CHECK:      omp.teams
1522  ! CHECK-SAME: if({{.*}})
1523  ! CHECK:      omp.distribute
1524  ! CHECK-NOT:  if({{.*}})
1525  ! CHECK-SAME: {
1526  ! CHECK-NEXT: omp.simd
1527  ! CHECK-SAME: if({{.*}})
1528  ! CHECK-NEXT: omp.loop_nest
1529  !$omp teams distribute simd if(teams: .true.) if(simd: .false.)
1530  do i = 1, 10
1531  end do
1532  !$omp end teams distribute simd
1533
1534  ! CHECK:      omp.teams
1535  ! CHECK-SAME: if({{.*}})
1536  ! CHECK:      omp.distribute
1537  ! CHECK-NOT:  if({{.*}})
1538  ! CHECK-SAME: {
1539  ! CHECK-NEXT: omp.simd
1540  ! CHECK-NOT:  if({{.*}})
1541  ! CHECK-SAME: {
1542  ! CHECK-NEXT: omp.loop_nest
1543  !$omp teams distribute simd if(teams: .true.)
1544  do i = 1, 10
1545  end do
1546  !$omp end teams distribute simd
1547
1548  ! CHECK:      omp.teams
1549  ! CHECK-NOT:  if({{.*}})
1550  ! CHECK-SAME: {
1551  ! CHECK:      omp.distribute
1552  ! CHECK-NOT:  if({{.*}})
1553  ! CHECK-SAME: {
1554  ! CHECK-NEXT: omp.simd
1555  ! CHECK-SAME: if({{.*}})
1556  ! CHECK-NEXT: omp.loop_nest
1557  !$omp teams distribute simd if(simd: .true.)
1558  do i = 1, 10
1559  end do
1560  !$omp end teams distribute simd
1561
1562  ! ----------------------------------------------------------------------------
1563  ! TEAMS
1564  ! ----------------------------------------------------------------------------
1565  ! CHECK:      omp.teams
1566  ! CHECK-NOT:  if({{.*}})
1567  ! CHECK-SAME: {
1568  !$omp teams
1569  i = 1
1570  !$omp end teams
1571
1572  ! CHECK:      omp.teams
1573  ! CHECK-SAME: if({{.*}})
1574  !$omp teams if(.true.)
1575  i = 1
1576  !$omp end teams
1577
1578  ! CHECK:      omp.teams
1579  ! CHECK-SAME: if({{.*}})
1580  !$omp teams if(teams: .true.)
1581  i = 1
1582  !$omp end teams
1583end program main
1584