summaryrefslogtreecommitdiff
path: root/mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp
diff options
context:
space:
mode:
authorMatthias Springer <springerm@google.com>2023-01-06 11:59:30 +0100
committerMatthias Springer <springerm@google.com>2023-01-06 12:33:45 +0100
commit6176d6a93e71e6d2bf89bd50e41c30e936ed05a9 (patch)
treecfbe96df8d535aa8e20d9d6431a774de279d4068 /mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp
parentbcfd32adc4b658dc45aa8c338d5dd03837e2a0e4 (diff)
[mlir][tensor] Support parallel_insert_slice in MergeConsecutiveInsertExtractSlicePatterns.cpp
Differential Revision: https://reviews.llvm.org/D141116
Diffstat (limited to 'mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp')
-rw-r--r--mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp b/mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp
index 262ef483d847..416988204655 100644
--- a/mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp
+++ b/mlir/lib/Dialect/Tensor/Transforms/MergeConsecutiveInsertExtractSlicePatterns.cpp
@@ -41,12 +41,13 @@ struct MergeConsecutiveExtractSlice : public OpRewritePattern<ExtractSliceOp> {
};
/// Merges consecutive tensor.insert_slice ops into one.
-struct MergeConsecutiveInsertSlice : public OpRewritePattern<InsertSliceOp> {
- using OpRewritePattern::OpRewritePattern;
+template <typename OpTy>
+struct MergeConsecutiveInsertSlice : public OpRewritePattern<OpTy> {
+ using OpRewritePattern<OpTy>::OpRewritePattern;
- LogicalResult matchAndRewrite(InsertSliceOp nextOp,
+ LogicalResult matchAndRewrite(OpTy nextOp,
PatternRewriter &rewriter) const override {
- auto prevOp = nextOp.getSource().getDefiningOp<InsertSliceOp>();
+ auto prevOp = nextOp.getSource().template getDefiningOp<InsertSliceOp>();
if (!prevOp)
return failure();
@@ -67,7 +68,7 @@ struct MergeConsecutiveInsertSlice : public OpRewritePattern<InsertSliceOp> {
!prevOp.getDestType().hasStaticShape())
return failure();
- rewriter.replaceOpWithNewOp<InsertSliceOp>(
+ rewriter.replaceOpWithNewOp<OpTy>(
nextOp, prevOp.getSource(), nextOp.getDest(), nextOp.getMixedOffsets(),
nextOp.getMixedSizes(), nextOp.getMixedStrides());
return success();
@@ -77,6 +78,8 @@ struct MergeConsecutiveInsertSlice : public OpRewritePattern<InsertSliceOp> {
void mlir::tensor::populateMergeConsecutiveInsertExtractSlicePatterns(
RewritePatternSet &patterns) {
- patterns.add<MergeConsecutiveExtractSlice, MergeConsecutiveInsertSlice>(
+ patterns.add<MergeConsecutiveExtractSlice,
+ MergeConsecutiveInsertSlice<InsertSliceOp>,
+ MergeConsecutiveInsertSlice<ParallelInsertSliceOp>>(
patterns.getContext());
}