[Mlir-commits] [mlir] [MLIR] Fix incorrect memref::DimOp canonicalization, move it to tensor::DimOp (PR #84225)

Mehdi Amini llvmlistbot at llvm.org
Wed Mar 6 19:04:35 PST 2024


================
@@ -1069,39 +1069,6 @@ OpFoldResult DimOp::fold(FoldAdaptor adaptor) {
   return {};
 }
 
-namespace {
-/// Fold dim of a memref reshape operation to a load into the reshape's shape
-/// operand.
-struct DimOfMemRefReshape : public OpRewritePattern<DimOp> {
-  using OpRewritePattern<DimOp>::OpRewritePattern;
-
-  LogicalResult matchAndRewrite(DimOp dim,
-                                PatternRewriter &rewriter) const override {
-    auto reshape = dim.getSource().getDefiningOp<ReshapeOp>();
-
-    if (!reshape)
-      return failure();
-
-    // Place the load directly after the reshape to ensure that the shape memref
-    // was not mutated.
-    rewriter.setInsertionPointAfter(reshape);
-    Location loc = dim.getLoc();
-    Value load =
-        rewriter.create<LoadOp>(loc, reshape.getShape(), dim.getIndex());
----------------
joker-eph wrote:

> Or: dim.getIndex() is defined in the same block as reshape but before reshape.

If you do that, then you can just move the insertion point to the later of the index or the reshape I think.


https://github.com/llvm/llvm-project/pull/84225


More information about the Mlir-commits mailing list