xref: /llvm-project/flang/test/Examples/omp-device-constructs.f90 (revision 0a95abb7dcf3ae4d4c5bb7ecc739c217d20b7fc3)
15c52753dSAndrzej Warzynski! REQUIRES: plugins, examples, shell
238c42d42SStuart Ellis
338c42d42SStuart Ellis!RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s
438c42d42SStuart Ellis
538c42d42SStuart Ellis! Check OpenMP clause validity for the following directives:
638c42d42SStuart Ellis!     2.10 Device constructs
738c42d42SStuart Ellisprogram main
838c42d42SStuart Ellis
938c42d42SStuart Ellis  real(8) :: arrayA(256), arrayB(256)
1038c42d42SStuart Ellis  integer :: N
1138c42d42SStuart Ellis
1238c42d42SStuart Ellis  arrayA = 1.414
1338c42d42SStuart Ellis  arrayB = 3.14
1438c42d42SStuart Ellis  N = 256
1538c42d42SStuart Ellis
1638c42d42SStuart Ellis  !$omp target map(arrayA)
1738c42d42SStuart Ellis  do i = 1, N
1838c42d42SStuart Ellis     a = 3.14
1938c42d42SStuart Ellis  enddo
2038c42d42SStuart Ellis  !$omp end target
2138c42d42SStuart Ellis
2238c42d42SStuart Ellis  !$omp target device(0)
2338c42d42SStuart Ellis  do i = 1, N
2438c42d42SStuart Ellis     a = 3.14
2538c42d42SStuart Ellis  enddo
2638c42d42SStuart Ellis  !$omp end target
2738c42d42SStuart Ellis
2838c42d42SStuart Ellis  !$omp target defaultmap(tofrom:scalar)
2938c42d42SStuart Ellis  do i = 1, N
3038c42d42SStuart Ellis     a = 3.14
3138c42d42SStuart Ellis  enddo
3238c42d42SStuart Ellis  !$omp end target
3338c42d42SStuart Ellis
3438c42d42SStuart Ellis  !$omp teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a)
3538c42d42SStuart Ellis  do i = 1, N
3638c42d42SStuart Ellis     a = 3.14
3738c42d42SStuart Ellis  enddo
3838c42d42SStuart Ellis  !$omp end teams
3938c42d42SStuart Ellis
4038c42d42SStuart Ellis  !$omp target map(tofrom:a)
4138c42d42SStuart Ellis  do i = 1, N
4238c42d42SStuart Ellis     a = 3.14
4338c42d42SStuart Ellis  enddo
4438c42d42SStuart Ellis  !$omp end target
4538c42d42SStuart Ellis
4638c42d42SStuart Ellis  !$omp target data device(0) map(to:a)
4738c42d42SStuart Ellis  do i = 1, N
4838c42d42SStuart Ellis    a = 3.14
4938c42d42SStuart Ellis  enddo
5038c42d42SStuart Ellis  !$omp end target data
5138c42d42SStuart Ellis
5238c42d42SStuart Ellisend program main
5338c42d42SStuart Ellis
5438c42d42SStuart Ellis! CHECK: ---
5538c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
56*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            16
5738c42d42SStuart Ellis! CHECK-NEXT:   construct:       target
5838c42d42SStuart Ellis! CHECK-NEXT:   clauses:
5938c42d42SStuart Ellis! CHECK-NEXT:     - clause:          map
6038c42d42SStuart Ellis! CHECK-NEXT:       details:         arraya
6138c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
62*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            22
6338c42d42SStuart Ellis! CHECK-NEXT:   construct:       target
6438c42d42SStuart Ellis! CHECK-NEXT:   clauses:
6538c42d42SStuart Ellis! CHECK-NEXT:     - clause:          device
6638c42d42SStuart Ellis! CHECK-NEXT:       details:         '0'
6738c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
68*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            28
6938c42d42SStuart Ellis! CHECK-NEXT:   construct:       target
7038c42d42SStuart Ellis! CHECK-NEXT:   clauses:
7138c42d42SStuart Ellis! CHECK-NEXT:     - clause:          defaultmap
7238c42d42SStuart Ellis! CHECK-NEXT:       details:         'tofrom:scalar'
7338c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
74*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            34
7538c42d42SStuart Ellis! CHECK-NEXT:   construct:       teams
7638c42d42SStuart Ellis! CHECK-NEXT:   clauses:
7738c42d42SStuart Ellis! CHECK-NEXT:     - clause:          default
7838c42d42SStuart Ellis! CHECK-NEXT:       details:         shared
7938c42d42SStuart Ellis! CHECK-NEXT:     - clause:          num_teams
8038c42d42SStuart Ellis! CHECK-NEXT:       details:         '3'
8138c42d42SStuart Ellis! CHECK-NEXT:     - clause:          private
8238c42d42SStuart Ellis! CHECK-NEXT:       details:         i
8338c42d42SStuart Ellis! CHECK-NEXT:     - clause:          shared
8438c42d42SStuart Ellis! CHECK-NEXT:       details:         a
8538c42d42SStuart Ellis! CHECK-NEXT:     - clause:          thread_limit
8638c42d42SStuart Ellis! CHECK-NEXT:       details:         '10'
8738c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
88*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            40
8938c42d42SStuart Ellis! CHECK-NEXT:   construct:       target
9038c42d42SStuart Ellis! CHECK-NEXT:   clauses:
9138c42d42SStuart Ellis! CHECK-NEXT:     - clause:          map
9238c42d42SStuart Ellis! CHECK-NEXT:       details:         'tofrom:a'
9338c42d42SStuart Ellis! CHECK-NEXT: - file:            '{{[^"]*}}omp-device-constructs.f90'
94*0a95abb7SJosh Mottley! CHECK-NEXT:   line:            46
9538c42d42SStuart Ellis! CHECK-NEXT:   construct:       target data
9638c42d42SStuart Ellis! CHECK-NEXT:   clauses:
9738c42d42SStuart Ellis! CHECK-NEXT:     - clause:          device
9838c42d42SStuart Ellis! CHECK-NEXT:       details:         '0'
9938c42d42SStuart Ellis! CHECK-NEXT:     - clause:          map
10038c42d42SStuart Ellis! CHECK-NEXT:       details:         'to:a'
10138c42d42SStuart Ellis! CHECK-NEXT: ...
102