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