| ! REQUIRES: plugins, examples, shell |
| |
| !RUN: %flang_fc1 -load %llvmshlibdir/flangOmpReport.so -plugin flang-omp-report -fopenmp %s -o - | FileCheck %s |
| |
| ! Check OpenMP clause validity for the following directives: |
| ! 2.10 Device constructs |
| program main |
| |
| real(8) :: arrayA(256), arrayB(256) |
| integer :: N |
| |
| arrayA = 1.414 |
| arrayB = 3.14 |
| N = 256 |
| |
| !$omp target map(arrayA) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end target |
| |
| !$omp target device(0) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end target |
| |
| !$omp target defaultmap(tofrom:scalar) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end target |
| |
| !$omp teams num_teams(3) thread_limit(10) default(shared) private(i) shared(a) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end teams |
| |
| !$omp target map(tofrom:a) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end target |
| |
| !$omp target data device(0) map(to:a) |
| do i = 1, N |
| a = 3.14 |
| enddo |
| !$omp end target data |
| |
| end program main |
| |
| ! CHECK: --- |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 16 |
| ! CHECK-NEXT: construct: target |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: map |
| ! CHECK-NEXT: details: arraya |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 22 |
| ! CHECK-NEXT: construct: target |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: device |
| ! CHECK-NEXT: details: '0' |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 28 |
| ! CHECK-NEXT: construct: target |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: defaultmap |
| ! CHECK-NEXT: details: 'tofrom:scalar' |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 34 |
| ! CHECK-NEXT: construct: teams |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: default |
| ! CHECK-NEXT: details: shared |
| ! CHECK-NEXT: - clause: num_teams |
| ! CHECK-NEXT: details: '3' |
| ! CHECK-NEXT: - clause: private |
| ! CHECK-NEXT: details: i |
| ! CHECK-NEXT: - clause: shared |
| ! CHECK-NEXT: details: a |
| ! CHECK-NEXT: - clause: thread_limit |
| ! CHECK-NEXT: details: '10' |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 40 |
| ! CHECK-NEXT: construct: target |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: map |
| ! CHECK-NEXT: details: 'tofrom:a' |
| ! CHECK-NEXT: - file: '{{[^"]*}}omp-device-constructs.f90' |
| ! CHECK-NEXT: line: 46 |
| ! CHECK-NEXT: construct: target data |
| ! CHECK-NEXT: clauses: |
| ! CHECK-NEXT: - clause: device |
| ! CHECK-NEXT: details: '0' |
| ! CHECK-NEXT: - clause: map |
| ! CHECK-NEXT: details: 'to:a' |
| ! CHECK-NEXT: ... |