[Mlir-commits] [mlir] [MLIR][Linalg] Rename convolution pass (PR #154400)
Renato Golin
llvmlistbot at llvm.org
Wed Aug 20 03:55:39 PDT 2025
https://github.com/rengolin updated https://github.com/llvm/llvm-project/pull/154400
>From 01f4ca0a15cd69299598679ff50e6d6750d92101 Mon Sep 17 00:00:00 2001
From: Renato Golin <rengolin at systemcall.eu>
Date: Tue, 19 Aug 2025 19:11:00 +0100
Subject: [PATCH 1/4] [MLIR][Linalg] Rename convolution pass (with deprecation
notice)
Rename the pass `LinalgNamedOpConversionPass` to `SimplifyDepthwiseConvPass` to avoid conflating it with the new morphisms we are creating between the norms.
Keep the old pass/function as deprecated for now, and agree on a timing to remove it from the tree at some point in the future.
---
mlir/include/mlir/Dialect/Linalg/Passes.td | 8 ++++++-
.../Dialect/Linalg/Transforms/Transforms.h | 8 +++++--
.../Dialect/Linalg/Transforms/CMakeLists.txt | 2 +-
...versions.cpp => SimplifyDepthwiseConv.cpp} | 24 +++++++++++++++++++
4 files changed, 38 insertions(+), 4 deletions(-)
rename mlir/lib/Dialect/Linalg/Transforms/{NamedOpConversions.cpp => SimplifyDepthwiseConv.cpp} (88%)
diff --git a/mlir/include/mlir/Dialect/Linalg/Passes.td b/mlir/include/mlir/Dialect/Linalg/Passes.td
index 0b2c9c94dc73d..9aa199f140796 100644
--- a/mlir/include/mlir/Dialect/Linalg/Passes.td
+++ b/mlir/include/mlir/Dialect/Linalg/Passes.td
@@ -86,13 +86,19 @@ def LinalgSpecializeGenericOpsPass : Pass<"linalg-specialize-generic-ops">,
let dependentDialects = ["linalg::LinalgDialect"];
}
-def LinalgNamedOpConversionPass: Pass<"linalg-named-op-conversion"> {
+def LinalgNamedOpConversionPass: Pass<"linalg-named-op-conversion">,
+ Deprecated<"Use 'simplify-depthwise-conv' instead."> {
let summary = "Convert from one named linalg op to another.";
let dependentDialects = ["linalg::LinalgDialect", "tensor::TensorDialect"];
}
// ------------------ End of "form" conversions
+def SimplifyDepthwiseConvPass: Pass<"simplify-depthwise-conv"> {
+ let summary = "Simplify depthwise convolution.";
+ let dependentDialects = ["linalg::LinalgDialect", "tensor::TensorDialect"];
+}
+
def ConvertElementwiseToLinalgPass : Pass<"convert-elementwise-to-linalg", ""> {
let summary = "Convert ElementwiseMappable ops to linalg";
let description = [{
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index 8d5306dca43e3..d757779a60015 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -24,6 +24,7 @@
#include "mlir/IR/PatternMatch.h"
#include "mlir/Interfaces/TilingInterface.h"
#include "mlir/Transforms/DialectConversion.h"
+#include "llvm/Support/Compiler.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallSet.h"
@@ -1962,8 +1963,11 @@ void populateFoldAddIntoDestPatterns(RewritePatternSet &patterns);
void populateFuseTensorPadWithProducerLinalgOpPatterns(
RewritePatternSet &patterns);
-/// Patterns to convert from one named op to another. These can be seen as
-/// canonicalizations of named ops into another named op.
+/// Patterns to simplify depthwise convolutions.
+void populateSimplifyDepthwiseConvPatterns(RewritePatternSet &patterns);
+
+/// Patterns to convert from one named op to another. So far only used on
+/// depthwise convolutions, so deprecated. Use the pattern avove.
void populateLinalgNamedOpConversionPatterns(RewritePatternSet &patterns);
/// Patterns to fold unit-extent dimensions in operands/results of linalg ops on
diff --git a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
index 6ec2e9fd0be7d..fb39e18691e03 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
+++ b/mlir/lib/Dialect/Linalg/Transforms/CMakeLists.txt
@@ -26,7 +26,7 @@ add_mlir_dialect_library(MLIRLinalgTransforms
MorphOps.cpp
TransposeMatmul.cpp
ShardingInterfaceImpl.cpp
- NamedOpConversions.cpp
+ SimplifyDepthwiseConv.cpp
NamedToElementwise.cpp
BlockPackMatmul.cpp
PackAndUnpackPatterns.cpp
diff --git a/mlir/lib/Dialect/Linalg/Transforms/NamedOpConversions.cpp b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
similarity index 88%
rename from mlir/lib/Dialect/Linalg/Transforms/NamedOpConversions.cpp
rename to mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
index a2bd9d92815a0..1d918d7c1663a 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/NamedOpConversions.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
@@ -22,6 +22,7 @@
namespace mlir {
#define GEN_PASS_DEF_LINALGNAMEDOPCONVERSIONPASS
+#define GEN_PASS_DEF_SIMPLIFYDEPTHWISECONVPASS
#include "mlir/Dialect/Linalg/Passes.h.inc"
} // namespace mlir
@@ -143,6 +144,22 @@ struct SimplifyDepthwiseConvQOp
}
};
+struct SimplifyDepthwiseConvPass
+ : public impl::SimplifyDepthwiseConvPassBase<
+ SimplifyDepthwiseConvPass> {
+ using impl::SimplifyDepthwiseConvPassBase<
+ SimplifyDepthwiseConvPass>::SimplifyDepthwiseConvPassBase;
+
+ void runOnOperation() override {
+ Operation *op = getOperation();
+ RewritePatternSet patterns(op->getContext());
+ populateSimplifyDepthwiseConvPatterns(patterns);
+ if (failed(applyPatternsGreedily(op, std::move(patterns))))
+ return signalPassFailure();
+ }
+};
+
+// Deprecated, use the one above
struct LinalgNamedOpConversionPass
: public impl::LinalgNamedOpConversionPassBase<
LinalgNamedOpConversionPass> {
@@ -159,6 +176,13 @@ struct LinalgNamedOpConversionPass
};
} // namespace
+void mlir::linalg::populateSimplifyDepthwiseConvPatterns(
+ RewritePatternSet &patterns) {
+ patterns.add<SimplifyDepthwiseConvOp, SimplifyDepthwiseConvQOp>(
+ patterns.getContext());
+}
+
+// Deprecated, use the one above
void mlir::linalg::populateLinalgNamedOpConversionPatterns(
RewritePatternSet &patterns) {
patterns.add<SimplifyDepthwiseConvOp, SimplifyDepthwiseConvQOp>(
>From a30dc70feb47ceef49317a95800e2396d0c0fb38 Mon Sep 17 00:00:00 2001
From: Renato Golin <rengolin at systemcall.eu>
Date: Tue, 19 Aug 2025 19:17:42 +0100
Subject: [PATCH 2/4] format
---
mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
index 1d918d7c1663a..e3f7f62a1256c 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
@@ -145,8 +145,7 @@ struct SimplifyDepthwiseConvQOp
};
struct SimplifyDepthwiseConvPass
- : public impl::SimplifyDepthwiseConvPassBase<
- SimplifyDepthwiseConvPass> {
+ : public impl::SimplifyDepthwiseConvPassBase<SimplifyDepthwiseConvPass> {
using impl::SimplifyDepthwiseConvPassBase<
SimplifyDepthwiseConvPass>::SimplifyDepthwiseConvPassBase;
>From 563d8da2e658c9850dbe062353026fbc7c5f7f17 Mon Sep 17 00:00:00 2001
From: Renato Golin <rengolin at systemcall.eu>
Date: Tue, 19 Aug 2025 19:41:53 +0100
Subject: [PATCH 3/4] format2
---
mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index d757779a60015..8948d8e4f3e9c 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -24,9 +24,9 @@
#include "mlir/IR/PatternMatch.h"
#include "mlir/Interfaces/TilingInterface.h"
#include "mlir/Transforms/DialectConversion.h"
-#include "llvm/Support/Compiler.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallSet.h"
+#include "llvm/Support/Compiler.h"
namespace mlir {
namespace bufferization {
>From efab9b8ed5731465a9df8b9097a664f46f1db078 Mon Sep 17 00:00:00 2001
From: Renato Golin <rengolin at systemcall.eu>
Date: Wed, 20 Aug 2025 11:53:40 +0100
Subject: [PATCH 4/4] just move without deprecation
---
mlir/include/mlir/Dialect/Linalg/Passes.td | 6 -----
.../Dialect/Linalg/Transforms/Transforms.h | 4 ----
.../Transforms/SimplifyDepthwiseConv.cpp | 24 -------------------
...sion.mlir => simplify-depthwise-conv.mlir} | 2 +-
4 files changed, 1 insertion(+), 35 deletions(-)
rename mlir/test/Dialect/Linalg/{namedop_conversion.mlir => simplify-depthwise-conv.mlir} (96%)
diff --git a/mlir/include/mlir/Dialect/Linalg/Passes.td b/mlir/include/mlir/Dialect/Linalg/Passes.td
index 9aa199f140796..44da2965e6892 100644
--- a/mlir/include/mlir/Dialect/Linalg/Passes.td
+++ b/mlir/include/mlir/Dialect/Linalg/Passes.td
@@ -86,12 +86,6 @@ def LinalgSpecializeGenericOpsPass : Pass<"linalg-specialize-generic-ops">,
let dependentDialects = ["linalg::LinalgDialect"];
}
-def LinalgNamedOpConversionPass: Pass<"linalg-named-op-conversion">,
- Deprecated<"Use 'simplify-depthwise-conv' instead."> {
- let summary = "Convert from one named linalg op to another.";
- let dependentDialects = ["linalg::LinalgDialect", "tensor::TensorDialect"];
-}
-
// ------------------ End of "form" conversions
def SimplifyDepthwiseConvPass: Pass<"simplify-depthwise-conv"> {
diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
index 8948d8e4f3e9c..f1920dc814a12 100644
--- a/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
+++ b/mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h
@@ -1966,10 +1966,6 @@ void populateFuseTensorPadWithProducerLinalgOpPatterns(
/// Patterns to simplify depthwise convolutions.
void populateSimplifyDepthwiseConvPatterns(RewritePatternSet &patterns);
-/// Patterns to convert from one named op to another. So far only used on
-/// depthwise convolutions, so deprecated. Use the pattern avove.
-void populateLinalgNamedOpConversionPatterns(RewritePatternSet &patterns);
-
/// Patterns to fold unit-extent dimensions in operands/results of linalg ops on
/// tensors via reassociative reshape ops.
void populateFoldUnitExtentDimsPatterns(RewritePatternSet &patterns,
diff --git a/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
index e3f7f62a1256c..27ccf3c2ba148 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/SimplifyDepthwiseConv.cpp
@@ -21,7 +21,6 @@
#include "llvm/ADT/TypeSwitch.h"
namespace mlir {
-#define GEN_PASS_DEF_LINALGNAMEDOPCONVERSIONPASS
#define GEN_PASS_DEF_SIMPLIFYDEPTHWISECONVPASS
#include "mlir/Dialect/Linalg/Passes.h.inc"
} // namespace mlir
@@ -157,22 +156,6 @@ struct SimplifyDepthwiseConvPass
return signalPassFailure();
}
};
-
-// Deprecated, use the one above
-struct LinalgNamedOpConversionPass
- : public impl::LinalgNamedOpConversionPassBase<
- LinalgNamedOpConversionPass> {
- using impl::LinalgNamedOpConversionPassBase<
- LinalgNamedOpConversionPass>::LinalgNamedOpConversionPassBase;
-
- void runOnOperation() override {
- Operation *op = getOperation();
- RewritePatternSet patterns(op->getContext());
- populateLinalgNamedOpConversionPatterns(patterns);
- if (failed(applyPatternsGreedily(op, std::move(patterns))))
- return signalPassFailure();
- }
-};
} // namespace
void mlir::linalg::populateSimplifyDepthwiseConvPatterns(
@@ -180,10 +163,3 @@ void mlir::linalg::populateSimplifyDepthwiseConvPatterns(
patterns.add<SimplifyDepthwiseConvOp, SimplifyDepthwiseConvQOp>(
patterns.getContext());
}
-
-// Deprecated, use the one above
-void mlir::linalg::populateLinalgNamedOpConversionPatterns(
- RewritePatternSet &patterns) {
- patterns.add<SimplifyDepthwiseConvOp, SimplifyDepthwiseConvQOp>(
- patterns.getContext());
-}
diff --git a/mlir/test/Dialect/Linalg/namedop_conversion.mlir b/mlir/test/Dialect/Linalg/simplify-depthwise-conv.mlir
similarity index 96%
rename from mlir/test/Dialect/Linalg/namedop_conversion.mlir
rename to mlir/test/Dialect/Linalg/simplify-depthwise-conv.mlir
index 4f2f2720037cd..70e68e787242e 100644
--- a/mlir/test/Dialect/Linalg/namedop_conversion.mlir
+++ b/mlir/test/Dialect/Linalg/simplify-depthwise-conv.mlir
@@ -1,4 +1,4 @@
-// RUN: mlir-opt %s -linalg-named-op-conversion -split-input-file | FileCheck %s
+// RUN: mlir-opt %s --simplify-depthwise-conv -split-input-file | FileCheck %s
// CHECK-LABEL: @depthwise_conv
func.func @depthwise_conv(%arg0: tensor<?x?x?x?xf32>, %arg1: tensor<?x?x?x1xf32>, %arg2: tensor<?x?x?x?x1xf32>) -> tensor<?x?x?x?x1xf32> {
More information about the Mlir-commits
mailing list