43 lines · plain
1! RUN: bbc -emit-hlfir -fcuda %s -o - | FileCheck %s2 3! Check if do concurrent works inside cuf kernel directive4 5subroutine doconc16 integer :: i, n7 integer, managed :: a(3)8 a(:) = -19 n = 310 n = n - 111 !$cuf kernel do12 do concurrent(i=1:n)13 a(i) = 114 end do15end16 17! CHECK: func.func @_QPdoconc1() {18! CHECK: %[[DECL:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFdoconc1Ei"} : (!fir.ref<index>) -> (!fir.ref<index>, !fir.ref<index>)19! CHECK: cuf.kernel<<<*, *>>> (%arg0 : index)20! CHECK: fir.store %arg0 to %[[DECL]]#0 : !fir.ref<index>21! CHECK: %{{.*}} = fir.load %[[DECL]]#0 : !fir.ref<index>22 23subroutine doconc224 integer :: i, j, m, n25 integer, managed :: a(2, 4)26 m = 227 n = 428 a(:,:) = -129 !$cuf kernel do30 do concurrent(i=1:m,j=1:n)31 a(i,j) = i+j32 end do33end34 35! CHECK: func.func @_QPdoconc2() {36! CHECK: %[[DECLI:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFdoconc2Ei"} : (!fir.ref<index>) -> (!fir.ref<index>, !fir.ref<index>)37! CHECK: %[[DECLJ:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFdoconc2Ej"} : (!fir.ref<index>) -> (!fir.ref<index>, !fir.ref<index>)38! CHECK: cuf.kernel<<<*, *>>> (%arg0 : index, %arg1 : index) = (%{{.*}}, %{{.*}} : index, index) to (%{{.*}}, %{{.*}} : index, index) step (%{{.*}}, %{{.*}} : index, index) {39! CHECK: fir.store %arg0 to %[[DECLI]]#0 : !fir.ref<index>40! CHECK: fir.store %arg1 to %[[DECLJ]]#0 : !fir.ref<index>41! CHECK: %{{.*}} = fir.load %[[DECLI]]#0 : !fir.ref<index>42! CHECK: %{{.*}} = fir.load %[[DECLJ]]#0 : !fir.ref<index>43