diff options
author | Valentin Clement <clementval@gmail.com> | 2023-05-09 14:57:23 -0700 |
---|---|---|
committer | Valentin Clement <clementval@gmail.com> | 2023-05-09 14:57:50 -0700 |
commit | 5e983942d59c4957c48b4a492e4b5e7cff38be44 (patch) | |
tree | e8732f80aae25893c6a5f5f8a5d4d51caec344a3 /flang | |
parent | 16a0a69aadf1ad04efeaab9073bebdfb4b4fd34f (diff) | |
download | llvm-5e983942d59c4957c48b4a492e4b5e7cff38be44.tar.gz |
[mlir][openacc] Cleanup acc.parallel from old data clause operands
Remove old clause operands from acc.parallel operation since
the new dataOperands is now in place.
private, firstprivate and reductions will receive some redesign but are
not part of the new dataOperands.
Reviewed By: razvanlupusoru
Differential Revision: https://reviews.llvm.org/D150207
Diffstat (limited to 'flang')
3 files changed, 2 insertions, 41 deletions
diff --git a/flang/lib/Lower/OpenACC.cpp b/flang/lib/Lower/OpenACC.cpp index 7c057036666b..00cca5d4e6f3 100644 --- a/flang/lib/Lower/OpenACC.cpp +++ b/flang/lib/Lower/OpenACC.cpp @@ -992,7 +992,8 @@ createComputeOp(Fortran::lower::AbstractConverter &converter, addOperand(operands, operandSegments, selfCond); if constexpr (!std::is_same_v<Op, mlir::acc::KernelsOp>) addOperands(operands, operandSegments, reductionOperands); - operandSegments.append({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); + if constexpr (!std::is_same_v<Op, mlir::acc::ParallelOp>) + operandSegments.append({0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}); if constexpr (!std::is_same_v<Op, mlir::acc::KernelsOp>) { addOperands(operands, operandSegments, privateOperands); addOperands(operands, operandSegments, firstprivateOperands); diff --git a/flang/lib/Optimizer/Transforms/OpenACC/OpenACCDataOperandConversion.cpp b/flang/lib/Optimizer/Transforms/OpenACC/OpenACCDataOperandConversion.cpp index 8459ac2aa48d..de28a8f3872c 100644 --- a/flang/lib/Optimizer/Transforms/OpenACC/OpenACCDataOperandConversion.cpp +++ b/flang/lib/Optimizer/Transforms/OpenACC/OpenACCDataOperandConversion.cpp @@ -133,17 +133,6 @@ void OpenACCDataOperandConversion::runOnOperation() { target.addDynamicallyLegalOp<acc::ParallelOp>( [allDataOperandsAreConverted](acc::ParallelOp op) { return allDataOperandsAreConverted(op.getReductionOperands()) && - allDataOperandsAreConverted(op.getCopyOperands()) && - allDataOperandsAreConverted(op.getCopyinOperands()) && - allDataOperandsAreConverted(op.getCopyinReadonlyOperands()) && - allDataOperandsAreConverted(op.getCopyoutOperands()) && - allDataOperandsAreConverted(op.getCopyoutZeroOperands()) && - allDataOperandsAreConverted(op.getCreateOperands()) && - allDataOperandsAreConverted(op.getCreateZeroOperands()) && - allDataOperandsAreConverted(op.getNoCreateOperands()) && - allDataOperandsAreConverted(op.getPresentOperands()) && - allDataOperandsAreConverted(op.getDevicePtrOperands()) && - allDataOperandsAreConverted(op.getAttachOperands()) && allDataOperandsAreConverted(op.getGangPrivateOperands()) && allDataOperandsAreConverted(op.getGangFirstPrivateOperands()); }); diff --git a/flang/test/Transforms/OpenACC/convert-data-operands-to-llvmir.fir b/flang/test/Transforms/OpenACC/convert-data-operands-to-llvmir.fir deleted file mode 100644 index f691ea6667d9..000000000000 --- a/flang/test/Transforms/OpenACC/convert-data-operands-to-llvmir.fir +++ /dev/null @@ -1,29 +0,0 @@ -// RUN: fir-opt -fir-openacc-data-operand-conversion='use-opaque-pointers=1' -split-input-file %s | FileCheck %s -// RUN: fir-opt -fir-openacc-data-operand-conversion='use-opaque-pointers=1' -split-input-file %s | fir-opt -split-input-file --fir-to-llvm-ir | FileCheck %s --check-prefix=LLVMIR - -fir.global internal @_QFEa : !fir.array<10xf32> { - %0 = fir.undefined !fir.array<10xf32> - fir.has_value %0 : !fir.array<10xf32> -} - -func.func @_QQsub_parallel() attributes {fir.bindc_name = "test"} { - %0 = fir.address_of(@_QFEa) : !fir.ref<!fir.array<10xf32>> - %1 = fir.alloca i32 {bindc_name = "i", uniq_name = "_QFEi"} - acc.parallel copyin(%0: !fir.ref<!fir.array<10xf32>>) { - acc.loop { - acc.yield - } - acc.yield - } - return -} - -// CHECK-LABEL: func.func @_QQsub_parallel() attributes {fir.bindc_name = "test"} { -// CHECK: %[[ADDR:.*]] = fir.address_of(@_QFEa) : !fir.ref<!fir.array<10xf32>> -// CHECK: %[[CAST:.*]] = builtin.unrealized_conversion_cast %[[ADDR]] : !fir.ref<!fir.array<10xf32>> to !llvm.ptr<array<10 x f32>> -// CHECK: acc.parallel copyin(%[[CAST]] : !llvm.ptr<array<10 x f32>>) { -// CHECK: acc.loop - -// LLVMIR-LABEL: llvm.func @_QQsub_parallel() attributes {fir.bindc_name = "test"} { -// LLVMIR: %[[ADDR:.*]] = llvm.mlir.addressof @_QFEa : !llvm.ptr<array<10 x f32>> -// LLVMIR: acc.parallel copyin(%[[ADDR]] : !llvm.ptr<array<10 x f32>>) { |