From a3f425946d33d605c142ef39edf522d9455a4fe5 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 1 Oct 2021 14:12:54 -0400 Subject: [PATCH] [mlir][linalg] Include InitTensorOp in tiling canonicalization Tiling can create dim ops and those dim ops can take `InitTensorOp` as input. Including it in the tiling canonicalization patterns allows us to fold those dim ops away. Also sorted the existing ops along the way. Reviewed By: mravishankar Differential Revision: https://reviews.llvm.org/D110876 --- mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp index 30ea1ed3bd6f..cb5c3b0ce47d 100644 --- a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp @@ -475,16 +475,22 @@ void mlir::linalg::populateLinalgTilingCanonicalizationPatterns( AffineForOp::getCanonicalizationPatterns(patterns, ctx); AffineMinOp::getCanonicalizationPatterns(patterns, ctx); AffineMaxOp::getCanonicalizationPatterns(patterns, ctx); + ConstantIndexOp::getCanonicalizationPatterns(patterns, ctx); + + memref::SubViewOp::getCanonicalizationPatterns(patterns, ctx); + memref::ViewOp::getCanonicalizationPatterns(patterns, ctx); + scf::ForOp::getCanonicalizationPatterns(patterns, ctx); scf::ParallelOp::getCanonicalizationPatterns(patterns, ctx); - ConstantIndexOp::getCanonicalizationPatterns(patterns, ctx); + + tensor::CastOp::getCanonicalizationPatterns(patterns, ctx); tensor::ExtractSliceOp::getCanonicalizationPatterns(patterns, ctx); tensor::InsertSliceOp::getCanonicalizationPatterns(patterns, ctx); - memref::SubViewOp::getCanonicalizationPatterns(patterns, ctx); - tensor::CastOp::getCanonicalizationPatterns(patterns, ctx); - memref::ViewOp::getCanonicalizationPatterns(patterns, ctx); + + InitTensorOp::getCanonicalizationPatterns(patterns, ctx); PadTensorOp::getCanonicalizationPatterns(patterns, ctx); ctx->getLoadedDialect()->getCanonicalizationPatterns(patterns); + CanonicalizationPatternList< #define GET_OP_LIST #include "mlir/Dialect/Linalg/IR/LinalgStructuredOps.cpp.inc" -- 2.34.1