summaryrefslogtreecommitdiff
path: root/mlir/lib/Dialect/Complex/IR/ComplexOps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Dialect/Complex/IR/ComplexOps.cpp')
-rw-r--r--mlir/lib/Dialect/Complex/IR/ComplexOps.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/Complex/IR/ComplexOps.cpp b/mlir/lib/Dialect/Complex/IR/ComplexOps.cpp
index 0390a00cf684..00dbb564481e 100644
--- a/mlir/lib/Dialect/Complex/IR/ComplexOps.cpp
+++ b/mlir/lib/Dialect/Complex/IR/ComplexOps.cpp
@@ -125,6 +125,20 @@ OpFoldResult AddOp::fold(ArrayRef<Attribute> operands) {
}
//===----------------------------------------------------------------------===//
+// NegOp
+//===----------------------------------------------------------------------===//
+
+OpFoldResult NegOp::fold(ArrayRef<Attribute> operands) {
+ assert(operands.size() == 1 && "unary op takes 1 operand");
+
+ // complex.neg(complex.neg(a)) -> a
+ if (auto negOp = getOperand().getDefiningOp<NegOp>())
+ return negOp.getOperand();
+
+ return {};
+}
+
+//===----------------------------------------------------------------------===//
// TableGen'd op method definitions
//===----------------------------------------------------------------------===//