-
Notifications
You must be signed in to change notification settings - Fork 13.3k
[mlir][arith] Rename AtomicRMWKind
's maxf
→ maximumf
, minf
→ minimumf
#66135
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
@llvm/pr-subscribers-mlir-core ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir-vector ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir-affine ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir-arith ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir-memref ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
@llvm/pr-subscribers-mlir-linalg ChangesThis patch is part of a larger initiative aimed at fixing floating-point This commit renames -- 11 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td index 78fd7bdf012f8a8..a833e9c8220af5b 100644 --- a/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td +++ b/mlir/include/mlir/Dialect/Arith/IR/ArithBase.td @@ -69,25 +69,25 @@ def Arith_CmpIPredicateAttr : I64EnumAttr< let cppNamespace = "::mlir::arith"; } -def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; -def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; -def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; -def ATOMIC_RMW_KIND_MAXF : I64EnumAttrCase<"maxf", 3>; -def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; -def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; -def ATOMIC_RMW_KIND_MINF : I64EnumAttrCase<"minf", 6>; -def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; -def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; -def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; -def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; -def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; -def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; +def ATOMIC_RMW_KIND_ADDF : I64EnumAttrCase<"addf", 0>; +def ATOMIC_RMW_KIND_ADDI : I64EnumAttrCase<"addi", 1>; +def ATOMIC_RMW_KIND_ASSIGN : I64EnumAttrCase<"assign", 2>; +def ATOMIC_RMW_KIND_MAXIMUMF : I64EnumAttrCase<"maximumf", 3>; +def ATOMIC_RMW_KIND_MAXS : I64EnumAttrCase<"maxs", 4>; +def ATOMIC_RMW_KIND_MAXU : I64EnumAttrCase<"maxu", 5>; +def ATOMIC_RMW_KIND_MINIMUMF : I64EnumAttrCase<"minimumf", 6>; +def ATOMIC_RMW_KIND_MINS : I64EnumAttrCase<"mins", 7>; +def ATOMIC_RMW_KIND_MINU : I64EnumAttrCase<"minu", 8>; +def ATOMIC_RMW_KIND_MULF : I64EnumAttrCase<"mulf", 9>; +def ATOMIC_RMW_KIND_MULI : I64EnumAttrCase<"muli", 10>; +def ATOMIC_RMW_KIND_ORI : I64EnumAttrCase<"ori", 11>; +def ATOMIC_RMW_KIND_ANDI : I64EnumAttrCase<"andi", 12>; def AtomicRMWKindAttr : I64EnumAttr< "AtomicRMWKind", "", [ATOMIC_RMW_KIND_ADDF, ATOMIC_RMW_KIND_ADDI, ATOMIC_RMW_KIND_ASSIGN, - ATOMIC_RMW_KIND_MAXF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, - ATOMIC_RMW_KIND_MINF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, + ATOMIC_RMW_KIND_MAXIMUMF, ATOMIC_RMW_KIND_MAXS, ATOMIC_RMW_KIND_MAXU, + ATOMIC_RMW_KIND_MINIMUMF, ATOMIC_RMW_KIND_MINS, ATOMIC_RMW_KIND_MINU, ATOMIC_RMW_KIND_MULF, ATOMIC_RMW_KIND_MULI, ATOMIC_RMW_KIND_ORI, ATOMIC_RMW_KIND_ANDI]> { let cppNamespace = "::mlir::arith"; diff --git a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp index 516a6b8ed88e61e..97faefe2cd4d631 100644 --- a/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp +++ b/mlir/lib/Conversion/MemRefToLLVM/MemRefToLLVM.cpp @@ -1594,13 +1594,13 @@ matchSimpleAtomicOp(memref::AtomicRMWOp atomicOp) { return LLVM::AtomicBinOp::add; case arith::AtomicRMWKind::assign: return LLVM::AtomicBinOp::xchg; - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return LLVM::AtomicBinOp::fmax; case arith::AtomicRMWKind::maxs: return LLVM::AtomicBinOp::max; case arith::AtomicRMWKind::maxu: return LLVM::AtomicBinOp::umax; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return LLVM::AtomicBinOp::fmin; case arith::AtomicRMWKind::mins: return LLVM::AtomicBinOp::min; diff --git a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp index ab1dfbdb419b891..1ba0bc8b6bfbe5e 100644 --- a/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp +++ b/mlir/lib/Dialect/Affine/Analysis/AffineAnalysis.cpp @@ -60,8 +60,10 @@ static Value getSupportedReduction(AffineForOp forOp, unsigned pos, .Case([](arith::AndIOp) { return arith::AtomicRMWKind::andi; }) .Case([](arith::OrIOp) { return arith::AtomicRMWKind::ori; }) .Case([](arith::MulIOp) { return arith::AtomicRMWKind::muli; }) - .Case([](arith::MinimumFOp) { return arith::AtomicRMWKind::minf; }) - .Case([](arith::MaximumFOp) { return arith::AtomicRMWKind::maxf; }) + .Case( + [](arith::MinimumFOp) { return arith::AtomicRMWKind::minimumf; }) + .Case( + [](arith::MaximumFOp) { return arith::AtomicRMWKind::maximumf; }) .Case([](arith::MinSIOp) { return arith::AtomicRMWKind::mins; }) .Case([](arith::MaxSIOp) { return arith::AtomicRMWKind::maxs; }) .Case([](arith::MinUIOp) { return arith::AtomicRMWKind::minu; }) diff --git a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp index 77bf8a438d6db84..1e34ac598860f52 100644 --- a/mlir/lib/Dialect/Arith/IR/ArithOps.cpp +++ b/mlir/lib/Dialect/Arith/IR/ArithOps.cpp @@ -2369,7 +2369,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, OpBuilder &builder, Location loc, bool useOnlyFiniteValue) { switch (kind) { - case AtomicRMWKind::maxf: { + case AtomicRMWKind::maximumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2390,7 +2390,7 @@ TypedAttr mlir::arith::getIdentityValueAttr(AtomicRMWKind kind, Type resultType, return builder.getIntegerAttr( resultType, APInt::getSignedMinValue( llvm::cast(resultType).getWidth())); - case AtomicRMWKind::minf: { + case AtomicRMWKind::minimumf: { const llvm::fltSemantics &semantic = llvm::cast(resultType).getFloatSemantics(); APFloat identity = useOnlyFiniteValue @@ -2426,8 +2426,8 @@ std::optional mlir::arith::getNeutralElement(Operation *op) { // Floating-point operations. .Case([](arith::AddFOp op) { return AtomicRMWKind::addf; }) .Case([](arith::MulFOp op) { return AtomicRMWKind::mulf; }) - .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maxf; }) - .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minf; }) + .Case([](arith::MaximumFOp op) { return AtomicRMWKind::maximumf; }) + .Case([](arith::MinimumFOp op) { return AtomicRMWKind::minimumf; }) // Integer operations. .Case([](arith::AddIOp op) { return AtomicRMWKind::addi; }) .Case([](arith::OrIOp op) { return AtomicRMWKind::ori; }) @@ -2482,9 +2482,9 @@ Value mlir::arith::getReductionOp(AtomicRMWKind op, OpBuilder &builder, return builder.create(loc, lhs, rhs); case AtomicRMWKind::muli: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::maxf: + case AtomicRMWKind::maximumf: return builder.create(loc, lhs, rhs); - case AtomicRMWKind::minf: + case AtomicRMWKind::minimumf: return builder.create(loc, lhs, rhs); case AtomicRMWKind::maxs: return builder.create(loc, lhs, rhs); diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index d26e68cb47ac1e0..f87aa4559e10afe 100644 --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -2549,9 +2549,9 @@ FailureOr> SoftmaxOp::decomposeOperation(OpBuilder &b) { dims.erase(dims.begin() + reductionDim); // Step 1: Compute max along dim. Value outputReduce = b.create(loc, dims, elementType); - Value neutralForMaxF = - arith::getIdentityValue(arith::AtomicRMWKind::maxf, elementType, b, loc, - /*useOnlyFiniteValue=*/true); + Value neutralForMaxF = arith::getIdentityValue(arith::AtomicRMWKind::maximumf, + elementType, b, loc, + /*useOnlyFiniteValue=*/true); Value neutralForMaxFInit = b.create(loc, Value{neutralForMaxF}, outputReduce) .result(); diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index 42da47a5381e789..215a8f5e7d18be0 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -3402,8 +3402,8 @@ LogicalResult AtomicRMWOp::verify() { "expects the number of subscripts to be equal to memref rank"); switch (getKind()) { case arith::AtomicRMWKind::addf: - case arith::AtomicRMWKind::maxf: - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::maximumf: + case arith::AtomicRMWKind::minimumf: case arith::AtomicRMWKind::mulf: if (!llvm::isa(getValue().getType())) return emitOpError() << "with kind '" diff --git a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp index 8a276ebbff6a921..7c3ca19b789c750 100644 --- a/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp +++ b/mlir/lib/Dialect/MemRef/Transforms/ExpandOps.cpp @@ -36,7 +36,7 @@ namespace { /// AtomicRMWOpLowering pattern, e.g. with "minf" or "maxf" attributes, to /// `memref.generic_atomic_rmw` with the expanded code. /// -/// %x = atomic_rmw "maxf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 +/// %x = atomic_rmw "maximumf" %fval, %F[%i] : (f32, memref<10xf32>) -> f32 /// /// will be lowered to /// @@ -54,10 +54,10 @@ struct AtomicRMWOpConverter : public OpRewritePattern { PatternRewriter &rewriter) const final { arith::CmpFPredicate predicate; switch (op.getKind()) { - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: predicate = arith::CmpFPredicate::OGT; break; - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: predicate = arith::CmpFPredicate::OLT; break; default: @@ -137,8 +137,8 @@ struct ExpandOpsPass : public memref::impl::ExpandOpsBase { target.addLegalDialect(); target.addDynamicallyLegalOp( [](memref::AtomicRMWOp op) { - return op.getKind() != arith::AtomicRMWKind::maxf && - op.getKind() != arith::AtomicRMWKind::minf; + return op.getKind() != arith::AtomicRMWKind::maximumf && + op.getKind() != arith::AtomicRMWKind::minimumf; }); target.addDynamicallyLegalOp([](memref::ReshapeOp op) { return !cast(op.getShape().getType()).hasStaticShape(); diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp index 9422936bf21e357..11aa76798bcaae1 100644 --- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp +++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp @@ -493,7 +493,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::muli: return builder.create(vector.getLoc(), CombiningKind::MUL, vector); - case arith::AtomicRMWKind::minf: + case arith::AtomicRMWKind::minimumf: return builder.create(vector.getLoc(), CombiningKind::MINF, vector); case arith::AtomicRMWKind::mins: @@ -502,7 +502,7 @@ Value mlir::vector::getVectorReductionOp(arith::AtomicRMWKind op, case arith::AtomicRMWKind::minu: return builder.create(vector.getLoc(), CombiningKind::MINUI, vector); - case arith::AtomicRMWKind::maxf: + case arith::AtomicRMWKind::maximumf: return builder.create(vector.getLoc(), CombiningKind::MAXF, vector); case arith::AtomicRMWKind::maxs: diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir index fd7d7df9d8735f5..1dc3451ed7db87c 100644 --- a/mlir/test/Dialect/Affine/invalid.mlir +++ b/mlir/test/Dialect/Affine/invalid.mlir @@ -287,7 +287,7 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) { %0 = memref.alloc() : memref<100x100xi32> - %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minf") -> (f32) { + %1 = affine.parallel (%i, %j) = (0, 0) to (100, 100) step (10, 10) reduce ("minimumf") -> (f32) { %2 = affine.load %0[%i, %j] : memref<100x100xi32> // expected-error@+1 {{types mismatch between yield op and its parent}} affine.yield %2 : i32 diff --git a/mlir/test/Dialect/Affine/ops.mlir b/mlir/test/Dialect/Affine/ops.mlir index f55d59a3e64707b..1063f2a7ecba489 100644 --- a/mlir/test/Dialect/Affine/ops.mlir +++ b/mlir/test/Dialect/Affine/ops.mlir @@ -158,8 +158,8 @@ func.func @valid_symbol_affine_scope(%n : index, %A : memref) { func.func @parallel(%A : memref<100x100xf32>, %N : index) { // CHECK: affine.parallel (%[[I0:.*]], %[[J0:.*]]) = (0, 0) to (symbol(%[[N]]), 100) step (10, 10) affine.parallel (%i0, %j0) = (0, 0) to (symbol(%N), 100) step (10, 10) { - // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minf", "maxf") -> (f32, f32) - %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minf", "maxf") -> (f32, f32) { + // CHECK: affine.parallel (%{{.*}}, %{{.*}}) = (%[[I0]], %[[J0]]) to (%[[I0]] + 10, %[[J0]] + 10) reduce ("minimumf", "maximumf") -> (f32, f32) + %0:2 = affine.parallel (%i1, %j1) = (%i0, %j0) to (%i0 + 10, %j0 + 10) reduce ("minimumf", "maximumf") -> (f32, f32) { %2 = affine.load %A[%i0 + %i0, %j0 + %j1] : memref<100x100xf32> affine.yield %2, %2 : f32, f32 } diff --git a/mlir/test/Dialect/MemRef/expand-ops.mlir b/mlir/test/Dialect/MemRef/expand-ops.mlir index a0d8e52d6e7e275..3234b35e99dcdfe 100644 --- a/mlir/test/Dialect/MemRef/expand-ops.mlir +++ b/mlir/test/Dialect/MemRef/expand-ops.mlir @@ -3,7 +3,7 @@ // CHECK-LABEL: func @atomic_rmw_to_generic // CHECK-SAME: ([[F:%.*]]: memref<10xf32>, [[f:%.*]]: f32, [[i:%.*]]: index) func.func @atomic_rmw_to_generic(%F: memref<10xf32>, %f: f32, %i: index) -> f32 { - %x = memref.atomic_rmw maxf %f, %F[%i] : (f32, memref<10xf32>) -> f32 + %x = memref.atomic_rmw maximumf %f, %F[%i] : (f32, memref<10xf32>) -> f32 return %x : f32 } // CHECK: %0 = memref.generic_atomic_rmw %arg0[%arg2] : memref<10xf32> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Seems like Windows build is broken
|
How to restart CI? |
Rebase + push should do it. In a few of my recent PRs I found the Windows check to fail in the same way, so it seems like some more wide-spread CI issue. |
Yeah, I was just looking for a UI button, because I was away from my desktop |
…`minimumf` This patch is part of a larger initiative aimed at fixing floating-point `max` and `min` operations in MLIR: https://discourse.llvm.org/t/rfc-fix-floating-point-max-and-min-operations-in-mlir/72671. This commit renames `maxf` and `minf` enumerators of `AtomicRMWKind` to better reflect the current naming scheme and the goals of the RFC.
536eeb9
to
1bb15a1
Compare
…`minimumf` (llvm#66135) This patch is part of a larger initiative aimed at fixing floating-point `max` and `min` operations in MLIR: https://discourse.llvm.org/t/rfc-fix-floating-point-max-and-min-operations-in-mlir/72671. This commit renames `maxf` and `minf` enumerators of `AtomicRMWKind` to better reflect the current naming scheme and the goals of the RFC.
…`minimumf` (llvm#66135) This patch is part of a larger initiative aimed at fixing floating-point `max` and `min` operations in MLIR: https://discourse.llvm.org/t/rfc-fix-floating-point-max-and-min-operations-in-mlir/72671. This commit renames `maxf` and `minf` enumerators of `AtomicRMWKind` to better reflect the current naming scheme and the goals of the RFC.
This patch is part of a larger initiative aimed at fixing floating-point
max
andmin
operations in MLIR: https://discourse.llvm.org/t/rfc-fix-floating-point-max-and-min-operations-in-mlir/72671.This commit renames
maxf
andminf
enumerators ofAtomicRMWKind
to better reflect the current naming scheme and the goals of the RFC.