8000 [flang][MLIR][OpenMP] Extend delayed privatization for arrays and characters by ergawy · Pull Request #85023 · llvm/llvm-project · GitHub
[go: up one dir, main page]

Skip to content

[flang][MLIR][OpenMP] Extend delayed privatization for arrays and characters #85023

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
May 4, 2024
Merged
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
24f62ad
[flang][MLIR][OpenMP] Extend delayed privatization for arrays
ergawy Mar 13, 2024
3740156
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 18, 2024
943c7e2
Use `genLboundsAndExtentsFromBox`.
ergawy Apr 18, 2024
81f422d
Add explicit todos for unsupported extended value types.
ergawy Apr 18, 2024
7cefbcb
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 18, 2024
df716da
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 24, 2024
738962b
Use `translateToExtendedValue`.
ergawy Apr 24, 2024
bd99c8f
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 25, 2024
080a285
clean-ups
ergawy Apr 25, 2024
0d13dbb
Extend uses for
ergawy Apr 25, 2024
05a68a6
Add one more test.
ergawy Apr 25, 2024
f6cb909
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 26, 2024
1692791
More clean-up
ergawy Apr 26, 2024
2283349
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 27, 2024
d71bc1b
Test entities
ergawy Apr 29, 2024
fe4de72
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 29, 2024
fb4d40b
More tests for
ergawy Apr 29, 2024
0d6aff2
Add tests for character array
ergawy Apr 29, 2024
c8e44e5
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy Apr 29, 2024
130dc7a
fix test error
ergawy Apr 29, 2024
9a706aa
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy May 3, 2024
5f8d398
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy May 3, 2024
c6a7cfa
use IsSimplyContiguous()
ergawy May 3, 2024
bb876c1
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy May 4, 2024
a30ceb3
Merge remote-tracking branch 'upstream/main' into delayed_privatizati…
ergawy May 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add one more test.
  • Loading branch information
ergawy committed Apr 25, 2024
commit 05a68a6c1d739172028c9e883584f21b5a6d48cc
39 changes: 32 additions & 7 deletions flang/test/Lower/OpenMP/delayed-privatization-array.f90
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,16 @@

! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
! RUN: -o - %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - %t/two_dim_array.f90 2>&1 |\
! RUN: FileCheck %s --check-prefix=TWO_DIM
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
! RUN: %t/two_dim_array.f90 2>&1 | FileCheck %s --check-prefix=TWO_DIM

! RUN: %flang_fc1 -emit-hlfir -fopenmp -mmlir --openmp-enable-delayed-privatization \
! RUN: -o - %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB
! RUN: bbc -emit-hlfir -fopenmp --openmp-enable-delayed-privatization -o - \
! RUN: %t/one_dim_array_default_lb.f90 2>&1 | FileCheck %s --check-prefix=ONE_DIM_DEFAULT_LB

!--- one_dim_array.f90
subroutine delayed_privatization_private(var1, l1, u1)
subroutine delayed_privatization_private_1d(var1, l1, u1)
implicit none
integer(8):: l1, u1
integer, dimension(l1:u1) :: var1
Expand All @@ -32,7 +37,7 @@ subroutine delayed_privatization_private(var1, l1, u1)
! ONE_DIM-NEXT: %[[DIMS:.*]]:3 = fir.box_dims %[[PRIV_ARG]], %[[C0]] : ([[TYPE]], index) -> (index, index, index)
! ONE_DIM: %[[PRIV_ALLOCA:.*]] = fir.alloca !fir.array<{{\?}}xi32>
! ONE_DIM-NEXT: %[[SHAPE_SHIFT:.*]] = fir.shape_shift %[[DIMS]]#0, %[[DIMS]]#1 : (index, index) -> !fir.shapeshift<1>
! ONE_DIM-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRI 8000 V_ALLOCA]](%[[SHAPE_SHIFT]]) {uniq_name = "_QFdelayed_privatization_privateEvar1"}
! ONE_DIM-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOCA]](%[[SHAPE_SHIFT]]) {uniq_name = "_QFdelayed_privatization_private_1dEvar1"}
! ONE_DIM-NEXT: omp.yield(%[[PRIV_DECL]]#0 : [[TYPE]])

! ONE_DIM-NEXT: } copy {
Expand All @@ -42,7 +47,7 @@ subroutine delayed_privatization_private(var1, l1, u1)
! ONE_DIM-NEXT: }

!--- two_dim_array.f90
subroutine delayed_privatization_private(var1, l1, u1, l2, u2)
subroutine delayed_privatization_private_2d(var1, l1, u1, l2, u2)
implicit none
integer(8):: l1, u1, l2, u2
integer, dimension(l1:u1, l2:u2) :: var1
Expand All @@ -62,14 +67,34 @@ subroutine delayed_privatization_private(var1, l1, u1, l2, u2)
! TWO_DIM-NEXT: %[[C1:.*]] = arith.constant 1 : index
! TWO_DIM-NEXT: %[[DIMS1:.*]]:3 = fir.box_dims %[[PRIV_ARG]], %[[C1]] : ([[TYPE]], index) -> (index, index, index)

! TWO_DIM-NEXT: %[[PRIV_ALLOCA:.*]] = fir.alloca !fir.array<{{\?}}x{{\?}}xi32>, %[[DIMS0]]#1, %[[DIMS1]]#1 {bindc_name = "var1", pinned, uniq_name = "_QFdelayed_privatization_privateEvar1"}
! TWO_DIM-NEXT: %[[PRIV_ALLOCA:.*]] = fir.alloca !fir.array<{{\?}}x{{\?}}xi32>, %[[DIMS0]]#1, %[[DIMS1]]#1 {bindc_name = "var1", pinned, uniq_name = "_QFdelayed_privatization_private_2dEvar1"}
! TWO_DIM-NEXT: %[[SHAPE_SHIFT:.*]] = fir.shape_shift %[[DIMS0]]#0, %[[DIMS0]]#1, %[[DIMS1]]#0, %[[DIMS1]]#1 : (index, index, index, index) -> !fir.shapeshift<2>

! TWO_DIM-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOCA]](%[[SHAPE_SHIFT]]) {uniq_name = "_QFdelayed_privatization_privateEvar1"}
! TWO_DIM-NEXT: %[[PRIV_DECL:.*]]:2 = hlfir.declare %[[PRIV_ALLOCA]](%[[SHAPE_SHIFT]]) {uniq_name = "_QFdelayed_privatization_private_2dEvar1"}
! TWO_DIM-NEXT: omp.yield(%[[PRIV_DECL]]#0 : [[TYPE]])

! TWO_DIM-NEXT: } copy {
! TWO_DIM-NEXT: ^bb0(%[[PRIV_ORIG_ARG:.*]]: [[TYPE]], %[[PRIV_PRIV_ARG:.*]]: [[TYPE]]):
! TWO_DIM-NEXT: hlfir.assign %[[PRIV_ORIG_ARG]] to %[[PRIV_PRIV_ARG]] temporary_lhs
! TWO_DIM-NEXT: omp.yield(%[[PRIV_PRIV_ARG]] : [[TYPE]])
! TWO_DIM-NEXT: }

!--- one_dim_array_default_lb.f90
program main
implicit none
integer, dimension(10) :: var1

!$omp parallel private(var1)
var1(1) = 10
!$omp end parallel
end program

! ONE_DIM_DEFAULT_LB-LABEL: omp.private {type = private}
! ONE_DIM_DEFAULT_LB-SAME: @[[PRIVATIZER_SYM:.*]] : [[TYPE:!fir.ref<!fir.array<10xi32>>]] alloc {

! ONE_DIM_DEFAULT_LB-NEXT: ^bb0(%[[PRIV_ARG:.*]]: [[TYPE]]):

! ONE_DIM_DEFAULT_LB: %[[C10:.*]] = arith.constant 10 : index
! ONE_DIM_DEFAULT_LB: %[[PRIV_ALLOCA:.*]] = fir.alloca !fir.array<10xi32>
! ONE_DIM_DEFAULT_LB: %[[SHAPE:.*]] = fir.shape %[[C10]] : (index) -> !fir.shape<1>
! ONE_DIM_DEFAULT_LB: hlfir.declare %[[PRIV_ALLOCA]](%[[SHAPE]])
0