[Mlir-commits] [mlir] b056292 - [mlir] Remove redundant shape.cstr_broadcastable canonicalization.
Tres Popp
llvmlistbot at llvm.org
Thu Sep 17 00:01:31 PDT 2020
Author: Tres Popp
Date: 2020-09-17T09:01:13+02:00
New Revision: b05629230e9c7e90a2e70a761f7800afb1a8eefd
URL: https://github.com/llvm/llvm-project/commit/b05629230e9c7e90a2e70a761f7800afb1a8eefd
DIFF: https://github.com/llvm/llvm-project/commit/b05629230e9c7e90a2e70a761f7800afb1a8eefd.diff
LOG: [mlir] Remove redundant shape.cstr_broadcastable canonicalization.
These canonicalizations are already handled by folding which will occur
in a superset of situations, so they are being removed.
Differential Revision: https://reviews.llvm.org/D87706
Added:
Modified:
mlir/lib/Dialect/Shape/IR/Shape.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Shape/IR/Shape.cpp b/mlir/lib/Dialect/Shape/IR/Shape.cpp
index cd722870f507..3be53ee2a833 100644
--- a/mlir/lib/Dialect/Shape/IR/Shape.cpp
+++ b/mlir/lib/Dialect/Shape/IR/Shape.cpp
@@ -399,46 +399,6 @@ LogicalResult getShapeVec(Value input, SmallVectorImpl<int64_t> &shapeValues) {
return failure();
}
}
-
-// For shapes that were created by some operations, we can obtain partial
-// information on the shapes and sometimes determine if they will be
-// broadcastable with that.
-struct CstrBroadcastablePartialInfo
- : public OpRewritePattern<CstrBroadcastableOp> {
- using OpRewritePattern<CstrBroadcastableOp>::OpRewritePattern;
-
- LogicalResult matchAndRewrite(CstrBroadcastableOp op,
- PatternRewriter &rewriter) const override {
- SmallVector<int64_t, 6> lhsShape, rhsShape;
- if (failed(getShapeVec(op.lhs(), lhsShape)))
- return failure();
- if (failed(getShapeVec(op.rhs(), rhsShape)))
- return failure();
- if (!OpTrait::util::staticallyKnownBroadcastable(lhsShape, rhsShape))
- return failure();
-
- rewriter.replaceOpWithNewOp<ConstWitnessOp>(op.getOperation(), true);
- return success();
- }
-};
-
-// Scalars are always broadcastable.
-struct CstrBroadcastableScalar : public OpRewritePattern<CstrBroadcastableOp> {
- using OpRewritePattern<CstrBroadcastableOp>::OpRewritePattern;
-
- LogicalResult matchAndRewrite(CstrBroadcastableOp op,
- PatternRewriter &rewriter) const override {
- SmallVector<int64_t, 6> shape;
- if (failed(getShapeVec(op.lhs(), shape)) || shape.size() > 0)
- return failure();
- if (failed(getShapeVec(op.rhs(), shape)) || shape.size() > 0)
- return failure();
-
- rewriter.replaceOpWithNewOp<ConstWitnessOp>(op.getOperation(), true);
- return success();
- }
-};
-
} // namespace
void CstrBroadcastableOp::getCanonicalizationPatterns(
@@ -446,8 +406,7 @@ void CstrBroadcastableOp::getCanonicalizationPatterns(
// Canonicalization patterns have overlap with the considerations during
// folding in case additional shape information is inferred at some point that
// does not result in folding.
- patterns.insert<CstrBroadcastableEqOps, CstrBroadcastablePartialInfo,
- CstrBroadcastableScalar>(context);
+ patterns.insert<CstrBroadcastableEqOps>(context);
}
OpFoldResult CstrBroadcastableOp::fold(ArrayRef<Attribute> operands) {
More information about the Mlir-commits
mailing list