1! Check flang-omp-report --femit-yaml for omp-device-constructs.f90
2
3! REQUIRES: plugins, examples, shell
4
5!RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
6
7! Check OpenMP clause validity for the following directives:
8!     2.10 Device constructs
9program main
10
11  real(8) :: arrayA(256), arrayB(256)
12  integer :: N
13
14  arrayA = 1.414
15  arrayB = 3.14
16  N = 256
17
18  !$omp target map(arrayA)
19  do i = 1, N
20     a = 3.14
21  enddo
22  !$omp end target
23
24  !$omp target device(0)
25  do i = 1, N
26     a = 3.14
27  enddo
28  !$omp end target
29
30  !$omp target defaultmap(tofrom:scalar)
31  do i = 1, N
32     a = 3.14
33  enddo
34  !$omp end target
35
36  !$omp teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
37  do i = 1, N
38     a = 3.14
39  enddo
40  !$omp end teams
41
42  !$omp target map(tofrom:a)
43  do i = 1, N
44     a = 3.14
45  enddo
46  !$omp end target
47
48  !$omp target data device(0) map(to:a)
49  do i = 1, N
50    a = 3.14
51  enddo
52  !$omp end target data
53
54end program main
55
56! CHECK: ---
57! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
58! CHECK-NEXT:   line:            18
59! CHECK-NEXT:   construct:       target
60! CHECK-NEXT:   clauses:
61! CHECK-NEXT:     - clause:          map
62! CHECK-NEXT:       details:         arraya
63! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
64! CHECK-NEXT:   line:            24
65! CHECK-NEXT:   construct:       target
66! CHECK-NEXT:   clauses:
67! CHECK-NEXT:     - clause:          device
68! CHECK-NEXT:       details:         '0'
69! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
70! CHECK-NEXT:   line:            30
71! CHECK-NEXT:   construct:       target
72! CHECK-NEXT:   clauses:
73! CHECK-NEXT:     - clause:          defaultmap
74! CHECK-NEXT:       details:         'tofrom:scalar'
75! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
76! CHECK-NEXT:   line:            36
77! CHECK-NEXT:   construct:       teams
78! CHECK-NEXT:   clauses:
79! CHECK-NEXT:     - clause:          default
80! CHECK-NEXT:       details:         shared
81! CHECK-NEXT:     - clause:          num_teams
82! CHECK-NEXT:       details:         '3'
83! CHECK-NEXT:     - clause:          private
84! CHECK-NEXT:       details:         i
85! CHECK-NEXT:     - clause:          shared
86! CHECK-NEXT:       details:         a
87! CHECK-NEXT:     - clause:          thread_limit
88! CHECK-NEXT:       details:         '10'
89! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
90! CHECK-NEXT:   line:            42
91! CHECK-NEXT:   construct:       target
92! CHECK-NEXT:   clauses:
93! CHECK-NEXT:     - clause:          map
94! CHECK-NEXT:       details:         'tofrom:a'
95! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
96! CHECK-NEXT:   line:            48
97! CHECK-NEXT:   construct:       target data
98! CHECK-NEXT:   clauses:
99! CHECK-NEXT:     - clause:          device
100! CHECK-NEXT:       details:         '0'
101! CHECK-NEXT:     - clause:          map
102! CHECK-NEXT:       details:         'to:a'
103! CHECK-NEXT: ...
104