1! RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - | FileCheck %s 2 3! CHECK-LABEL: func.func @_QPdistribute_parallel_do_generic() { 4subroutine distribute_parallel_do_generic() 5 ! CHECK: omp.target 6 ! CHECK-NOT: host_eval({{.*}}) 7 ! CHECK-SAME: { 8 !$omp target 9 !$omp teams 10 !$omp distribute parallel do 11 do i = 1, 10 12 call foo(i) 13 end do 14 !$omp end distribute parallel do 15 call bar() !< Prevents this from being SPMD. 16 !$omp end teams 17 !$omp end target 18 19 ! CHECK: omp.target 20 ! CHECK-NOT: host_eval({{.*}}) 21 ! CHECK-SAME: { 22 !$omp target teams 23 !$omp distribute parallel do 24 do i = 1, 10 25 call foo(i) 26 end do 27 !$omp end distribute parallel do 28 call bar() !< Prevents this from being SPMD. 29 !$omp end target teams 30 31 ! CHECK: omp.target 32 ! CHECK-NOT: host_eval({{.*}}) 33 ! CHECK-SAME: { 34 !$omp target teams 35 !$omp distribute parallel do 36 do i = 1, 10 37 call foo(i) 38 end do 39 !$omp end distribute parallel do 40 41 !$omp distribute parallel do 42 do i = 1, 10 43 call foo(i) 44 end do 45 !$omp end distribute parallel do 46 !$omp end target teams 47end subroutine distribute_parallel_do_generic 48 49! CHECK-LABEL: func.func @_QPdistribute_parallel_do_spmd() { 50subroutine distribute_parallel_do_spmd() 51 ! CHECK: omp.target 52 ! CHECK-SAME: host_eval({{.*}}) 53 !$omp target 54 !$omp teams 55 !$omp distribute parallel do 56 do i = 1, 10 57 call foo(i) 58 end do 59 !$omp end distribute parallel do 60 !$omp end teams 61 !$omp end target 62 63 ! CHECK: omp.target 64 ! CHECK-SAME: host_eval({{.*}}) 65 !$omp target teams 66 !$omp distribute parallel do 67 do i = 1, 10 68 call foo(i) 69 end do 70 !$omp end distribute parallel do 71 !$omp end target teams 72end subroutine distribute_parallel_do_spmd 73 74! CHECK-LABEL: func.func @_QPdistribute_parallel_do_simd_generic() { 75subroutine distribute_parallel_do_simd_generic() 76 ! CHECK: omp.target 77 ! CHECK-NOT: host_eval({{.*}}) 78 ! CHECK-SAME: { 79 !$omp target 80 !$omp teams 81 !$omp distribute parallel do simd 82 do i = 1, 10 83 call foo(i) 84 end do 85 !$omp end distribute parallel do simd 86 call bar() !< Prevents this from being SPMD. 87 !$omp end teams 88 !$omp end target 89 90 ! CHECK: omp.target 91 ! CHECK-NOT: host_eval({{.*}}) 92 ! CHECK-SAME: { 93 !$omp target teams 94 !$omp distribute parallel do simd 95 do i = 1, 10 96 call foo(i) 97 end do 98 !$omp end distribute parallel do simd 99 call bar() !< Prevents this from being SPMD. 100 !$omp end target teams 101 102 ! CHECK: omp.target 103 ! CHECK-NOT: host_eval({{.*}}) 104 ! CHECK-SAME: { 105 !$omp target teams 106 !$omp distribute parallel do simd 107 do i = 1, 10 108 call foo(i) 109 end do 110 !$omp end distribute parallel do simd 111 112 !$omp distribute parallel do simd 113 do i = 1, 10 114 call foo(i) 115 end do 116 !$omp end distribute parallel do simd 117 !$omp end target teams 118end subroutine distribute_parallel_do_simd_generic 119 120! CHECK-LABEL: func.func @_QPdistribute_parallel_do_simd_spmd() { 121subroutine distribute_parallel_do_simd_spmd() 122 ! CHECK: omp.target 123 ! CHECK-SAME: host_eval({{.*}}) 124 !$omp target 125 !$omp teams 126 !$omp distribute parallel do simd 127 do i = 1, 10 128 call foo(i) 129 end do 130 !$omp end distribute parallel do simd 131 !$omp end teams 132 !$omp end target 133 134 ! CHECK: omp.target 135 ! CHECK-SAME: host_eval({{.*}}) 136 !$omp target teams 137 !$omp distribute parallel do simd 138 do i = 1, 10 139 call foo(i) 140 end do 141 !$omp end distribute parallel do simd 142 !$omp end target teams 143end subroutine distribute_parallel_do_simd_spmd 144 145! CHECK-LABEL: func.func @_QPteams_distribute_parallel_do_spmd() { 146subroutine teams_distribute_parallel_do_spmd() 147 ! CHECK: omp.target 148 ! CHECK-SAME: host_eval({{.*}}) 149 !$omp target 150 !$omp teams distribute parallel do 151 do i = 1, 10 152 call foo(i) 153 end do 154 !$omp end teams distribute parallel do 155 !$omp end target 156end subroutine teams_distribute_parallel_do_spmd 157 158! CHECK-LABEL: func.func @_QPteams_distribute_parallel_do_simd_spmd() { 159subroutine teams_distribute_parallel_do_simd_spmd() 160 ! CHECK: omp.target 161 ! CHECK-SAME: host_eval({{.*}}) 162 !$omp target 163 !$omp teams distribute parallel do simd 164 do i = 1, 10 165 call foo(i) 166 end do 167 !$omp end teams distribute parallel do simd 168 !$omp end target 169end subroutine teams_distribute_parallel_do_simd_spmd 170 171! CHECK-LABEL: func.func @_QPtarget_teams_distribute_parallel_do_spmd() { 172subroutine target_teams_distribute_parallel_do_spmd() 173 ! CHECK: omp.target 174 ! CHECK-SAME: host_eval({{.*}}) 175 !$omp target teams distribute parallel do 176 do i = 1, 10 177 call foo(i) 178 end do 179 !$omp end target teams distribute parallel do 180end subroutine target_teams_distribute_parallel_do_spmd 181 182! CHECK-LABEL: func.func @_QPtarget_teams_distribute_parallel_do_simd_spmd() { 183subroutine target_teams_distribute_parallel_do_simd_spmd() 184 ! CHECK: omp.target 185 ! CHECK-SAME: host_eval({{.*}}) 186 !$omp target teams distribute parallel do simd 187 do i = 1, 10 188 call foo(i) 189 end do 190 !$omp end target teams distribute parallel do simd 191end subroutine target_teams_distribute_parallel_do_simd_spmd 192