brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · 03e35de Raw
105 lines · plain
1! This test checks lowering of OpenMP DO SIMD composite constructs.2 3! RUN: bbc -fopenmp -emit-hlfir %s -o - | FileCheck %s4! RUN: %flang_fc1 -fopenmp -emit-hlfir %s -o - | FileCheck %s5 6! CHECK-LABEL: func.func @_QPdo_simd_aligned(7subroutine do_simd_aligned(A)8  use iso_c_binding9  type(c_ptr) :: A10 11  ! CHECK:      omp.wsloop12  ! CHECK-NOT:  aligned({{.*}})13  ! CHECK-SAME: {14  ! CHECK-NEXT: omp.simd15  ! CHECK-SAME: aligned({{.*}})16  !$omp do simd aligned(A:256)17    do index_ = 1, 1018      call c_test_call(A)19    end do20  !$omp end do simd21end subroutine do_simd_aligned22 23! CHECK-LABEL: func.func @_QPdo_simd_safelen(24subroutine do_simd_safelen()25  ! CHECK:      omp.wsloop26  ! CHECK-NOT:  safelen({{.*}})27  ! CHECK-SAME: {28  ! CHECK-NEXT: omp.simd29  ! CHECK-SAME: safelen({{.*}})30  !$omp do simd safelen(4)31    do index_ = 1, 1032    end do33  !$omp end do simd34end subroutine do_simd_safelen35 36! CHECK-LABEL: func.func @_QPdo_simd_simdlen(37subroutine do_simd_simdlen()38  ! CHECK:      omp.wsloop39  ! CHECK-NOT:  simdlen({{.*}})40  ! CHECK-SAME: {41  ! CHECK-NEXT: omp.simd42  ! CHECK-SAME: simdlen({{.*}})43  !$omp do simd simdlen(4)44    do index_ = 1, 1045    end do46  !$omp end do simd47end subroutine do_simd_simdlen48 49! CHECK-LABEL: func.func @_QPdo_simd_reduction(50subroutine do_simd_reduction()51  integer :: sum52  sum = 053  ! CHECK:      omp.wsloop54  ! CHECK-SAME: reduction(@[[RED_SYM:.*]] %{{.*}} -> %[[RED_OUTER:.*]] : !fir.ref<i32>)55  ! CHECK-NEXT: omp.simd56  ! CHECK-SAME: reduction(@[[RED_SYM]] %[[RED_OUTER]] -> %[[RED_INNER:.*]] : !fir.ref<i32>)57  ! CHECK-NEXT: omp.loop_nest58  ! CHECK:      %[[RED_DECL:.*]]:2 = hlfir.declare %[[RED_INNER]]59  ! CHECK:      %[[RED:.*]] = fir.load %[[RED_DECL]]#0 : !fir.ref<i32>60  ! CHECK:      %[[RESULT:.*]] = arith.addi %[[RED]], %{{.*}} : i3261  ! CHECK:      hlfir.assign %[[RESULT]] to %[[RED_DECL]]#0 : i32, !fir.ref<i32>62  ! CHECK-NEXT: omp.yield63  !$omp do simd reduction(+:sum)64    do index_ = 1, 1065      sum = sum + 166    end do67  !$omp end do simd68end subroutine do_simd_reduction69 70! CHECK-LABEL: func.func @_QPdo_simd_private(71subroutine do_simd_private()72  integer, allocatable :: tmp73  ! CHECK:      omp.wsloop74  ! CHECK-NEXT: omp.simd75  ! CHECK-SAME: private(@[[PRIV_BOX_SYM:.*]] %{{.*}} -> %[[PRIV_BOX:.*]], @[[PRIV_IVAR_SYM:.*]] %{{.*}} -> %[[PRIV_IVAR:.*]] : !fir.ref<!fir.box<!fir.heap<i32>>>, !fir.ref<i32>)76  ! CHECK-NEXT: omp.loop_nest (%[[IVAR:.*]]) : i3277  !$omp do simd private(tmp)78  do i=1, 1079  ! CHECK:      %[[PRIV_BOX_DECL:.*]]:2 = hlfir.declare %[[PRIV_BOX]]80  ! CHECK:      %[[PRIV_IVAR_DECL:.*]]:2 = hlfir.declare %[[PRIV_IVAR]]81  ! CHECK:      hlfir.assign %[[IVAR]] to %[[PRIV_IVAR_DECL]]#082  ! CHECK:      %[[PRIV_BOX_LOAD:.*]] = fir.load %[[PRIV_BOX_DECL]]83  ! CHECK:      hlfir.assign %{{.*}} to %[[PRIV_BOX_DECL]]#084  ! CHECK:      omp.yield85    tmp = tmp + 186  end do87end subroutine do_simd_private88 89! CHECK-LABEL: func.func @_QPdo_simd_lastprivate_firstprivate(90subroutine do_simd_lastprivate_firstprivate()91  integer :: a92  ! CHECK:      omp.wsloop93  ! CHECK-SAME: private(@[[FIRSTPRIVATE_A_SYM:.*]] %{{.*}} -> %[[FIRSTPRIVATE_A:.*]] : !fir.ref<i32>)94  ! CHECK-NEXT: omp.simd95  ! CHECK-SAME: private(@[[PRIVATE_A_SYM:.*]] %{{.*}} -> %[[PRIVATE_A:.*]], @[[PRIVATE_I_SYM:.*]] %{{.*}} -> %[[PRIVATE_I:.*]] : !fir.ref<i32>, !fir.ref<i32>)96  !$omp do simd lastprivate(a) firstprivate(a)97  do i = 1, 1098    ! CHECK: %[[FIRSTPRIVATE_A_DECL:.*]]:2 = hlfir.declare %[[FIRSTPRIVATE_A]]99    ! CHECK: %[[PRIVATE_A_DECL:.*]]:2 = hlfir.declare %[[PRIVATE_A]]100    ! CHECK: %[[PRIVATE_I_DECL:.*]]:2 = hlfir.declare %[[PRIVATE_I]]101    a = a + 1102  end do103  !$omp end do simd104end subroutine do_simd_lastprivate_firstprivate105