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