mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-03-01 14:58:18 +00:00
[flang][openacc] Add extent when creating acc.bounds in genBaseBoundsOps
The extent information is available here so just add it to the acc.bounds operation so it can be retrieved easily if needed. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D155319
This commit is contained in:
parent
a1cdb323e2
commit
361beeeff0
@ -81,7 +81,7 @@ genBaseBoundsOps(fir::FirOpBuilder &builder, mlir::Location loc,
|
||||
// ub = extent - 1
|
||||
mlir::Value ub = builder.create<mlir::arith::SubIOp>(loc, ext, one);
|
||||
mlir::Value bound = builder.create<mlir::acc::DataBoundsOp>(
|
||||
loc, boundTy, lb, ub, mlir::Value(), one, false, baseLb);
|
||||
loc, boundTy, lb, ub, ext, one, false, baseLb);
|
||||
bounds.push_back(bound);
|
||||
}
|
||||
return bounds;
|
||||
|
@ -74,7 +74,7 @@ end subroutine
|
||||
! CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
! CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
! CHECK: %[[UB:.*]] = arith.subi %[[EXT]], %[[ONE]] : index
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[EXT]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
! CHECK: %[[COPY_COPYIN:.*]] = acc.copyin varPtr(%[[COORD_DATA]] : !fir.ref<!fir.array<100xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<100xf32>> {dataClause = 3 : i64, name = "w%data"}
|
||||
! CHECK: acc.data dataOperands(%[[COPY_COPYIN]] : !fir.ref<!fir.array<100xf32>>) {
|
||||
! CHECK: acc.terminator
|
||||
@ -102,7 +102,7 @@ end subroutine
|
||||
! CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
! CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
! CHECK: %[[UB:.*]] = arith.subi %[[EXT]], %[[ONE]] : index
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[EXT]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
! CHECK: %[[COPY_COPYIN:.*]] = acc.copyin varPtr(%[[COORD_W1_DATA]] : !fir.ref<!fir.array<100xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<100xf32>> {dataClause = 3 : i64, name = "w(1_8)%data"}
|
||||
! CHECK: acc.data dataOperands(%[[COPY_COPYIN]] : !fir.ref<!fir.array<100xf32>>) {
|
||||
! CHECK: acc.terminator
|
||||
|
@ -19,10 +19,10 @@ subroutine acc_enter_data
|
||||
!CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[EXTENT_C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[EXTENT_C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[CREATE_A:.*]] = acc.create varPtr(%[[A]] : !fir.ref<!fir.array<10x10xf32>>) bounds(%[[BOUND0]], %[[BOUND1]]) -> !fir.ref<!fir.array<10x10xf32>> {name = "a", structured = false}
|
||||
!CHECK: acc.enter_data dataOperands(%[[CREATE_A]] : !fir.ref<!fir.array<10x10xf32>>){{$}}
|
||||
|
||||
@ -30,10 +30,10 @@ subroutine acc_enter_data
|
||||
!CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[EXTENT_C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[EXTENT_C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[CREATE_A:.*]] = acc.create varPtr(%[[A]] : !fir.ref<!fir.array<10x10xf32>>) bounds(%[[BOUND0]], %[[BOUND1]]) -> !fir.ref<!fir.array<10x10xf32>> {name = "a", structured = false}
|
||||
!CHECK: [[IF1:%.*]] = arith.constant true
|
||||
!CHECK: acc.enter_data if([[IF1]]) dataOperands(%[[CREATE_A]] : !fir.ref<!fir.array<10x10xf32>>){{$}}
|
||||
@ -42,10 +42,10 @@ subroutine acc_enter_data
|
||||
!CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND0:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[EXTENT_C10]], %[[ONE]] : index
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[BOUND1:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[EXTENT_C10]] : index) stride(%[[ONE]] : index) startIdx(%[[ONE]] : index)
|
||||
!CHECK: %[[CREATE_A:.*]] = acc.create varPtr(%[[A]] : !fir.ref<!fir.array<10x10xf32>>) bounds(%[[BOUND0]], %[[BOUND1]]) -> !fir.ref<!fir.array<10x10xf32>> {name = "a", structured = false}
|
||||
!CHECK: [[IFCOND:%.*]] = fir.load %{{.*}} : !fir.ref<!fir.logical<4>>
|
||||
!CHECK: [[IF2:%.*]] = fir.convert [[IFCOND]] : (!fir.logical<4>) -> i1
|
||||
@ -307,7 +307,7 @@ subroutine acc_enter_data_non_default_lb()
|
||||
!CHECK: %[[ONE:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %c10{{.*}}, %[[ONE]] : index
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[ONE]] : index) startIdx(%c11{{.*}} : index)
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%c10{{.*}} : index) stride(%[[ONE]] : index) startIdx(%c11{{.*}} : index)
|
||||
!CHECK: %[[CREATE:.*]] = acc.create varPtr(%1 : !fir.ref<!fir.array<10xi32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<10xi32>> {name = "b", structured = false}
|
||||
!CHECK: acc.enter_data dataOperands(%[[CREATE]] : !fir.ref<!fir.array<10xi32>>)
|
||||
|
||||
@ -602,7 +602,7 @@ subroutine acc_enter_data_derived_type()
|
||||
!CHECK: %[[C1:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[C1]] : index
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[CREATE:.*]] = acc.create varPtr(%[[ARRAY_COORD]] : !fir.ref<!fir.array<10xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<10xf32>> {name = "a%array", structured = false}
|
||||
!CHECK: acc.enter_data dataOperands(%[[CREATE]] : !fir.ref<!fir.array<10xf32>>)
|
||||
|
||||
@ -658,7 +658,7 @@ subroutine acc_enter_data_derived_type()
|
||||
!CHECK: %[[C1:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[C1]] : index
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[CREATE:.*]] = acc.create varPtr(%[[ARRAY_COORD]] : !fir.ref<!fir.array<10xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<10xf32>> {name = "b%d%array", structured = false}
|
||||
|
||||
!$acc enter data create(c%data)
|
||||
@ -689,7 +689,7 @@ subroutine acc_enter_data_derived_type()
|
||||
!CHECK: %[[C1:.*]] = arith.constant 1 : index
|
||||
!CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
!CHECK: %[[UB:.*]] = arith.subi %[[C10]], %[[C1]] : index
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%[[C10]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
!CHECK: %[[CREATE:.*]] = acc.create varPtr(%[[ARRAY_COORD]] : !fir.ref<!fir.array<10xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<10xf32>> {name = "d%d(1_8)%array", structured = false}
|
||||
!CHECK: acc.enter_data dataOperands(%[[CREATE]] : !fir.ref<!fir.array<10xf32>>)
|
||||
|
||||
|
@ -94,7 +94,7 @@ program acc_private
|
||||
! CHECK: %[[C1:.*]] = arith.constant 1 : index
|
||||
! CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
! CHECK: %[[UB:.*]] = arith.subi %{{.*}}, %[[C1]] : index
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%{{.*}} : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
! CHECK: %[[B_PRIVATE:.*]] = acc.private varPtr(%[[B]] : !fir.ref<!fir.array<100xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<100xf32>> {name = "b"}
|
||||
! CHECK: acc.loop private(@privatization_ref_100xf32 -> %[[B_PRIVATE]] : !fir.ref<!fir.array<100xf32>>) {
|
||||
! CHECK: acc.yield
|
||||
@ -131,7 +131,7 @@ program acc_private
|
||||
! CHECK: %[[C1:.*]] = arith.constant 1 : index
|
||||
! CHECK: %[[LB:.*]] = arith.constant 0 : index
|
||||
! CHECK: %[[UB:.*]] = arith.subi %{{.*}}, %[[C1]] : index
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
! CHECK: %[[BOUND:.*]] = acc.bounds lowerbound(%[[LB]] : index) upperbound(%[[UB]] : index) extent(%{{.*}} : index) stride(%[[C1]] : index) startIdx(%[[C1]] : index)
|
||||
! CHECK: %[[FP_B:.*]] = acc.firstprivate varPtr(%[[B]] : !fir.ref<!fir.array<100xf32>>) bounds(%[[BOUND]]) -> !fir.ref<!fir.array<100xf32>> {name = "b"}
|
||||
! CHECK: acc.parallel firstprivate(@firstprivatization_ref_100xf32 -> %[[FP_B]] : !fir.ref<!fir.array<100xf32>>)
|
||||
! CHECK: acc.yield
|
||||
|
Loading…
x
Reference in New Issue
Block a user