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