[Mlir-commits] [mlir] [mlir][linalg] Do not set insertion point inside padding function (PR #165420)
Kunwar Grover
llvmlistbot at llvm.org
Wed Oct 29 02:34:36 PDT 2025
https://github.com/Groverkss updated https://github.com/llvm/llvm-project/pull/165420
>From 2440ca6e1828c258b44f1dc1bb464e19e9258ed0 Mon Sep 17 00:00:00 2001
From: Kunwar Grover <groverkss at gmail.com>
Date: Tue, 28 Oct 2025 15:36:04 +0000
Subject: [PATCH 1/2] [mlir][linalg] Do not set insertion point inside padding
function
---
mlir/lib/Dialect/Linalg/Transforms/PadTilingInterface.cpp | 4 ----
1 file changed, 4 deletions(-)
diff --git a/mlir/lib/Dialect/Linalg/Transforms/PadTilingInterface.cpp b/mlir/lib/Dialect/Linalg/Transforms/PadTilingInterface.cpp
index 3e787a2ad0ef5..52ab92f180575 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/PadTilingInterface.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/PadTilingInterface.cpp
@@ -288,10 +288,6 @@ FailureOr<PadTilingInterfaceResult> linalg::rewriteAsPaddedOp(
return failure();
}
- OpBuilder::InsertionGuard g(builder);
- // Set IP after toPad because we also take the dims of toPad's output.
- builder.setInsertionPointAfter(toPad);
-
// 1. Get the loopUpperBounds from the TilingInterface.
SmallVector<Range> iterationDomain = toPad.getIterationDomain(builder);
>From 83138cc2ed6a36ce4b0c21aee733c65b2d2c4586 Mon Sep 17 00:00:00 2001
From: Kunwar Grover <groverkss at gmail.com>
Date: Wed, 29 Oct 2025 09:34:13 +0000
Subject: [PATCH 2/2] Address comments
---
mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h | 3 +++
mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp | 2 ++
2 files changed, 5 insertions(+)
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index c89fc59c91830..d00183a1e16a1 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -653,6 +653,9 @@ struct PadTilingInterfaceResult {
// interpreted as the bounding box (dynamic) value to pad to.
/// * Use "options.paddingValues" to set the padding value of the created
// tensor::PadOp.
+//
+// The transformation assumes that the insertion point is set after the
+// operation to pad.
FailureOr<PadTilingInterfaceResult>
rewriteAsPaddedOp(OpBuilder &, TilingInterface toPad,
PadTilingInterfaceOptions options,
diff --git a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
index 794dda96d1dfa..8b89244486339 100644
--- a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+++ b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
@@ -2464,6 +2464,8 @@ transform::PadTilingInterfaceOp::apply(transform::TransformRewriter &rewriter,
.setPaddingSizes(getMixedPaddingSizes())
.setPadToMultipleOf(getPadToMultipleOf());
+ OpBuilder::InsertionGuard g(rewriter);
+ rewriter.setInsertionPointAfter(targetOp);
auto maybePadOps = rewriteAsPaddedOp(
rewriter, cast<TilingInterface>(targetOp.getOperation()), options);
if (failed(maybePadOps)) {
More information about the Mlir-commits
mailing list