From 4fce38cde2fa2a1db1ff2e6fcc56a41ca5f2472e Mon Sep 17 00:00:00 2001 From: Prabhdeep Singh Soni Date: Wed, 24 Aug 2022 12:28:02 -0400 Subject: [PATCH] Revert "[MLIR][OpenMP] Add support for safelen clause" This reverts commit 172fe1706d83832a330170f43fe52aab1b75e7de. --- flang/lib/Lower/OpenMP.cpp | 2 +- mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td | 6 ---- mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp | 7 ----- .../Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp | 6 +--- mlir/test/Dialect/OpenMP/invalid.mlir | 20 ------------- mlir/test/Dialect/OpenMP/ops.mlir | 9 ------ mlir/test/Target/LLVMIR/openmp-llvm.mlir | 34 ---------------------- 7 files changed, 2 insertions(+), 82 deletions(-) diff --git a/flang/lib/Lower/OpenMP.cpp b/flang/lib/Lower/OpenMP.cpp index 523edc0..77a9526 100644 --- a/flang/lib/Lower/OpenMP.cpp +++ b/flang/lib/Lower/OpenMP.cpp @@ -1150,7 +1150,7 @@ static void genOMP(Fortran::lower::AbstractConverter &converter, TypeRange resultType; auto SimdLoopOp = firOpBuilder.create( currentLocation, resultType, lowerBound, upperBound, step, - ifClauseOperand, simdlenClauseOperand, nullptr, + ifClauseOperand, simdlenClauseOperand, /*inclusive=*/firOpBuilder.getUnitAttr()); createBodyOfOp(SimdLoopOp, converter, currentLocation, eval, &loopOpClauseList, iv); diff --git a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td index cb13056..1ddb5ea3 100644 --- a/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td +++ b/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td @@ -421,10 +421,6 @@ def SimdLoopOp : OpenMP_Op<"simdloop", [AttrSizedOperandSegments, When a simdlen clause is present, the preferred number of iterations to be executed concurrently is the value provided to the simdlen clause. - - The safelen clause specifies that no two concurrent iterations within a - SIMD chunk can have a distance in the logical iteration space that is - greater than or equal to the value given in the clause. ``` omp.simdloop for (%i1, %i2) : index = (%c0, %c0) to (%c10, %c10) step (%c1, %c1) { @@ -440,7 +436,6 @@ def SimdLoopOp : OpenMP_Op<"simdloop", [AttrSizedOperandSegments, Variadic:$step, Optional:$if_expr, ConfinedAttr, [IntPositive]>:$simdlen, - ConfinedAttr, [IntPositive]>:$safelen, UnitAttr:$inclusive ); @@ -448,7 +443,6 @@ def SimdLoopOp : OpenMP_Op<"simdloop", [AttrSizedOperandSegments, let assemblyFormat = [{ oilist(`if` `(` $if_expr `)` |`simdlen` `(` $simdlen `)` - |`safelen` `(` $safelen `)` ) `for` custom($region, $lowerBound, $upperBound, $step, type($step), $inclusive) attr-dict }]; diff --git a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp index b4e05c5..0e709de 100644 --- a/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp +++ b/mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp @@ -578,13 +578,6 @@ LogicalResult SimdLoopOp::verify() { if (this->lowerBound().empty()) { return emitOpError() << "empty lowerbound for simd loop operation"; } - if (this->simdlen().has_value() && this->safelen().has_value() && - this->simdlen().value() > this->safelen().value()) { - return emitOpError() - << "simdlen clause and safelen clause are both present, but the " - "simdlen value is not less than or equal to safelen value"; - } - return success(); } diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp index d390eae6..76bbb28 100644 --- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp +++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp @@ -970,14 +970,10 @@ convertOmpSimdLoop(Operation &opInst, llvm::IRBuilderBase &builder, if (llvm::Optional simdlenVar = loop.simdlen()) simdlen = builder.getInt64(simdlenVar.value()); - llvm::ConstantInt *safelen = nullptr; - if (llvm::Optional safelenVar = loop.safelen()) - safelen = builder.getInt64(safelenVar.value()); - ompBuilder->applySimd( loopInfo, loop.if_expr() ? moduleTranslation.lookupValue(loop.if_expr()) : nullptr, - simdlen, safelen); + simdlen, nullptr); builder.restoreIP(afterIP); return success(); diff --git a/mlir/test/Dialect/OpenMP/invalid.mlir b/mlir/test/Dialect/OpenMP/invalid.mlir index ef0fc9d..c833bdd 100644 --- a/mlir/test/Dialect/OpenMP/invalid.mlir +++ b/mlir/test/Dialect/OpenMP/invalid.mlir @@ -215,26 +215,6 @@ func.func @omp_simdloop_pretty_simdlen(%lb : index, %ub : index, %step : index) // ----- -func.func @omp_simdloop_pretty_safelen(%lb : index, %ub : index, %step : index) -> () { - // expected-error @below {{op attribute 'safelen' failed to satisfy constraint: 64-bit signless integer attribute whose value is positive}} - omp.simdloop safelen(0) for (%iv): index = (%lb) to (%ub) step (%step) { - omp.yield - } - return -} - -// ----- - -func.func @omp_simdloop_pretty_simdlen_safelen(%lb : index, %ub : index, %step : index) -> () { - // expected-error @below {{'omp.simdloop' op simdlen clause and safelen clause are both present, but the simdlen value is not less than or equal to safelen value}} - omp.simdloop simdlen(2) safelen(1) for (%iv): index = (%lb) to (%ub) step (%step) { - omp.yield - } - return -} - -// ----- - // expected-error @below {{op expects initializer region with one argument of the reduction type}} omp.reduction.declare @add_f32 : f64 init { diff --git a/mlir/test/Dialect/OpenMP/ops.mlir b/mlir/test/Dialect/OpenMP/ops.mlir index 4cc8fd5..99c35fc 100644 --- a/mlir/test/Dialect/OpenMP/ops.mlir +++ b/mlir/test/Dialect/OpenMP/ops.mlir @@ -366,15 +366,6 @@ func.func @omp_simdloop_pretty_simdlen(%lb : index, %ub : index, %step : index) return } -// CHECK-LABEL: omp_simdloop_pretty_safelen -func.func @omp_simdloop_pretty_safelen(%lb : index, %ub : index, %step : index) -> () { - // CHECK: omp.simdloop safelen(2) for (%{{.*}}) : index = (%{{.*}}) to (%{{.*}}) step (%{{.*}}) - omp.simdloop safelen(2) for (%iv): index = (%lb) to (%ub) step (%step) { - omp.yield - } - return -} - // CHECK-LABEL: omp_simdloop_pretty_multiple func.func @omp_simdloop_pretty_multiple(%lb1 : index, %ub1 : index, %step1 : index, %lb2 : index, %ub2 : index, %step2 : index) -> () { // CHECK: omp.simdloop for (%{{.*}}, %{{.*}}) : index = (%{{.*}}, %{{.*}}) to (%{{.*}}, %{{.*}}) step (%{{.*}}, %{{.*}}) diff --git a/mlir/test/Target/LLVMIR/openmp-llvm.mlir b/mlir/test/Target/LLVMIR/openmp-llvm.mlir index 787575ac..e827c0c 100644 --- a/mlir/test/Target/LLVMIR/openmp-llvm.mlir +++ b/mlir/test/Target/LLVMIR/openmp-llvm.mlir @@ -765,40 +765,6 @@ llvm.func @simdloop_simple_multiple_simdlen(%lb1 : i64, %ub1 : i64, %step1 : i64 // ----- -// CHECK-LABEL: @simdloop_simple_multiple_safelen -llvm.func @simdloop_simple_multiple_safelen(%lb1 : i64, %ub1 : i64, %step1 : i64, %lb2 : i64, %ub2 : i64, %step2 : i64, %arg0: !llvm.ptr, %arg1: !llvm.ptr) { - omp.simdloop safelen(2) for (%iv1, %iv2) : i64 = (%lb1, %lb2) to (%ub1, %ub2) step (%step1, %step2) { - %3 = llvm.mlir.constant(2.000000e+00 : f32) : f32 - %4 = llvm.getelementptr %arg0[%iv1] : (!llvm.ptr, i64) -> !llvm.ptr - %5 = llvm.getelementptr %arg1[%iv2] : (!llvm.ptr, i64) -> !llvm.ptr - llvm.store %3, %4 : !llvm.ptr - llvm.store %3, %5 : !llvm.ptr - omp.yield - } - llvm.return -} -// CHECK: llvm.loop.vectorize.enable -// CHECK-NEXT: llvm.loop.vectorize.width{{.*}}i64 2 - -// ----- - -// CHECK-LABEL: @simdloop_simple_multiple_simdlen_safelen -llvm.func @simdloop_simple_multiple_simdlen_safelen(%lb1 : i64, %ub1 : i64, %step1 : i64, %lb2 : i64, %ub2 : i64, %step2 : i64, %arg0: !llvm.ptr, %arg1: !llvm.ptr) { - omp.simdloop simdlen(1) safelen(2) for (%iv1, %iv2) : i64 = (%lb1, %lb2) to (%ub1, %ub2) step (%step1, %step2) { - %3 = llvm.mlir.constant(2.000000e+00 : f32) : f32 - %4 = llvm.getelementptr %arg0[%iv1] : (!llvm.ptr, i64) -> !llvm.ptr - %5 = llvm.getelementptr %arg1[%iv2] : (!llvm.ptr, i64) -> !llvm.ptr - llvm.store %3, %4 : !llvm.ptr - llvm.store %3, %5 : !llvm.ptr - omp.yield - } - llvm.return -} -// CHECK: llvm.loop.vectorize.enable -// CHECK-NEXT: llvm.loop.vectorize.width{{.*}}i64 1 - -// ----- - // CHECK-LABEL: @simdloop_if llvm.func @simdloop_if(%arg0: !llvm.ptr {fir.bindc_name = "n"}, %arg1: !llvm.ptr {fir.bindc_name = "threshold"}) { %0 = llvm.mlir.constant(1 : i64) : i64 -- 2.7.4