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