[Mlir-commits] [mlir] 0e02bf6 - [mlir][Arithmetic] fold overlapping negf.
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Thu May 19 19:04:59 PDT 2022
Author: jacquesguan
Date: 2022-05-20T01:49:19Z
New Revision: 0e02bf635821be8deb2e8094706198838e45e968
URL: https://github.com/llvm/llvm-project/commit/0e02bf635821be8deb2e8094706198838e45e968
DIFF: https://github.com/llvm/llvm-project/commit/0e02bf635821be8deb2e8094706198838e45e968.diff
LOG: [mlir][Arithmetic] fold overlapping negf.
This patch folds negf(negf(x)) to x.
Differential Revision: https://reviews.llvm.org/D125955
Added:
Modified:
mlir/lib/Dialect/Arithmetic/IR/ArithmeticOps.cpp
mlir/test/Dialect/Arithmetic/canonicalize.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Arithmetic/IR/ArithmeticOps.cpp b/mlir/lib/Dialect/Arithmetic/IR/ArithmeticOps.cpp
index 8f26e66394287..7db71a636c9d7 100644
--- a/mlir/lib/Dialect/Arithmetic/IR/ArithmeticOps.cpp
+++ b/mlir/lib/Dialect/Arithmetic/IR/ArithmeticOps.cpp
@@ -549,6 +549,9 @@ void arith::XOrIOp::getCanonicalizationPatterns(
//===----------------------------------------------------------------------===//
OpFoldResult arith::NegFOp::fold(ArrayRef<Attribute> operands) {
+ /// negf(negf(x)) -> x
+ if (auto op = this->getOperand().getDefiningOp<arith::NegFOp>())
+ return op.getOperand();
return constFoldUnaryOp<FloatAttr>(operands,
[](const APFloat &a) { return -a; });
}
diff --git a/mlir/test/Dialect/Arithmetic/canonicalize.mlir b/mlir/test/Dialect/Arithmetic/canonicalize.mlir
index 11e20458bf60e..1a78bf7ea0161 100644
--- a/mlir/test/Dialect/Arithmetic/canonicalize.mlir
+++ b/mlir/test/Dialect/Arithmetic/canonicalize.mlir
@@ -1320,6 +1320,15 @@ func.func @test_negf() -> (f32) {
return %0: f32
}
+// CHECK-LABEL: @test_negf1(
+// CHECK-SAME: %[[arg0:.+]]:
+// CHECK: return %[[arg0]]
+func.func @test_negf1(%f : f32) -> (f32) {
+ %0 = arith.negf %f : f32
+ %1 = arith.negf %0 : f32
+ return %1: f32
+}
+
// -----
// CHECK-LABEL: @test_remui(
More information about the Mlir-commits
mailing list