brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 4dd1c9e Raw
181 lines · plain
1! Test lowering of Cray pointee references.2! RUN: %flang_fc1 -emit-hlfir -fopenmp %s -o - 2>&1 | FileCheck %s3 4! CHECK-LABEL: func.func @_QQmain() attributes {fir.bindc_name = "TEST_CRAY_POINTERS_02"}5program test_cray_pointers_026    implicit none7 8    ! CHECK:   fir.call @_QPnone_shared() fastmath<contract> : () -> ()9    ! CHECK:   fir.call @_QPnone_private() fastmath<contract> : () -> ()10    ! CHECK:   fir.call @_QPnone_firstprivate() fastmath<contract> : () -> ()11    ! CHECK:   fir.call @_QPprivate_shared() fastmath<contract> : () -> ()12    ! CHECK:   fir.call @_QPprivate_firstprivate() fastmath<contract> : () -> ()13    ! CHECK:   fir.call @_QPfirstprivate_shared() fastmath<contract> : () -> ()14    ! CHECK:   fir.call @_QPfirstprivate_private() fastmath<contract> : () -> ()15    call none_shared()16    call none_private()17    call none_firstprivate()18    call private_shared()19    call private_firstprivate()20    call firstprivate_shared()21    call firstprivate_private()22    ! CHECK:   return23    ! CHECK: }24end program test_cray_pointers_0225 26! CHECK-LABEL: func.func @_QPnone_shared()27subroutine none_shared()28    implicit none29    integer var(*)30    pointer(ivar,var)31    integer pointee(8)32 33    pointee(1) = 4234    ivar = loc(pointee)35 36    !$omp parallel num_threads(1) default(none) shared(ivar)37        ! CHECK: omp.parallel38        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()39        ! CHECK:   {{.*}} = arith.divsi40        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()41        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()42        var(1) = var(1) / 243        print '(A24,I6)', 'none_shared', var(1)44    !$omp end parallel45    ! CHECK: return46end subroutine47 48! CHECK-LABEL: func.func @_QPnone_private()49subroutine none_private()50    implicit none51    integer var(*)52    pointer(ivar,var)53    integer pointee(8)54 55    pointee(1) = 4256    ivar = loc(pointee)57 58    !$omp parallel num_threads(1) default(none) private(ivar) shared(pointee)59        ! CHECK: omp.parallel60        ivar = loc(pointee)61        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()62        ! CHECK:   {{.*}} = arith.addi63        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()64        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()65        var(1) = var(1) + 266        print '(A24,I6)', 'none_private', var(1)67    !$omp end parallel68    ! CHECK: return69end subroutine70 71! CHECK-LABEL: func.func @_QPnone_firstprivate()72subroutine none_firstprivate()73    implicit none74    integer var(*)75    pointer(ivar,var)76    integer pointee(8)77 78    pointee(1) = 4279    ivar = loc(pointee)80 81    !$omp parallel num_threads(1) default(none) firstprivate(ivar)82        ! CHECK: omp.parallel83        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()84        ! CHECK:   {{.*}} = arith.muli85        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()86        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()87        var(1) = var(1) * 288        print '(A24,I6)', 'none_firstprivate', var(1)89    !$omp end parallel90    ! CHECK: return91end subroutine92 93! CHECK-LABEL: func.func @_QPprivate_shared()94subroutine private_shared()95    implicit none96    integer var(*)97    pointer(ivar,var)98    integer pointee(8)99 100    pointee(1) = 42101    ivar = loc(pointee)102 103    !$omp parallel num_threads(1) default(private) shared(ivar)104        ! CHECK: omp.parallel105        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()106        ! CHECK:   {{.*}} = math.ipowi107        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()108        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()109        var(1) = var(1) ** 2110        print '(A24,I6)', 'private_shared', var(1)111    !$omp end parallel112    ! CHECK: return113end subroutine114 115! CHECK-LABEL: func.func @_QPprivate_firstprivate()116subroutine private_firstprivate()117    implicit none118    integer var(*)119    pointer(ivar,var)120    integer pointee(8)121 122    pointee(1) = 42123    ivar = loc(pointee)124 125    !$omp parallel num_threads(1) default(private) firstprivate(ivar)126        ! CHECK: omp.parallel127        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()128        ! CHECK:   {{.*}} = arith.subi129        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()130        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()131        var(1) = var(1) - 2132        print '(A24,I6)', 'private_firstprivate', var(1)133    !$omp end parallel134    ! CHECK: return135end subroutine136 137! CHECK-LABEL: func.func @_QPfirstprivate_shared()138subroutine firstprivate_shared()139    implicit none140    integer var(*)141    pointer(ivar,var)142    integer pointee(8)143 144    pointee(1) = 42145    ivar = loc(pointee)146 147    !$omp parallel num_threads(1) default(firstprivate) shared(ivar)148        ! CHECK: omp.parallel149        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()150        ! CHECK:   {{.*}} = arith.divsi151        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()152        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()153        var(1) = var(1) / 2154        print '(A24,I6)', 'firstprivate_shared', var(1)155    !$omp end parallel156    ! CHECK: return157end subroutine158 159! CHECK-LABEL: func.func @_QPfirstprivate_private()160subroutine firstprivate_private()161    implicit none162    integer var(*)163    pointer(ivar,var)164    integer pointee(8)165 166    pointee(1) = 42167    ivar = loc(pointee)168 169    !$omp parallel num_threads(1) default(firstprivate) private(ivar) shared(pointee)170        ! CHECK: omp.parallel171        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()172        ! CHECK:   {{.*}} = math.ipowi173        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()174        ! CHECK:   fir.call @_FortranAPointerAssociateScalar({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.llvm_ptr<i8>) -> ()175        ivar = loc(pointee)176        var(1) = var(1) ** 2177        print '(A24,I6)', 'firstprivate_private', var(1)178    !$omp end parallel179    ! CHECK: return180end subroutine181