Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[mlir] Retire additional let constructor (NFC) #139390

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 13, 2025

Conversation

chelini
Copy link
Contributor

@chelini chelini commented May 10, 2025

Three main changes:

  • The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass

  • createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why the NVVM namespace was used initially, as all passes in LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace.

  • DuplicateFunctionEliminationPass is now in the func namespace.

@llvmbot
Copy link
Member

llvmbot commented May 10, 2025

@llvm/pr-subscribers-mlir-tensor
@llvm/pr-subscribers-mlir-llvm

@llvm/pr-subscribers-mlir-func

Author: lorenzo chelini (chelini)

Changes

Three main changes:

  • The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass

  • createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why the NVVM namespace was used initially, as all passes in LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace.

  • DuplicateFunctionEliminationPass is now in the func namespace.


Full diff: https://github.com/llvm/llvm-project/pull/139390.diff

17 Files Affected:

  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.h (-4)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.td (+1-2)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.h (+1-4)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.td (-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h (+1-5)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h (+1-7)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td (+7-6)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h (+1-2)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h (+2-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td (+1-2)
  • (modified) mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp (+5-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp (+2-6)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp (+4-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp (+3-6)
  • (modified) mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp (+2-1)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
index 58dce89fdb578..8d81d8ec14ee7 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
@@ -62,10 +62,6 @@ void populateExpandBFloat16Patterns(RewritePatternSet &patterns);
 /// Add patterns to expand Arith ops.
 void populateArithExpandOpsPatterns(RewritePatternSet &patterns);
 
-/// Create a pass to replace signed ops with unsigned ones where they are proven
-/// equivalent.
-std::unique_ptr<Pass> createArithUnsignedWhenEquivalentPass();
-
 /// Add patterns for int range based optimizations.
 void populateIntRangeOptimizationsPatterns(RewritePatternSet &patterns,
                                            DataFlowSolver &solver);
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
index 1d37314885d93..d026d494cb50c 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
@@ -20,7 +20,7 @@ def ArithExpandOpsPass : Pass<"arith-expand"> {
   ];
 }
 
-def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
+def ArithUnsignedWhenEquivalentPass : Pass<"arith-unsigned-when-equivalent"> {
   let summary = "Replace signed ops with unsigned ones where they are proven equivalent";
   let description = [{
     Replace signed ops with their unsigned equivalents when integer range analysis
@@ -33,7 +33,6 @@ def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
     The affect ops include division, remainder, shifts, min, max, and integer
     comparisons.
   }];
-  let constructor = "mlir::arith::createArithUnsignedWhenEquivalentPass()";
 }
 
 def ArithIntRangeOpts : Pass<"int-range-optimizations"> {
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
index 0248f068320c5..6fe9cc4bb2986 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
@@ -22,12 +22,9 @@ class RewritePatternSet;
 
 namespace func {
 
-#define GEN_PASS_DECL
+#define GEN_PASS_DECL_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
 
-/// Pass to deduplicate functions.
-std::unique_ptr<Pass> createDuplicateFunctionEliminationPass();
-
 //===----------------------------------------------------------------------===//
 // Registration
 //===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
index c3caf120d052e..4163997515bb0 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
@@ -19,7 +19,6 @@ def DuplicateFunctionEliminationPass : Pass<"duplicate-function-elimination",
     name. The pass chooses one representative per equivalence class, erases
     the remainder, and updates function calls accordingly.
   }];
-  let constructor = "mlir::func::createDuplicateFunctionEliminationPass()";
 }
 
 #endif // MLIR_DIALECT_FUNC_TRANSFORMS_PASSES_TD
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
index 09f62e1190f29..9b3754f582038 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
@@ -17,7 +17,7 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
 /// Make argument-taking successors of each block distinct.  PHI nodes in LLVM
@@ -27,10 +27,6 @@ namespace LLVM {
 /// a new dummy block for LLVM PHI nodes to tell the sources apart.
 void ensureDistinctSuccessors(Operation *op);
 
-/// Creates a pass that legalizes the LLVM dialect operations so that they can
-/// be translated to LLVM IR.
-std::unique_ptr<Pass> createLegalizeForExportPass();
-
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
index 261d2a2389c16..efc8a66234460 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
@@ -13,15 +13,9 @@
 
 namespace mlir {
 class Pass;
-
 namespace NVVM {
-
-#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGET
+#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-
-/// Creates a pass that optimizes LLVM IR for the NVVM target.
-std::unique_ptr<Pass> createOptimizeForTargetPass();
-
 } // namespace NVVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
index b2a03ce61e7e4..961909d5c8d27 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
@@ -24,13 +24,16 @@ def LLVMAddComdats : Pass<"llvm-add-comdats", "::mlir::ModuleOp"> {
   }];
 }
 
-def LLVMLegalizeForExport : Pass<"llvm-legalize-for-export"> {
+def LLVMLegalizeForExportPass : Pass<"llvm-legalize-for-export"> {
   let summary = "Legalize LLVM dialect to be convertible to LLVM IR";
-  let constructor = "::mlir::LLVM::createLegalizeForExportPass()";
+  let description = [{
+    Creates a pass that legalizes the LLVM dialect operations so that they can
+    be translated to LLVM IR.
+  }];
   let dependentDialects = ["LLVM::LLVMDialect"];
 }
 
-def LLVMRequestCWrappers
+def LLVMRequestCWrappersPass
     : Pass<"llvm-request-c-wrappers", "::mlir::func::FuncOp"> {
   let summary = "Request C wrapper emission for all functions";
   let description = [{
@@ -40,12 +43,10 @@ def LLVMRequestCWrappers
     conversion of builtin functions to LLVM to avoid the attribute being
     dropped by other passes.
   }];
-  let constructor = "::mlir::LLVM::createRequestCWrappersPass()";
 }
 
-def NVVMOptimizeForTarget : Pass<"llvm-optimize-for-nvvm-target"> {
+def NVVMOptimizeForTargetPass : Pass<"llvm-optimize-for-nvvm-target"> {
   let summary = "Optimize NVVM IR";
-  let constructor = "::mlir::NVVM::createOptimizeForTargetPass()";
 }
 
 def DIScopeForLLVMFuncOpPass : Pass<"ensure-debug-info-scope-on-llvm-func", "::mlir::ModuleOp"> {
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
index c6fd2642e307d..0becb4d6b785c 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
@@ -16,10 +16,9 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
-std::unique_ptr<Pass> createRequestCWrappersPass();
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
index 964c35b3f15b8..03cb30bc07357 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
@@ -19,7 +19,8 @@ namespace tensor {
 //===----------------------------------------------------------------------===//
 
 /// Creates an instance of the `tensor` subset folding pass.
-std::unique_ptr<Pass> createFoldTensorSubsetOpsPass();
+#define GEN_PASS_DECL_FOLDTENSORSUBSETOPSPASS
+#include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 
 //===----------------------------------------------------------------------===//
 // Registration
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
index be4c333836ec0..62f467f2513ac 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
@@ -11,7 +11,7 @@
 
 include "mlir/Pass/PassBase.td"
 
-def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
+def FoldTensorSubsetOpsPass : Pass<"fold-tensor-subset-ops"> {
   let summary = "Fold tensor subset ops into producer/consumer ops";
   let description = [{
     The pass folds tensor subset ops into producer/consumer ops.
@@ -21,7 +21,6 @@ def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
       - vector.transfer_write into tensor.insert_slice
 
   }];
-  let constructor = "mlir::tensor::createFoldTensorSubsetOpsPass()";
   let dependentDialects = [
       "affine::AffineDialect", "tensor::TensorDialect", "vector::VectorDialect"
   ];
diff --git a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
index dabfffda390bb..bd1eac16070eb 100644
--- a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
@@ -18,7 +18,7 @@
 
 namespace mlir {
 namespace arith {
-#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENT
+#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENTPASS
 #include "mlir/Dialect/Arith/Transforms/Passes.h.inc"
 } // namespace arith
 } // namespace mlir
@@ -118,7 +118,7 @@ struct ConvertCmpIToUnsigned final : OpRewritePattern<CmpIOp> {
 };
 
 struct ArithUnsignedWhenEquivalentPass
-    : public arith::impl::ArithUnsignedWhenEquivalentBase<
+    : public arith::impl::ArithUnsignedWhenEquivalentPassBase<
           ArithUnsignedWhenEquivalentPass> {
 
   void runOnOperation() override {
@@ -151,7 +151,3 @@ void mlir::arith::populateUnsignedWhenEquivalentPatterns(
                ConvertOpToUnsigned<ExtSIOp, ExtUIOp>, ConvertCmpIToUnsigned>(
       patterns.getContext(), solver);
 }
-
-std::unique_ptr<Pass> mlir::arith::createArithUnsignedWhenEquivalentPass() {
-  return std::make_unique<ArithUnsignedWhenEquivalentPass>();
-}
diff --git a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
index fbb6abfd65b10..ea85c20cd1f8f 100644
--- a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
+++ b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
@@ -10,10 +10,12 @@
 #include "mlir/Dialect/Func/Transforms/Passes.h"
 
 namespace mlir {
-namespace {
-
+namespace func {
 #define GEN_PASS_DEF_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
+} // namespace func
+
+namespace {
 
 // Define a notion of function equivalence that allows for reuse. Ignore the
 // symbol name for this purpose.
@@ -80,7 +82,7 @@ struct DuplicateFuncOpEquivalenceInfo
 };
 
 struct DuplicateFunctionEliminationPass
-    : public impl::DuplicateFunctionEliminationPassBase<
+    : public func::impl::DuplicateFunctionEliminationPassBase<
           DuplicateFunctionEliminationPass> {
 
   using DuplicateFunctionEliminationPassBase<
@@ -115,9 +117,4 @@ struct DuplicateFunctionEliminationPass
 };
 
 } // namespace
-
-std::unique_ptr<Pass> mlir::func::createDuplicateFunctionEliminationPass() {
-  return std::make_unique<DuplicateFunctionEliminationPass>();
-}
-
 } // namespace mlir
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
index 1ac994fa5fb78..8dd0c28d98522 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
@@ -17,7 +17,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -77,14 +77,10 @@ void mlir::LLVM::ensureDistinctSuccessors(Operation *op) {
 
 namespace {
 struct LegalizeForExportPass
-    : public LLVM::impl::LLVMLegalizeForExportBase<LegalizeForExportPass> {
+    : public LLVM::impl::LLVMLegalizeForExportPassBase<LegalizeForExportPass> {
   void runOnOperation() override {
     LLVM::ensureDistinctSuccessors(getOperation());
     LLVM::legalizeDIExpressionsRecursively(getOperation());
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> LLVM::createLegalizeForExportPass() {
-  return std::make_unique<LegalizeForExportPass>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
index c1ec1df48e5b9..8db32ec1526c4 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
@@ -15,10 +15,10 @@
 #include "mlir/Transforms/GreedyPatternRewriteDriver.h"
 
 namespace mlir {
-namespace NVVM {
-#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGET
+namespace LLVM {
+#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-} // namespace NVVM
+} // namespace LLVM
 } // namespace mlir
 
 using namespace mlir;
@@ -40,7 +40,7 @@ struct ExpandDivF16 : public OpRewritePattern<LLVM::FDivOp> {
 };
 
 struct NVVMOptimizeForTarget
-    : public NVVM::impl::NVVMOptimizeForTargetBase<NVVMOptimizeForTarget> {
+    : public LLVM::impl::NVVMOptimizeForTargetPassBase<NVVMOptimizeForTarget> {
   void runOnOperation() override;
 
   void getDependentDialects(DialectRegistry &registry) const override {
@@ -99,7 +99,3 @@ void NVVMOptimizeForTarget::runOnOperation() {
   if (failed(applyPatternsGreedily(getOperation(), std::move(patterns))))
     return signalPassFailure();
 }
-
-std::unique_ptr<Pass> NVVM::createOptimizeForTargetPass() {
-  return std::make_unique<NVVMOptimizeForTarget>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
index 099d9c26e5580..a5fccbdc368fe 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
@@ -13,7 +13,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -22,7 +22,7 @@ using namespace mlir;
 
 namespace {
 class RequestCWrappersPass
-    : public LLVM::impl::LLVMRequestCWrappersBase<RequestCWrappersPass> {
+    : public LLVM::impl::LLVMRequestCWrappersPassBase<RequestCWrappersPass> {
 public:
   void runOnOperation() override {
     getOperation()->setAttr(LLVM::LLVMDialect::getEmitCWrapperAttrName(),
@@ -30,7 +30,3 @@ class RequestCWrappersPass
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> mlir::LLVM::createRequestCWrappersPass() {
-  return std::make_unique<RequestCWrappersPass>();
-}
diff --git a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
index 998b0fb6eb4b7..f7a58d8d71938 100644
--- a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
+++ b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
@@ -28,7 +28,7 @@
 
 namespace mlir {
 namespace tensor {
-#define GEN_PASS_DEF_FOLDTENSORSUBSETOPS
+#define GEN_PASS_DEF_FOLDTENSORSUBSETOPSPASS
 #include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 } // namespace tensor
 } // namespace mlir
@@ -268,7 +268,8 @@ void tensor::populateFoldTensorSubsetIntoVectorTransferPatterns(
 namespace {
 
 struct FoldTensorSubsetOpsPass final
-    : public tensor::impl::FoldTensorSubsetOpsBase<FoldTensorSubsetOpsPass> {
+    : public tensor::impl::FoldTensorSubsetOpsPassBase<
+          FoldTensorSubsetOpsPass> {
   void runOnOperation() override;
 };
 
@@ -279,7 +280,3 @@ void FoldTensorSubsetOpsPass::runOnOperation() {
   tensor::populateFoldTensorSubsetOpPatterns(patterns);
   (void)applyPatternsGreedily(getOperation(), std::move(patterns));
 }
-
-std::unique_ptr<Pass> tensor::createFoldTensorSubsetOpsPass() {
-  return std::make_unique<FoldTensorSubsetOpsPass>();
-}
diff --git a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
index 3b011d2b2b0ac..c3c871a539291 100644
--- a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
+++ b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
@@ -65,7 +65,8 @@ void buildTestVulkanRunnerPipeline(OpPassManager &passManager,
   passManager.addPass(createGpuModuleToBinaryPass());
 
   passManager.addPass(createFinalizeMemRefToLLVMConversionPass());
-  passManager.nest<func::FuncOp>().addPass(LLVM::createRequestCWrappersPass());
+  passManager.nest<func::FuncOp>().addPass(
+      LLVM::createLLVMRequestCWrappersPass());
   // VulkanRuntimeWrappers.cpp requires these calling convention options.
   GpuToLLVMConversionPassOptions opt;
   opt.hostBarePtrCallConv = false;

@llvmbot
Copy link
Member

llvmbot commented May 10, 2025

@llvm/pr-subscribers-mlir

Author: lorenzo chelini (chelini)

Changes

Three main changes:

  • The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass

  • createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why the NVVM namespace was used initially, as all passes in LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace.

  • DuplicateFunctionEliminationPass is now in the func namespace.


Full diff: https://github.com/llvm/llvm-project/pull/139390.diff

17 Files Affected:

  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.h (-4)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.td (+1-2)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.h (+1-4)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.td (-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h (+1-5)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h (+1-7)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td (+7-6)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h (+1-2)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h (+2-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td (+1-2)
  • (modified) mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp (+5-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp (+2-6)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp (+4-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp (+3-6)
  • (modified) mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp (+2-1)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
index 58dce89fdb578..8d81d8ec14ee7 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
@@ -62,10 +62,6 @@ void populateExpandBFloat16Patterns(RewritePatternSet &patterns);
 /// Add patterns to expand Arith ops.
 void populateArithExpandOpsPatterns(RewritePatternSet &patterns);
 
-/// Create a pass to replace signed ops with unsigned ones where they are proven
-/// equivalent.
-std::unique_ptr<Pass> createArithUnsignedWhenEquivalentPass();
-
 /// Add patterns for int range based optimizations.
 void populateIntRangeOptimizationsPatterns(RewritePatternSet &patterns,
                                            DataFlowSolver &solver);
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
index 1d37314885d93..d026d494cb50c 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
@@ -20,7 +20,7 @@ def ArithExpandOpsPass : Pass<"arith-expand"> {
   ];
 }
 
-def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
+def ArithUnsignedWhenEquivalentPass : Pass<"arith-unsigned-when-equivalent"> {
   let summary = "Replace signed ops with unsigned ones where they are proven equivalent";
   let description = [{
     Replace signed ops with their unsigned equivalents when integer range analysis
@@ -33,7 +33,6 @@ def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
     The affect ops include division, remainder, shifts, min, max, and integer
     comparisons.
   }];
-  let constructor = "mlir::arith::createArithUnsignedWhenEquivalentPass()";
 }
 
 def ArithIntRangeOpts : Pass<"int-range-optimizations"> {
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
index 0248f068320c5..6fe9cc4bb2986 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
@@ -22,12 +22,9 @@ class RewritePatternSet;
 
 namespace func {
 
-#define GEN_PASS_DECL
+#define GEN_PASS_DECL_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
 
-/// Pass to deduplicate functions.
-std::unique_ptr<Pass> createDuplicateFunctionEliminationPass();
-
 //===----------------------------------------------------------------------===//
 // Registration
 //===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
index c3caf120d052e..4163997515bb0 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
@@ -19,7 +19,6 @@ def DuplicateFunctionEliminationPass : Pass<"duplicate-function-elimination",
     name. The pass chooses one representative per equivalence class, erases
     the remainder, and updates function calls accordingly.
   }];
-  let constructor = "mlir::func::createDuplicateFunctionEliminationPass()";
 }
 
 #endif // MLIR_DIALECT_FUNC_TRANSFORMS_PASSES_TD
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
index 09f62e1190f29..9b3754f582038 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
@@ -17,7 +17,7 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
 /// Make argument-taking successors of each block distinct.  PHI nodes in LLVM
@@ -27,10 +27,6 @@ namespace LLVM {
 /// a new dummy block for LLVM PHI nodes to tell the sources apart.
 void ensureDistinctSuccessors(Operation *op);
 
-/// Creates a pass that legalizes the LLVM dialect operations so that they can
-/// be translated to LLVM IR.
-std::unique_ptr<Pass> createLegalizeForExportPass();
-
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
index 261d2a2389c16..efc8a66234460 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
@@ -13,15 +13,9 @@
 
 namespace mlir {
 class Pass;
-
 namespace NVVM {
-
-#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGET
+#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-
-/// Creates a pass that optimizes LLVM IR for the NVVM target.
-std::unique_ptr<Pass> createOptimizeForTargetPass();
-
 } // namespace NVVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
index b2a03ce61e7e4..961909d5c8d27 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
@@ -24,13 +24,16 @@ def LLVMAddComdats : Pass<"llvm-add-comdats", "::mlir::ModuleOp"> {
   }];
 }
 
-def LLVMLegalizeForExport : Pass<"llvm-legalize-for-export"> {
+def LLVMLegalizeForExportPass : Pass<"llvm-legalize-for-export"> {
   let summary = "Legalize LLVM dialect to be convertible to LLVM IR";
-  let constructor = "::mlir::LLVM::createLegalizeForExportPass()";
+  let description = [{
+    Creates a pass that legalizes the LLVM dialect operations so that they can
+    be translated to LLVM IR.
+  }];
   let dependentDialects = ["LLVM::LLVMDialect"];
 }
 
-def LLVMRequestCWrappers
+def LLVMRequestCWrappersPass
     : Pass<"llvm-request-c-wrappers", "::mlir::func::FuncOp"> {
   let summary = "Request C wrapper emission for all functions";
   let description = [{
@@ -40,12 +43,10 @@ def LLVMRequestCWrappers
     conversion of builtin functions to LLVM to avoid the attribute being
     dropped by other passes.
   }];
-  let constructor = "::mlir::LLVM::createRequestCWrappersPass()";
 }
 
-def NVVMOptimizeForTarget : Pass<"llvm-optimize-for-nvvm-target"> {
+def NVVMOptimizeForTargetPass : Pass<"llvm-optimize-for-nvvm-target"> {
   let summary = "Optimize NVVM IR";
-  let constructor = "::mlir::NVVM::createOptimizeForTargetPass()";
 }
 
 def DIScopeForLLVMFuncOpPass : Pass<"ensure-debug-info-scope-on-llvm-func", "::mlir::ModuleOp"> {
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
index c6fd2642e307d..0becb4d6b785c 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
@@ -16,10 +16,9 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
-std::unique_ptr<Pass> createRequestCWrappersPass();
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
index 964c35b3f15b8..03cb30bc07357 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
@@ -19,7 +19,8 @@ namespace tensor {
 //===----------------------------------------------------------------------===//
 
 /// Creates an instance of the `tensor` subset folding pass.
-std::unique_ptr<Pass> createFoldTensorSubsetOpsPass();
+#define GEN_PASS_DECL_FOLDTENSORSUBSETOPSPASS
+#include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 
 //===----------------------------------------------------------------------===//
 // Registration
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
index be4c333836ec0..62f467f2513ac 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
@@ -11,7 +11,7 @@
 
 include "mlir/Pass/PassBase.td"
 
-def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
+def FoldTensorSubsetOpsPass : Pass<"fold-tensor-subset-ops"> {
   let summary = "Fold tensor subset ops into producer/consumer ops";
   let description = [{
     The pass folds tensor subset ops into producer/consumer ops.
@@ -21,7 +21,6 @@ def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
       - vector.transfer_write into tensor.insert_slice
 
   }];
-  let constructor = "mlir::tensor::createFoldTensorSubsetOpsPass()";
   let dependentDialects = [
       "affine::AffineDialect", "tensor::TensorDialect", "vector::VectorDialect"
   ];
diff --git a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
index dabfffda390bb..bd1eac16070eb 100644
--- a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
@@ -18,7 +18,7 @@
 
 namespace mlir {
 namespace arith {
-#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENT
+#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENTPASS
 #include "mlir/Dialect/Arith/Transforms/Passes.h.inc"
 } // namespace arith
 } // namespace mlir
@@ -118,7 +118,7 @@ struct ConvertCmpIToUnsigned final : OpRewritePattern<CmpIOp> {
 };
 
 struct ArithUnsignedWhenEquivalentPass
-    : public arith::impl::ArithUnsignedWhenEquivalentBase<
+    : public arith::impl::ArithUnsignedWhenEquivalentPassBase<
           ArithUnsignedWhenEquivalentPass> {
 
   void runOnOperation() override {
@@ -151,7 +151,3 @@ void mlir::arith::populateUnsignedWhenEquivalentPatterns(
                ConvertOpToUnsigned<ExtSIOp, ExtUIOp>, ConvertCmpIToUnsigned>(
       patterns.getContext(), solver);
 }
-
-std::unique_ptr<Pass> mlir::arith::createArithUnsignedWhenEquivalentPass() {
-  return std::make_unique<ArithUnsignedWhenEquivalentPass>();
-}
diff --git a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
index fbb6abfd65b10..ea85c20cd1f8f 100644
--- a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
+++ b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
@@ -10,10 +10,12 @@
 #include "mlir/Dialect/Func/Transforms/Passes.h"
 
 namespace mlir {
-namespace {
-
+namespace func {
 #define GEN_PASS_DEF_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
+} // namespace func
+
+namespace {
 
 // Define a notion of function equivalence that allows for reuse. Ignore the
 // symbol name for this purpose.
@@ -80,7 +82,7 @@ struct DuplicateFuncOpEquivalenceInfo
 };
 
 struct DuplicateFunctionEliminationPass
-    : public impl::DuplicateFunctionEliminationPassBase<
+    : public func::impl::DuplicateFunctionEliminationPassBase<
           DuplicateFunctionEliminationPass> {
 
   using DuplicateFunctionEliminationPassBase<
@@ -115,9 +117,4 @@ struct DuplicateFunctionEliminationPass
 };
 
 } // namespace
-
-std::unique_ptr<Pass> mlir::func::createDuplicateFunctionEliminationPass() {
-  return std::make_unique<DuplicateFunctionEliminationPass>();
-}
-
 } // namespace mlir
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
index 1ac994fa5fb78..8dd0c28d98522 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
@@ -17,7 +17,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -77,14 +77,10 @@ void mlir::LLVM::ensureDistinctSuccessors(Operation *op) {
 
 namespace {
 struct LegalizeForExportPass
-    : public LLVM::impl::LLVMLegalizeForExportBase<LegalizeForExportPass> {
+    : public LLVM::impl::LLVMLegalizeForExportPassBase<LegalizeForExportPass> {
   void runOnOperation() override {
     LLVM::ensureDistinctSuccessors(getOperation());
     LLVM::legalizeDIExpressionsRecursively(getOperation());
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> LLVM::createLegalizeForExportPass() {
-  return std::make_unique<LegalizeForExportPass>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
index c1ec1df48e5b9..8db32ec1526c4 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
@@ -15,10 +15,10 @@
 #include "mlir/Transforms/GreedyPatternRewriteDriver.h"
 
 namespace mlir {
-namespace NVVM {
-#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGET
+namespace LLVM {
+#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-} // namespace NVVM
+} // namespace LLVM
 } // namespace mlir
 
 using namespace mlir;
@@ -40,7 +40,7 @@ struct ExpandDivF16 : public OpRewritePattern<LLVM::FDivOp> {
 };
 
 struct NVVMOptimizeForTarget
-    : public NVVM::impl::NVVMOptimizeForTargetBase<NVVMOptimizeForTarget> {
+    : public LLVM::impl::NVVMOptimizeForTargetPassBase<NVVMOptimizeForTarget> {
   void runOnOperation() override;
 
   void getDependentDialects(DialectRegistry &registry) const override {
@@ -99,7 +99,3 @@ void NVVMOptimizeForTarget::runOnOperation() {
   if (failed(applyPatternsGreedily(getOperation(), std::move(patterns))))
     return signalPassFailure();
 }
-
-std::unique_ptr<Pass> NVVM::createOptimizeForTargetPass() {
-  return std::make_unique<NVVMOptimizeForTarget>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
index 099d9c26e5580..a5fccbdc368fe 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
@@ -13,7 +13,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -22,7 +22,7 @@ using namespace mlir;
 
 namespace {
 class RequestCWrappersPass
-    : public LLVM::impl::LLVMRequestCWrappersBase<RequestCWrappersPass> {
+    : public LLVM::impl::LLVMRequestCWrappersPassBase<RequestCWrappersPass> {
 public:
   void runOnOperation() override {
     getOperation()->setAttr(LLVM::LLVMDialect::getEmitCWrapperAttrName(),
@@ -30,7 +30,3 @@ class RequestCWrappersPass
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> mlir::LLVM::createRequestCWrappersPass() {
-  return std::make_unique<RequestCWrappersPass>();
-}
diff --git a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
index 998b0fb6eb4b7..f7a58d8d71938 100644
--- a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
+++ b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
@@ -28,7 +28,7 @@
 
 namespace mlir {
 namespace tensor {
-#define GEN_PASS_DEF_FOLDTENSORSUBSETOPS
+#define GEN_PASS_DEF_FOLDTENSORSUBSETOPSPASS
 #include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 } // namespace tensor
 } // namespace mlir
@@ -268,7 +268,8 @@ void tensor::populateFoldTensorSubsetIntoVectorTransferPatterns(
 namespace {
 
 struct FoldTensorSubsetOpsPass final
-    : public tensor::impl::FoldTensorSubsetOpsBase<FoldTensorSubsetOpsPass> {
+    : public tensor::impl::FoldTensorSubsetOpsPassBase<
+          FoldTensorSubsetOpsPass> {
   void runOnOperation() override;
 };
 
@@ -279,7 +280,3 @@ void FoldTensorSubsetOpsPass::runOnOperation() {
   tensor::populateFoldTensorSubsetOpPatterns(patterns);
   (void)applyPatternsGreedily(getOperation(), std::move(patterns));
 }
-
-std::unique_ptr<Pass> tensor::createFoldTensorSubsetOpsPass() {
-  return std::make_unique<FoldTensorSubsetOpsPass>();
-}
diff --git a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
index 3b011d2b2b0ac..c3c871a539291 100644
--- a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
+++ b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
@@ -65,7 +65,8 @@ void buildTestVulkanRunnerPipeline(OpPassManager &passManager,
   passManager.addPass(createGpuModuleToBinaryPass());
 
   passManager.addPass(createFinalizeMemRefToLLVMConversionPass());
-  passManager.nest<func::FuncOp>().addPass(LLVM::createRequestCWrappersPass());
+  passManager.nest<func::FuncOp>().addPass(
+      LLVM::createLLVMRequestCWrappersPass());
   // VulkanRuntimeWrappers.cpp requires these calling convention options.
   GpuToLLVMConversionPassOptions opt;
   opt.hostBarePtrCallConv = false;

@llvmbot
Copy link
Member

llvmbot commented May 10, 2025

@llvm/pr-subscribers-mlir-arith

Author: lorenzo chelini (chelini)

Changes

Three main changes:

  • The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass

  • createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why the NVVM namespace was used initially, as all passes in LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace.

  • DuplicateFunctionEliminationPass is now in the func namespace.


Full diff: https://github.com/llvm/llvm-project/pull/139390.diff

17 Files Affected:

  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.h (-4)
  • (modified) mlir/include/mlir/Dialect/Arith/Transforms/Passes.td (+1-2)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.h (+1-4)
  • (modified) mlir/include/mlir/Dialect/Func/Transforms/Passes.td (-1)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h (+1-5)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h (+1-7)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td (+7-6)
  • (modified) mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h (+1-2)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h (+2-1)
  • (modified) mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td (+1-2)
  • (modified) mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp (+5-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp (+2-6)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp (+4-8)
  • (modified) mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp (+2-6)
  • (modified) mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp (+3-6)
  • (modified) mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp (+2-1)
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
index 58dce89fdb578..8d81d8ec14ee7 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.h
@@ -62,10 +62,6 @@ void populateExpandBFloat16Patterns(RewritePatternSet &patterns);
 /// Add patterns to expand Arith ops.
 void populateArithExpandOpsPatterns(RewritePatternSet &patterns);
 
-/// Create a pass to replace signed ops with unsigned ones where they are proven
-/// equivalent.
-std::unique_ptr<Pass> createArithUnsignedWhenEquivalentPass();
-
 /// Add patterns for int range based optimizations.
 void populateIntRangeOptimizationsPatterns(RewritePatternSet &patterns,
                                            DataFlowSolver &solver);
diff --git a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
index 1d37314885d93..d026d494cb50c 100644
--- a/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Arith/Transforms/Passes.td
@@ -20,7 +20,7 @@ def ArithExpandOpsPass : Pass<"arith-expand"> {
   ];
 }
 
-def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
+def ArithUnsignedWhenEquivalentPass : Pass<"arith-unsigned-when-equivalent"> {
   let summary = "Replace signed ops with unsigned ones where they are proven equivalent";
   let description = [{
     Replace signed ops with their unsigned equivalents when integer range analysis
@@ -33,7 +33,6 @@ def ArithUnsignedWhenEquivalent : Pass<"arith-unsigned-when-equivalent"> {
     The affect ops include division, remainder, shifts, min, max, and integer
     comparisons.
   }];
-  let constructor = "mlir::arith::createArithUnsignedWhenEquivalentPass()";
 }
 
 def ArithIntRangeOpts : Pass<"int-range-optimizations"> {
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
index 0248f068320c5..6fe9cc4bb2986 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.h
@@ -22,12 +22,9 @@ class RewritePatternSet;
 
 namespace func {
 
-#define GEN_PASS_DECL
+#define GEN_PASS_DECL_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
 
-/// Pass to deduplicate functions.
-std::unique_ptr<Pass> createDuplicateFunctionEliminationPass();
-
 //===----------------------------------------------------------------------===//
 // Registration
 //===----------------------------------------------------------------------===//
diff --git a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
index c3caf120d052e..4163997515bb0 100644
--- a/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Func/Transforms/Passes.td
@@ -19,7 +19,6 @@ def DuplicateFunctionEliminationPass : Pass<"duplicate-function-elimination",
     name. The pass chooses one representative per equivalence class, erases
     the remainder, and updates function calls accordingly.
   }];
-  let constructor = "mlir::func::createDuplicateFunctionEliminationPass()";
 }
 
 #endif // MLIR_DIALECT_FUNC_TRANSFORMS_PASSES_TD
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
index 09f62e1190f29..9b3754f582038 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/LegalizeForExport.h
@@ -17,7 +17,7 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DECL_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
 /// Make argument-taking successors of each block distinct.  PHI nodes in LLVM
@@ -27,10 +27,6 @@ namespace LLVM {
 /// a new dummy block for LLVM PHI nodes to tell the sources apart.
 void ensureDistinctSuccessors(Operation *op);
 
-/// Creates a pass that legalizes the LLVM dialect operations so that they can
-/// be translated to LLVM IR.
-std::unique_ptr<Pass> createLegalizeForExportPass();
-
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
index 261d2a2389c16..efc8a66234460 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/OptimizeForNVVM.h
@@ -13,15 +13,9 @@
 
 namespace mlir {
 class Pass;
-
 namespace NVVM {
-
-#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGET
+#define GEN_PASS_DECL_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-
-/// Creates a pass that optimizes LLVM IR for the NVVM target.
-std::unique_ptr<Pass> createOptimizeForTargetPass();
-
 } // namespace NVVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
index b2a03ce61e7e4..961909d5c8d27 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/Passes.td
@@ -24,13 +24,16 @@ def LLVMAddComdats : Pass<"llvm-add-comdats", "::mlir::ModuleOp"> {
   }];
 }
 
-def LLVMLegalizeForExport : Pass<"llvm-legalize-for-export"> {
+def LLVMLegalizeForExportPass : Pass<"llvm-legalize-for-export"> {
   let summary = "Legalize LLVM dialect to be convertible to LLVM IR";
-  let constructor = "::mlir::LLVM::createLegalizeForExportPass()";
+  let description = [{
+    Creates a pass that legalizes the LLVM dialect operations so that they can
+    be translated to LLVM IR.
+  }];
   let dependentDialects = ["LLVM::LLVMDialect"];
 }
 
-def LLVMRequestCWrappers
+def LLVMRequestCWrappersPass
     : Pass<"llvm-request-c-wrappers", "::mlir::func::FuncOp"> {
   let summary = "Request C wrapper emission for all functions";
   let description = [{
@@ -40,12 +43,10 @@ def LLVMRequestCWrappers
     conversion of builtin functions to LLVM to avoid the attribute being
     dropped by other passes.
   }];
-  let constructor = "::mlir::LLVM::createRequestCWrappersPass()";
 }
 
-def NVVMOptimizeForTarget : Pass<"llvm-optimize-for-nvvm-target"> {
+def NVVMOptimizeForTargetPass : Pass<"llvm-optimize-for-nvvm-target"> {
   let summary = "Optimize NVVM IR";
-  let constructor = "::mlir::NVVM::createOptimizeForTargetPass()";
 }
 
 def DIScopeForLLVMFuncOpPass : Pass<"ensure-debug-info-scope-on-llvm-func", "::mlir::ModuleOp"> {
diff --git a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
index c6fd2642e307d..0becb4d6b785c 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
+++ b/mlir/include/mlir/Dialect/LLVMIR/Transforms/RequestCWrappers.h
@@ -16,10 +16,9 @@ class Pass;
 
 namespace LLVM {
 
-#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DECL_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 
-std::unique_ptr<Pass> createRequestCWrappersPass();
 } // namespace LLVM
 } // namespace mlir
 
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
index 964c35b3f15b8..03cb30bc07357 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.h
@@ -19,7 +19,8 @@ namespace tensor {
 //===----------------------------------------------------------------------===//
 
 /// Creates an instance of the `tensor` subset folding pass.
-std::unique_ptr<Pass> createFoldTensorSubsetOpsPass();
+#define GEN_PASS_DECL_FOLDTENSORSUBSETOPSPASS
+#include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 
 //===----------------------------------------------------------------------===//
 // Registration
diff --git a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
index be4c333836ec0..62f467f2513ac 100644
--- a/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
+++ b/mlir/include/mlir/Dialect/Tensor/Transforms/Passes.td
@@ -11,7 +11,7 @@
 
 include "mlir/Pass/PassBase.td"
 
-def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
+def FoldTensorSubsetOpsPass : Pass<"fold-tensor-subset-ops"> {
   let summary = "Fold tensor subset ops into producer/consumer ops";
   let description = [{
     The pass folds tensor subset ops into producer/consumer ops.
@@ -21,7 +21,6 @@ def FoldTensorSubsetOps : Pass<"fold-tensor-subset-ops"> {
       - vector.transfer_write into tensor.insert_slice
 
   }];
-  let constructor = "mlir::tensor::createFoldTensorSubsetOpsPass()";
   let dependentDialects = [
       "affine::AffineDialect", "tensor::TensorDialect", "vector::VectorDialect"
   ];
diff --git a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
index dabfffda390bb..bd1eac16070eb 100644
--- a/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
+++ b/mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
@@ -18,7 +18,7 @@
 
 namespace mlir {
 namespace arith {
-#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENT
+#define GEN_PASS_DEF_ARITHUNSIGNEDWHENEQUIVALENTPASS
 #include "mlir/Dialect/Arith/Transforms/Passes.h.inc"
 } // namespace arith
 } // namespace mlir
@@ -118,7 +118,7 @@ struct ConvertCmpIToUnsigned final : OpRewritePattern<CmpIOp> {
 };
 
 struct ArithUnsignedWhenEquivalentPass
-    : public arith::impl::ArithUnsignedWhenEquivalentBase<
+    : public arith::impl::ArithUnsignedWhenEquivalentPassBase<
           ArithUnsignedWhenEquivalentPass> {
 
   void runOnOperation() override {
@@ -151,7 +151,3 @@ void mlir::arith::populateUnsignedWhenEquivalentPatterns(
                ConvertOpToUnsigned<ExtSIOp, ExtUIOp>, ConvertCmpIToUnsigned>(
       patterns.getContext(), solver);
 }
-
-std::unique_ptr<Pass> mlir::arith::createArithUnsignedWhenEquivalentPass() {
-  return std::make_unique<ArithUnsignedWhenEquivalentPass>();
-}
diff --git a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
index fbb6abfd65b10..ea85c20cd1f8f 100644
--- a/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
+++ b/mlir/lib/Dialect/Func/Transforms/DuplicateFunctionElimination.cpp
@@ -10,10 +10,12 @@
 #include "mlir/Dialect/Func/Transforms/Passes.h"
 
 namespace mlir {
-namespace {
-
+namespace func {
 #define GEN_PASS_DEF_DUPLICATEFUNCTIONELIMINATIONPASS
 #include "mlir/Dialect/Func/Transforms/Passes.h.inc"
+} // namespace func
+
+namespace {
 
 // Define a notion of function equivalence that allows for reuse. Ignore the
 // symbol name for this purpose.
@@ -80,7 +82,7 @@ struct DuplicateFuncOpEquivalenceInfo
 };
 
 struct DuplicateFunctionEliminationPass
-    : public impl::DuplicateFunctionEliminationPassBase<
+    : public func::impl::DuplicateFunctionEliminationPassBase<
           DuplicateFunctionEliminationPass> {
 
   using DuplicateFunctionEliminationPassBase<
@@ -115,9 +117,4 @@ struct DuplicateFunctionEliminationPass
 };
 
 } // namespace
-
-std::unique_ptr<Pass> mlir::func::createDuplicateFunctionEliminationPass() {
-  return std::make_unique<DuplicateFunctionEliminationPass>();
-}
-
 } // namespace mlir
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
index 1ac994fa5fb78..8dd0c28d98522 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/LegalizeForExport.cpp
@@ -17,7 +17,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORT
+#define GEN_PASS_DEF_LLVMLEGALIZEFOREXPORTPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -77,14 +77,10 @@ void mlir::LLVM::ensureDistinctSuccessors(Operation *op) {
 
 namespace {
 struct LegalizeForExportPass
-    : public LLVM::impl::LLVMLegalizeForExportBase<LegalizeForExportPass> {
+    : public LLVM::impl::LLVMLegalizeForExportPassBase<LegalizeForExportPass> {
   void runOnOperation() override {
     LLVM::ensureDistinctSuccessors(getOperation());
     LLVM::legalizeDIExpressionsRecursively(getOperation());
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> LLVM::createLegalizeForExportPass() {
-  return std::make_unique<LegalizeForExportPass>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
index c1ec1df48e5b9..8db32ec1526c4 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/OptimizeForNVVM.cpp
@@ -15,10 +15,10 @@
 #include "mlir/Transforms/GreedyPatternRewriteDriver.h"
 
 namespace mlir {
-namespace NVVM {
-#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGET
+namespace LLVM {
+#define GEN_PASS_DEF_NVVMOPTIMIZEFORTARGETPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
-} // namespace NVVM
+} // namespace LLVM
 } // namespace mlir
 
 using namespace mlir;
@@ -40,7 +40,7 @@ struct ExpandDivF16 : public OpRewritePattern<LLVM::FDivOp> {
 };
 
 struct NVVMOptimizeForTarget
-    : public NVVM::impl::NVVMOptimizeForTargetBase<NVVMOptimizeForTarget> {
+    : public LLVM::impl::NVVMOptimizeForTargetPassBase<NVVMOptimizeForTarget> {
   void runOnOperation() override;
 
   void getDependentDialects(DialectRegistry &registry) const override {
@@ -99,7 +99,3 @@ void NVVMOptimizeForTarget::runOnOperation() {
   if (failed(applyPatternsGreedily(getOperation(), std::move(patterns))))
     return signalPassFailure();
 }
-
-std::unique_ptr<Pass> NVVM::createOptimizeForTargetPass() {
-  return std::make_unique<NVVMOptimizeForTarget>();
-}
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
index 099d9c26e5580..a5fccbdc368fe 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/RequestCWrappers.cpp
@@ -13,7 +13,7 @@
 
 namespace mlir {
 namespace LLVM {
-#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERS
+#define GEN_PASS_DEF_LLVMREQUESTCWRAPPERSPASS
 #include "mlir/Dialect/LLVMIR/Transforms/Passes.h.inc"
 } // namespace LLVM
 } // namespace mlir
@@ -22,7 +22,7 @@ using namespace mlir;
 
 namespace {
 class RequestCWrappersPass
-    : public LLVM::impl::LLVMRequestCWrappersBase<RequestCWrappersPass> {
+    : public LLVM::impl::LLVMRequestCWrappersPassBase<RequestCWrappersPass> {
 public:
   void runOnOperation() override {
     getOperation()->setAttr(LLVM::LLVMDialect::getEmitCWrapperAttrName(),
@@ -30,7 +30,3 @@ class RequestCWrappersPass
   }
 };
 } // namespace
-
-std::unique_ptr<Pass> mlir::LLVM::createRequestCWrappersPass() {
-  return std::make_unique<RequestCWrappersPass>();
-}
diff --git a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
index 998b0fb6eb4b7..f7a58d8d71938 100644
--- a/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
+++ b/mlir/lib/Dialect/Tensor/Transforms/FoldTensorSubsetOps.cpp
@@ -28,7 +28,7 @@
 
 namespace mlir {
 namespace tensor {
-#define GEN_PASS_DEF_FOLDTENSORSUBSETOPS
+#define GEN_PASS_DEF_FOLDTENSORSUBSETOPSPASS
 #include "mlir/Dialect/Tensor/Transforms/Passes.h.inc"
 } // namespace tensor
 } // namespace mlir
@@ -268,7 +268,8 @@ void tensor::populateFoldTensorSubsetIntoVectorTransferPatterns(
 namespace {
 
 struct FoldTensorSubsetOpsPass final
-    : public tensor::impl::FoldTensorSubsetOpsBase<FoldTensorSubsetOpsPass> {
+    : public tensor::impl::FoldTensorSubsetOpsPassBase<
+          FoldTensorSubsetOpsPass> {
   void runOnOperation() override;
 };
 
@@ -279,7 +280,3 @@ void FoldTensorSubsetOpsPass::runOnOperation() {
   tensor::populateFoldTensorSubsetOpPatterns(patterns);
   (void)applyPatternsGreedily(getOperation(), std::move(patterns));
 }
-
-std::unique_ptr<Pass> tensor::createFoldTensorSubsetOpsPass() {
-  return std::make_unique<FoldTensorSubsetOpsPass>();
-}
diff --git a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
index 3b011d2b2b0ac..c3c871a539291 100644
--- a/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
+++ b/mlir/test/lib/Pass/TestVulkanRunnerPipeline.cpp
@@ -65,7 +65,8 @@ void buildTestVulkanRunnerPipeline(OpPassManager &passManager,
   passManager.addPass(createGpuModuleToBinaryPass());
 
   passManager.addPass(createFinalizeMemRefToLLVMConversionPass());
-  passManager.nest<func::FuncOp>().addPass(LLVM::createRequestCWrappersPass());
+  passManager.nest<func::FuncOp>().addPass(
+      LLVM::createLLVMRequestCWrappersPass());
   // VulkanRuntimeWrappers.cpp requires these calling convention options.
   GpuToLLVMConversionPassOptions opt;
   opt.hostBarePtrCallConv = false;

@chelini chelini marked this pull request as draft May 10, 2025 16:46
Three main changes:

- The pass createRequestCWrappersPass is renamed as createLLVMRequestCWrappersPass

- createOptimizeForTargetPass is now under the LLVM namespace. It’s unclear why
the NVVM namespace was used initially, as all passes in
LLVMIR/Transforms/Passes.h consistently reside in the LLVM namespace.

- DuplicateFunctionEliminationPass is now in the func namespace.
@chelini chelini force-pushed the lchelini/more-let-constructors branch from 11053c3 to 5aa0bd8 Compare May 10, 2025 16:47
@chelini chelini marked this pull request as ready for review May 10, 2025 16:50
Copy link
Contributor

@Dinistro Dinistro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the cleanup. LGTM!

@chelini chelini merged commit 61536f2 into llvm:main May 13, 2025
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.