From 8cf2c786cf7b931d31d085393b2c362025155aa7 Mon Sep 17 00:00:00 2001 From: lorenzo chelini Date: Sun, 16 Feb 2025 11:29:55 +0100 Subject: [PATCH 1/3] [MLIR] Retire `let constructor` for passes in Conversion directory (part1) `let constructor` is deprecated since the table gen backend emits most of the glue logic to build a pass. This PR retires the td method for most (I need another pass) passes in the Conversion directory. --- .../Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h | 4 +- .../AffineToStandard/AffineToStandard.h | 2 +- .../Conversion/ArithToSPIRV/ArithToSPIRV.h | 2 +- .../ArmNeon2dToIntr/ArmNeon2dToIntr.h | 7 +- .../mlir/Conversion/ArmSMEToSCF/ArmSMEToSCF.h | 5 +- .../BufferizationToMemRef.h | 3 +- .../Conversion/ComplexToLibm/ComplexToLibm.h | 4 +- .../ComplexToStandard/ComplexToStandard.h | 7 +- .../ControlFlowToSPIRVPass.h | 5 +- .../Conversion/ConvertToLLVM/ToLLVMPass.h | 8 +- .../Conversion/FuncToSPIRV/FuncToSPIRVPass.h | 5 +- .../LinalgToStandard/LinalgToStandard.h | 7 +- .../mlir/Conversion/MathToLibm/MathToLibm.h | 6 +- .../Conversion/MathToSPIRV/MathToSPIRVPass.h | 5 +- .../MemRefToSPIRV/MemRefToSPIRVPass.h | 5 +- .../mlir/Conversion/MeshToMPI/MeshToMPI.h | 4 - .../OpenACCToSCF/ConvertOpenACCToSCF.h | 6 +- .../PDLToPDLInterp/PDLToPDLInterp.h | 8 +- mlir/include/mlir/Conversion/Passes.td | 123 +++++++----------- .../ReconcileUnrealizedCasts.h | 5 +- .../SCFToControlFlow/SCFToControlFlow.h | 6 +- .../mlir/Conversion/SCFToGPU/SCFToGPUPass.h | 23 +--- .../ShapeToStandard/ShapeToStandard.h | 8 +- .../TensorToLinalg/TensorToLinalgPass.h | 5 +- .../TensorToSPIRV/TensorToSPIRVPass.h | 5 +- .../mlir/Conversion/TosaToArith/TosaToArith.h | 5 +- .../mlir/Conversion/TosaToSCF/TosaToSCF.h | 4 +- .../Conversion/TosaToTensor/TosaToTensor.h | 4 +- .../VectorToArmSME/VectorToArmSME.h | 5 +- .../VectorToSPIRV/VectorToSPIRVPass.h | 5 +- .../AMDGPUToROCDL/AMDGPUToROCDL.cpp | 10 +- .../AffineToStandard/AffineToStandard.cpp | 11 +- .../Conversion/ArithToSPIRV/ArithToSPIRV.cpp | 10 +- .../ArmNeon2dToIntr/ArmNeon2dToIntr.cpp | 8 +- .../Conversion/ArmSMEToSCF/ArmSMEToSCF.cpp | 8 +- .../BufferizationToMemRef.cpp | 9 +- .../ComplexToLibm/ComplexToLibm.cpp | 5 - .../ComplexToStandard/ComplexToStandard.cpp | 19 +-- .../ControlFlowToSPIRVPass.cpp | 9 +- .../ConvertToLLVM/ConvertToLLVMPass.cpp | 4 - .../FuncToSPIRV/FuncToSPIRVPass.cpp | 9 +- .../LinalgToStandard/LinalgToStandard.cpp | 10 +- mlir/lib/Conversion/MathToLibm/MathToLibm.cpp | 8 +- .../MathToSPIRV/MathToSPIRVPass.cpp | 9 +- .../MemRefToSPIRV/MemRefToSPIRVPass.cpp | 9 +- mlir/lib/Conversion/MeshToMPI/MeshToMPI.cpp | 5 - .../Conversion/OpenACCToSCF/OpenACCToSCF.cpp | 8 +- .../PDLToPDLInterp/PDLToPDLInterp.cpp | 9 +- .../ReconcileUnrealizedCasts.cpp | 8 +- .../SCFToControlFlow/SCFToControlFlow.cpp | 8 +- mlir/lib/Conversion/SCFToGPU/SCFToGPUPass.cpp | 28 +--- .../ConvertShapeConstraints.cpp | 8 +- .../ShapeToStandard/ShapeToStandard.cpp | 9 +- .../TensorToLinalg/TensorToLinalgPass.cpp | 9 +- .../TensorToSPIRV/TensorToSPIRVPass.cpp | 10 +- .../TosaToArith/TosaToArithPass.cpp | 13 +- .../Conversion/TosaToSCF/TosaToSCFPass.cpp | 10 +- .../TosaToTensor/TosaToTensorPass.cpp | 8 +- .../VectorToArmSME/VectorToArmSMEPass.cpp | 8 +- .../VectorToSPIRV/VectorToSPIRVPass.cpp | 8 +- .../VectorToXeGPU/VectorToXeGPU.cpp | 4 - .../GPU/Pipelines/GPUToNVVMPipeline.cpp | 4 +- .../Pipelines/SparseTensorPipelines.cpp | 8 +- mlir/lib/Rewrite/FrozenRewritePatternSet.cpp | 2 +- .../lib/Dialect/ArmSME/TestLowerToArmSME.cpp | 2 +- .../test/lib/Dialect/LLVM/TestLowerToLLVM.cpp | 6 +- 66 files changed, 167 insertions(+), 437 deletions(-) diff --git a/mlir/include/mlir/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h b/mlir/include/mlir/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h index e7637a6013e68..cc32e97084830 100644 --- a/mlir/include/mlir/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h +++ b/mlir/include/mlir/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h @@ -18,7 +18,7 @@ class LLVMTypeConverter; class RewritePatternSet; class Pass; -#define GEN_PASS_DECL_CONVERTAMDGPUTOROCDL +#define GEN_PASS_DECL_CONVERTAMDGPUTOROCDLPASS #include "mlir/Conversion/Passes.h.inc" /// Note: The ROCDL target does not support the LLVM bfloat type at this time @@ -28,8 +28,6 @@ void populateAMDGPUToROCDLConversionPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns, amdgpu::Chipset chipset); -std::unique_ptr createConvertAMDGPUToROCDLPass(); - } // namespace mlir #endif // MLIR_CONVERSION_AMDGPUTOROCDL_AMDGPUTOROCDL_H_ diff --git a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h index 96ee4f0255d9a..893c2455fa587 100644 --- a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h +++ b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h @@ -24,7 +24,7 @@ namespace affine { class AffineForOp; } // namespace affine -#define GEN_PASS_DECL_CONVERTAFFINETOSTANDARD +#define GEN_PASS_DECL_LOWERAFFINE #include "mlir/Conversion/Passes.h.inc" /// Collect a set of patterns to convert from the Affine dialect to the Standard diff --git a/mlir/include/mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h b/mlir/include/mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h index a15e56bfdf04b..1a6ba1cf0db08 100644 --- a/mlir/include/mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h +++ b/mlir/include/mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h @@ -18,7 +18,7 @@ class SPIRVTypeConverter; class RewritePatternSet; class Pass; -#define GEN_PASS_DECL_CONVERTARITHTOSPIRV +#define GEN_PASS_DECL_CONVERTARITHTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" namespace arith { diff --git a/mlir/include/mlir/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.h b/mlir/include/mlir/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.h index 7ab2b8674315f..860880bcd4a4c 100644 --- a/mlir/include/mlir/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.h +++ b/mlir/include/mlir/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.h @@ -15,18 +15,13 @@ namespace mlir { class Pass; class RewritePatternSet; -#define GEN_PASS_DECL_CONVERTARMNEON2DTOINTR +#define GEN_PASS_DECL_CONVERTARMNEON2DTOINTRPASS #include "mlir/Conversion/Passes.h.inc" /// Populates patterns for the lowering of Arm NEON 2D ops to intrinsics. /// See createConvertArmNeon2dToIntrPass. void populateConvertArmNeon2dToIntrPatterns(RewritePatternSet &patterns); -/// Creates a pass to lower Arm NEON 2D ops to intrinsics, i.e. -/// equivalent ops operating on flattened 1D vectors and mapping more -/// directly to the corresponding Arm NEON instruction. -std::unique_ptr createConvertArmNeon2dToIntrPass(); - } // namespace mlir #endif // MLIR_CONVERSION_ARMNEON2DTOINTR_ARMNEON2DTOINTR_H_ diff --git a/mlir/include/mlir/Conversion/ArmSMEToSCF/ArmSMEToSCF.h b/mlir/include/mlir/Conversion/ArmSMEToSCF/ArmSMEToSCF.h index 3a28ca11862af..0b9b066690b66 100644 --- a/mlir/include/mlir/Conversion/ArmSMEToSCF/ArmSMEToSCF.h +++ b/mlir/include/mlir/Conversion/ArmSMEToSCF/ArmSMEToSCF.h @@ -15,15 +15,12 @@ namespace mlir { class Pass; class RewritePatternSet; -#define GEN_PASS_DECL_CONVERTARMSMETOSCF +#define GEN_PASS_DECL_CONVERTARMSMETOSCFPASS #include "mlir/Conversion/Passes.h.inc" /// Collect a set of patterns to convert from the ArmSME dialect to SCF. void populateArmSMEToSCFConversionPatterns(RewritePatternSet &patterns); -/// Create a pass to convert a subset of ArmSME ops to SCF. -std::unique_ptr createConvertArmSMEToSCFPass(); - } // namespace mlir #endif // MLIR_CONVERSION_ARMSMETOSCF_ARMSMETOSCF_H_ diff --git a/mlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h b/mlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h index c7146239f34b1..4beb0a5c3ec59 100644 --- a/mlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h +++ b/mlir/include/mlir/Conversion/BufferizationToMemRef/BufferizationToMemRef.h @@ -15,10 +15,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTBUFFERIZATIONTOMEMREF +#define GEN_PASS_DECL_CONVERTBUFFERIZATIONTOMEMREFPASS #include "mlir/Conversion/Passes.h.inc" -std::unique_ptr createBufferizationToMemRefPass(); } // namespace mlir #endif // MLIR_CONVERSION_BUFFERIZATIONTOMEMREF_BUFFERIZATIONTOMEMREF_H diff --git a/mlir/include/mlir/Conversion/ComplexToLibm/ComplexToLibm.h b/mlir/include/mlir/Conversion/ComplexToLibm/ComplexToLibm.h index 49d9f251eec99..475d0f3ce610b 100644 --- a/mlir/include/mlir/Conversion/ComplexToLibm/ComplexToLibm.h +++ b/mlir/include/mlir/Conversion/ComplexToLibm/ComplexToLibm.h @@ -8,6 +8,7 @@ #ifndef MLIR_CONVERSION_COMPLEXTOLIBM_COMPLEXTOLIBM_H_ #define MLIR_CONVERSION_COMPLEXTOLIBM_COMPLEXTOLIBM_H_ +#include "mlir/Pass/Pass.h" #include "mlir/Transforms/DialectConversion.h" namespace mlir { @@ -22,9 +23,6 @@ class OperationPass; void populateComplexToLibmConversionPatterns(RewritePatternSet &patterns, PatternBenefit benefit); -/// Create a pass to convert Complex operations to libm calls. -std::unique_ptr> createConvertComplexToLibmPass(); - } // namespace mlir #endif // MLIR_CONVERSION_COMPLEXTOLIBM_COMPLEXTOLIBM_H_ diff --git a/mlir/include/mlir/Conversion/ComplexToStandard/ComplexToStandard.h b/mlir/include/mlir/Conversion/ComplexToStandard/ComplexToStandard.h index 30b86cac9cd4e..509a68314f987 100644 --- a/mlir/include/mlir/Conversion/ComplexToStandard/ComplexToStandard.h +++ b/mlir/include/mlir/Conversion/ComplexToStandard/ComplexToStandard.h @@ -16,7 +16,7 @@ namespace mlir { class RewritePatternSet; class Pass; -#define GEN_PASS_DECL_CONVERTCOMPLEXTOSTANDARD +#define GEN_PASS_DECL_CONVERTCOMPLEXTOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" /// Populate the given list with patterns that convert from Complex to Standard. @@ -25,11 +25,6 @@ void populateComplexToStandardConversionPatterns( mlir::complex::ComplexRangeFlags complexRange = mlir::complex::ComplexRangeFlags::improved); -/// Create a pass to convert Complex operations to the Standard dialect. -std::unique_ptr createConvertComplexToStandardPass(); -std::unique_ptr -createConvertComplexToStandardPass(ConvertComplexToStandardOptions options); - } // namespace mlir #endif // MLIR_CONVERSION_COMPLEXTOSTANDARD_COMPLEXTOSTANDARD_H_ diff --git a/mlir/include/mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.h b/mlir/include/mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.h index 929e99d7484d9..eb8c79291e367 100644 --- a/mlir/include/mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTCONTROLFLOWTOSPIRV +#define GEN_PASS_DECL_CONVERTCONTROLFLOWTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert ControlFlow ops to SPIR-V ops. -std::unique_ptr> createConvertControlFlowToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_CONTROLFLOWTOSPIRV_CONTROLFLOWTOSPIRVPASS_H diff --git a/mlir/include/mlir/Conversion/ConvertToLLVM/ToLLVMPass.h b/mlir/include/mlir/Conversion/ConvertToLLVM/ToLLVMPass.h index 73deef49c4175..7de03500f8aaa 100644 --- a/mlir/include/mlir/Conversion/ConvertToLLVM/ToLLVMPass.h +++ b/mlir/include/mlir/Conversion/ConvertToLLVM/ToLLVMPass.h @@ -13,14 +13,10 @@ #include "mlir/Pass/Pass.h" -#define GEN_PASS_DECL_CONVERTTOLLVMPASS -#include "mlir/Conversion/Passes.h.inc" - namespace mlir { -/// Create a pass that performs dialect conversion to LLVM for all dialects -/// implementing `ConvertToLLVMPatternInterface`. -std::unique_ptr createConvertToLLVMPass(); +#define GEN_PASS_DECL_CONVERTTOLLVMPASS +#include "mlir/Conversion/Passes.h.inc" /// Register the extension that will load dependent dialects for LLVM /// conversion. This is useful to implement a pass similar to "convert-to-llvm". diff --git a/mlir/include/mlir/Conversion/FuncToSPIRV/FuncToSPIRVPass.h b/mlir/include/mlir/Conversion/FuncToSPIRV/FuncToSPIRVPass.h index aa69b79df8c0e..d903e8e20bc1e 100644 --- a/mlir/include/mlir/Conversion/FuncToSPIRV/FuncToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/FuncToSPIRV/FuncToSPIRVPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTFUNCTOSPIRV +#define GEN_PASS_DECL_CONVERTFUNCTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert Func ops to SPIR-V ops. -std::unique_ptr> createConvertFuncToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_FUNCTOSPIRV_FUNCTOSPIRVPASS_H diff --git a/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h b/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h index eefa2c4724833..51b14953a95a7 100644 --- a/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h +++ b/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h @@ -10,6 +10,7 @@ #define MLIR_CONVERSION_LINALGTOSTANDARD_LINALGTOSTANDARD_H_ #include "mlir/Dialect/Linalg/IR/Linalg.h" +#include "mlir/Pass/Pass.h" #include "mlir/Transforms/DialectConversion.h" namespace mlir { @@ -17,7 +18,7 @@ class ModuleOp; template class OperationPass; -#define GEN_PASS_DECL_CONVERTLINALGTOSTANDARD +#define GEN_PASS_DECL_CONVERTLINALGTOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" namespace linalg { @@ -46,10 +47,6 @@ class LinalgOpToLibraryCallRewrite void populateLinalgToStandardConversionPatterns(RewritePatternSet &patterns); } // namespace linalg - -/// Create a pass to convert Linalg operations to the Standard dialect. -std::unique_ptr> createConvertLinalgToStandardPass(); - } // namespace mlir #endif // MLIR_CONVERSION_LINALGTOSTANDARD_LINALGTOSTANDARD_H_ diff --git a/mlir/include/mlir/Conversion/MathToLibm/MathToLibm.h b/mlir/include/mlir/Conversion/MathToLibm/MathToLibm.h index 8ace53a0fd582..75f077d9ab286 100644 --- a/mlir/include/mlir/Conversion/MathToLibm/MathToLibm.h +++ b/mlir/include/mlir/Conversion/MathToLibm/MathToLibm.h @@ -9,12 +9,13 @@ #define MLIR_CONVERSION_MATHTOLIBM_MATHTOLIBM_H_ #include "mlir/IR/PatternMatch.h" +#include "mlir/Pass/Pass.h" namespace mlir { template class OperationPass; -#define GEN_PASS_DECL_CONVERTMATHTOLIBM +#define GEN_PASS_DECL_CONVERTMATHTOLIBMPASS #include "mlir/Conversion/Passes.h.inc" /// Populate the given list with patterns that convert from Math to Libm calls. @@ -22,9 +23,6 @@ class OperationPass; void populateMathToLibmConversionPatterns(RewritePatternSet &patterns, PatternBenefit benefit = 1); -/// Create a pass to convert Math operations to libm calls. -std::unique_ptr> createConvertMathToLibmPass(); - } // namespace mlir #endif // MLIR_CONVERSION_MATHTOLIBM_MATHTOLIBM_H_ diff --git a/mlir/include/mlir/Conversion/MathToSPIRV/MathToSPIRVPass.h b/mlir/include/mlir/Conversion/MathToSPIRV/MathToSPIRVPass.h index ea0f1d3fa3589..bd6431ad84623 100644 --- a/mlir/include/mlir/Conversion/MathToSPIRV/MathToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/MathToSPIRV/MathToSPIRVPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTMATHTOSPIRV +#define GEN_PASS_DECL_CONVERTMATHTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert Math ops to SPIR-V ops. -std::unique_ptr> createConvertMathToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_MATHTOSPIRV_MATHTOSPIRVPASS_H diff --git a/mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.h b/mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.h index 2cb90bac9bc78..3df54fd8a47bd 100644 --- a/mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.h @@ -20,16 +20,13 @@ namespace mlir { class ModuleOp; #define GEN_PASS_DECL_MAPMEMREFSTORAGECLASS -#define GEN_PASS_DECL_CONVERTMEMREFTOSPIRV +#define GEN_PASS_DECL_CONVERTMEMREFTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" /// Creates a pass to map numeric MemRef memory spaces to symbolic SPIR-V /// storage classes. The mapping is read from the command-line option. std::unique_ptr> createMapMemRefStorageClassPass(); -/// Creates a pass to convert MemRef ops to SPIR-V ops. -std::unique_ptr> createConvertMemRefToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_MEMREFTOSPIRV_MEMREFTOSPIRVPASS_H diff --git a/mlir/include/mlir/Conversion/MeshToMPI/MeshToMPI.h b/mlir/include/mlir/Conversion/MeshToMPI/MeshToMPI.h index 44a1cc0adb6a0..bc64e7a3c1c8c 100644 --- a/mlir/include/mlir/Conversion/MeshToMPI/MeshToMPI.h +++ b/mlir/include/mlir/Conversion/MeshToMPI/MeshToMPI.h @@ -18,10 +18,6 @@ class Pass; #define GEN_PASS_DECL_CONVERTMESHTOMPIPASS #include "mlir/Conversion/Passes.h.inc" -/// Lowers Mesh communication operations (updateHalo, AllGater, ...) -/// to MPI primitives. -std::unique_ptr<::mlir::Pass> createConvertMeshToMPIPass(); - } // namespace mlir #endif // MLIR_CONVERSION_MESHTOMPI_MESHTOMPI_H diff --git a/mlir/include/mlir/Conversion/OpenACCToSCF/ConvertOpenACCToSCF.h b/mlir/include/mlir/Conversion/OpenACCToSCF/ConvertOpenACCToSCF.h index 44a58667b7a9a..75ded320e2f9e 100644 --- a/mlir/include/mlir/Conversion/OpenACCToSCF/ConvertOpenACCToSCF.h +++ b/mlir/include/mlir/Conversion/OpenACCToSCF/ConvertOpenACCToSCF.h @@ -8,6 +8,7 @@ #ifndef MLIR_CONVERSION_OPENACCTOSCF_CONVERTOPENACCTOSCF_H #define MLIR_CONVERSION_OPENACCTOSCF_CONVERTOPENACCTOSCF_H +#include "mlir/Pass/Pass.h" #include namespace mlir { @@ -16,16 +17,13 @@ template class OperationPass; class RewritePatternSet; -#define GEN_PASS_DECL_CONVERTOPENACCTOSCF +#define GEN_PASS_DECL_CONVERTOPENACCTOSCFPASS #include "mlir/Conversion/Passes.h.inc" /// Collect the patterns to convert from the OpenACC dialect to OpenACC with /// SCF dialect. void populateOpenACCToSCFConversionPatterns(RewritePatternSet &patterns); -/// Create a pass to convert the OpenACC dialect into the LLVMIR dialect. -std::unique_ptr> createConvertOpenACCToSCFPass(); - } // namespace mlir #endif // MLIR_CONVERSION_OPENACCTOSCF_CONVERTOPENACCTOSCF_H diff --git a/mlir/include/mlir/Conversion/PDLToPDLInterp/PDLToPDLInterp.h b/mlir/include/mlir/Conversion/PDLToPDLInterp/PDLToPDLInterp.h index 54033ff1639c7..c6a647245f82b 100644 --- a/mlir/include/mlir/Conversion/PDLToPDLInterp/PDLToPDLInterp.h +++ b/mlir/include/mlir/Conversion/PDLToPDLInterp/PDLToPDLInterp.h @@ -13,6 +13,7 @@ #ifndef MLIR_CONVERSION_PDLTOPDLINTERP_PDLTOPDLINTERP_H #define MLIR_CONVERSION_PDLTOPDLINTERP_PDLTOPDLINTERP_H +#include "mlir/Pass/Pass.h" #include "mlir/Support/LLVM.h" namespace mlir { @@ -22,16 +23,13 @@ template class OperationPass; class PDLPatternConfigSet; -#define GEN_PASS_DECL_CONVERTPDLTOPDLINTERP +#define GEN_PASS_DECL_CONVERTPDLTOPDLINTERPPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates and returns a pass to convert PDL ops to PDL interpreter ops. -std::unique_ptr> createPDLToPDLInterpPass(); - /// Creates and returns a pass to convert PDL ops to PDL interpreter ops. /// `configMap` holds a map of the configurations for each pattern being /// compiled. -std::unique_ptr> createPDLToPDLInterpPass( +std::unique_ptr> createConvertPDLToPDLInterpPass( DenseMap &configMap); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td index af46975b0213e..0479f32c85341 100644 --- a/mlir/include/mlir/Conversion/Passes.td +++ b/mlir/include/mlir/Conversion/Passes.td @@ -30,7 +30,6 @@ def ConvertToLLVMPass : Pass<"convert-to-llvm"> { extra overhead. }]; - let constructor = "mlir::createConvertToLLVMPass()"; let options = [ ListOption<"filterDialects", "filter-dialects", "std::string", "Test conversion patterns of only the specified dialects">, @@ -40,11 +39,11 @@ def ConvertToLLVMPass : Pass<"convert-to-llvm"> { } //===----------------------------------------------------------------------===// -// AffineToStandard +// LowerAffine //===----------------------------------------------------------------------===// -def ConvertAffineToStandard : Pass<"lower-affine"> { - let summary = "Lower Affine operations to a combination of Standard and SCF " +def LowerAffine : Pass<"lower-affine"> { + let summary = "Lower Affine operations to a combination of Arith and SCF " "operations"; let description = [{ @@ -55,7 +54,7 @@ def ConvertAffineToStandard : Pass<"lower-affine"> { of certain structural restrictions (on their bounds and step). `affine.if` is similarly converted to the `scf.if` operation. `affine.apply` operations are converted into sequences of primitive arithmetic operations from the - standard dialect that have the same effect, using operands of the `index` + arith dialect that have the same effect, using operands of the `index` type. Consequently, named maps and sets thare are no longer in use may be removed from the module. @@ -93,24 +92,19 @@ def ConvertAffineToStandard : Pass<"lower-affine"> { if they do not depend on the loop iterator value or on the result of `affine.apply`. }]; - let constructor = "mlir::createLowerAffinePass()"; - let dependentDialects = [ - "memref::MemRefDialect", - "scf::SCFDialect", - "vector::VectorDialect" - ]; + let dependentDialects = ["arith::ArithDialect", "memref::MemRefDialect", + "scf::SCFDialect", "vector::VectorDialect"]; } //===----------------------------------------------------------------------===// // AMDGPUToROCDL //===----------------------------------------------------------------------===// -def ConvertAMDGPUToROCDL : Pass<"convert-amdgpu-to-rocdl"> { +def ConvertAMDGPUToROCDLPass : Pass<"convert-amdgpu-to-rocdl"> { let summary = "Convert AMDGPU dialect to ROCDL dialect"; let description = [{ This pass converts supported AMDGPU ops to ROCDL dialect intrinsics. }]; - let constructor = "mlir::createConvertAMDGPUToROCDLPass()"; let dependentDialects = [ "LLVM::LLVMDialect", "ROCDL::ROCDLDialect", @@ -177,9 +171,8 @@ def ArithToLLVMConversionPass : Pass<"convert-arith-to-llvm"> { // ArithToSPIRV //===----------------------------------------------------------------------===// -def ConvertArithToSPIRV : Pass<"convert-arith-to-spirv"> { +def ConvertArithToSPIRVPass : Pass<"convert-arith-to-spirv"> { let summary = "Convert Arith dialect to SPIR-V dialect"; - let constructor = "mlir::arith::createConvertArithToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; let options = [ Option<"emulateLT32BitScalarTypes", "emulate-lt-32-bit-scalar-types", @@ -202,9 +195,13 @@ def ArithToArmSMEConversionPass : Pass<"convert-arith-to-arm-sme"> { // ArmNeon2dToIntr //===----------------------------------------------------------------------===// -def ConvertArmNeon2dToIntr : Pass<"arm-neon-2d-to-intr"> { +def ConvertArmNeon2dToIntrPass : Pass<"arm-neon-2d-to-intr"> { let summary = "Convert Arm NEON structured ops to intrinsics"; - let constructor = "mlir::createConvertArmNeon2dToIntrPass()"; + let description = [{ + Creates a pass to lower Arm NEON 2D ops to intrinsics, i.e. + equivalent ops operating on flattened 1D vectors and mapping more + directly to the corresponding Arm NEON instruction. + }]; let dependentDialects = ["arm_neon::ArmNeonDialect", "vector::VectorDialect"]; } @@ -231,7 +228,7 @@ def ConvertAsyncToLLVMPass : Pass<"convert-async-to-llvm", "ModuleOp"> { // BufferizationToMemRef //===----------------------------------------------------------------------===// -def ConvertBufferizationToMemRef : Pass<"convert-bufferization-to-memref"> { +def ConvertBufferizationToMemRefPass : Pass<"convert-bufferization-to-memref"> { let summary = "Convert operations from the Bufferization dialect to the " "MemRef dialect"; let description = [{ @@ -260,7 +257,6 @@ def ConvertBufferizationToMemRef : Pass<"convert-bufferization-to-memref"> { and hence does not resolve any memory leaks. }]; - let constructor = "mlir::createBufferizationToMemRefPass()"; let dependentDialects = [ "arith::ArithDialect", "memref::MemRefDialect", "scf::SCFDialect", "func::FuncDialect" @@ -296,10 +292,7 @@ def ConvertComplexToLibm : Pass<"convert-complex-to-libm", "ModuleOp"> { let description = [{ This pass converts supported Complex ops to libm calls. }]; - let constructor = "mlir::createConvertComplexToLibmPass()"; - let dependentDialects = [ - "func::FuncDialect", - ]; + let dependentDialects = ["func::FuncDialect"]; } //===----------------------------------------------------------------------===// @@ -315,9 +308,8 @@ def ConvertComplexToSPIRVPass : Pass<"convert-complex-to-spirv"> { // ComplexToStandard //===----------------------------------------------------------------------===// -def ConvertComplexToStandard : Pass<"convert-complex-to-standard"> { +def ConvertComplexToStandardPass : Pass<"convert-complex-to-standard"> { let summary = "Convert Complex dialect to standard dialect"; - let constructor = "mlir::createConvertComplexToStandardPass()"; let dependentDialects = ["math::MathDialect"]; let options = [ @@ -388,9 +380,8 @@ def LiftControlFlowToSCFPass : Pass<"lift-cf-to-scf"> { // ControlFlowToSPIRV //===----------------------------------------------------------------------===// -def ConvertControlFlowToSPIRV : Pass<"convert-cf-to-spirv"> { +def ConvertControlFlowToSPIRVPass : Pass<"convert-cf-to-spirv"> { let summary = "Convert ControlFlow dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertControlFlowToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; let options = [ Option<"emulateLT32BitScalarTypes", "emulate-lt-32-bit-scalar-types", @@ -473,9 +464,8 @@ def ConvertFuncToLLVMPass : Pass<"convert-func-to-llvm", "ModuleOp"> { // FuncToSPIRV //===----------------------------------------------------------------------===// -def ConvertFuncToSPIRV : Pass<"convert-func-to-spirv"> { +def ConvertFuncToSPIRVPass : Pass<"convert-func-to-spirv"> { let summary = "Convert Func dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertFuncToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; let options = [ Option<"emulateLT32BitScalarTypes", "emulate-lt-32-bit-scalar-types", @@ -702,10 +692,9 @@ def ConvertIndexToSPIRVPass : Pass<"convert-index-to-spirv"> { // LinalgToStandard //===----------------------------------------------------------------------===// -def ConvertLinalgToStandard : Pass<"convert-linalg-to-std", "ModuleOp"> { +def ConvertLinalgToStandardPass : Pass<"convert-linalg-to-std", "ModuleOp"> { let summary = "Convert the operations from the linalg dialect into the " "Standard dialect"; - let constructor = "mlir::createConvertLinalgToStandardPass()"; let dependentDialects = ["func::FuncDialect", "memref::MemRefDialect"]; } @@ -713,12 +702,11 @@ def ConvertLinalgToStandard : Pass<"convert-linalg-to-std", "ModuleOp"> { // MathToLibm //===----------------------------------------------------------------------===// -def ConvertMathToLibm : Pass<"convert-math-to-libm", "ModuleOp"> { +def ConvertMathToLibmPass : Pass<"convert-math-to-libm", "ModuleOp"> { let summary = "Convert Math dialect to libm calls"; let description = [{ This pass converts supported Math ops to libm calls. }]; - let constructor = "mlir::createConvertMathToLibmPass()"; let dependentDialects = [ "arith::ArithDialect", "func::FuncDialect", @@ -760,9 +748,8 @@ def ConvertMathToROCDL : Pass<"convert-math-to-rocdl", "ModuleOp"> { // MathToSPIRV //===----------------------------------------------------------------------===// -def ConvertMathToSPIRV : Pass<"convert-math-to-spirv"> { +def ConvertMathToSPIRVPass : Pass<"convert-math-to-spirv"> { let summary = "Convert Math dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertMathToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; } @@ -872,9 +859,8 @@ def MapMemRefStorageClass : Pass<"map-memref-spirv-storage-class"> { ]; } -def ConvertMemRefToSPIRV : Pass<"convert-memref-to-spirv"> { +def ConvertMemRefToSPIRVPass : Pass<"convert-memref-to-spirv"> { let summary = "Convert MemRef dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertMemRefToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; let options = [ Option<"boolNumBits", "bool-num-bits", @@ -892,7 +878,6 @@ def ConvertMemRefToSPIRV : Pass<"convert-memref-to-spirv"> { def ConvertMeshToMPIPass : Pass<"convert-mesh-to-mpi"> { let summary = "Convert Mesh dialect to MPI dialect."; - let constructor = "mlir::createConvertMeshToMPIPass()"; let description = [{ This pass converts communication operations from the Mesh dialect to the MPI dialect. @@ -944,9 +929,8 @@ def ConvertNVGPUToNVVMPass : Pass<"convert-nvgpu-to-nvvm"> { // OpenACCToSCF //===----------------------------------------------------------------------===// -def ConvertOpenACCToSCF : Pass<"convert-openacc-to-scf", "ModuleOp"> { +def ConvertOpenACCToSCFPass : Pass<"convert-openacc-to-scf", "ModuleOp"> { let summary = "Convert the OpenACC ops to OpenACC with SCF dialect"; - let constructor = "mlir::createConvertOpenACCToSCFPass()"; let dependentDialects = ["scf::SCFDialect", "acc::OpenACCDialect"]; } @@ -963,9 +947,8 @@ def ConvertOpenMPToLLVMPass : Pass<"convert-openmp-to-llvm", "ModuleOp"> { // PDLToPDLInterp //===----------------------------------------------------------------------===// -def ConvertPDLToPDLInterp : Pass<"convert-pdl-to-pdl-interp", "ModuleOp"> { +def ConvertPDLToPDLInterpPass : Pass<"convert-pdl-to-pdl-interp", "ModuleOp"> { let summary = "Convert PDL ops to PDL interpreter ops"; - let constructor = "mlir::createPDLToPDLInterpPass()"; let dependentDialects = ["pdl_interp::PDLInterpDialect"]; } @@ -973,7 +956,7 @@ def ConvertPDLToPDLInterp : Pass<"convert-pdl-to-pdl-interp", "ModuleOp"> { // ReconcileUnrealizedCasts //===----------------------------------------------------------------------===// -def ReconcileUnrealizedCasts : Pass<"reconcile-unrealized-casts"> { +def ReconcileUnrealizedCastsPass : Pass<"reconcile-unrealized-casts"> { let summary = "Simplify and eliminate unrealized conversion casts"; let description = [{ Eliminate `unrealized_conversion_cast` operations, commonly introduced by @@ -992,17 +975,15 @@ def ReconcileUnrealizedCasts : Pass<"reconcile-unrealized-casts"> { and the producer operation is converted by another pass, each of which produces an unrealized cast. This pass can be used to clean up the IR. }]; - let constructor = "mlir::createReconcileUnrealizedCastsPass()"; } //===----------------------------------------------------------------------===// // SCFToControlFlow //===----------------------------------------------------------------------===// -def SCFToControlFlow : Pass<"convert-scf-to-cf"> { +def SCFToControlFlowPass : Pass<"convert-scf-to-cf"> { let summary = "Convert SCF dialect to ControlFlow dialect, replacing structured" " control flow with a CFG"; - let constructor = "mlir::createConvertSCFToCFPass()"; let dependentDialects = ["cf::ControlFlowDialect"]; } @@ -1044,10 +1025,9 @@ def SCFToSPIRV : Pass<"convert-scf-to-spirv"> { // SCFToGPU //===----------------------------------------------------------------------===// -def ConvertAffineForToGPU +def ConvertAffineForToGPUPass : InterfacePass<"convert-affine-for-to-gpu", "FunctionOpInterface"> { let summary = "Convert top-level AffineFor Ops to GPU kernels"; - let constructor = "mlir::createAffineForToGPUPass()"; let dependentDialects = ["gpu::GPUDialect"]; let options = [ Option<"numBlockDims", "gpu-block-dims", "unsigned", /*default=*/"1u", @@ -1057,9 +1037,14 @@ def ConvertAffineForToGPU ]; } -def ConvertParallelLoopToGpu : Pass<"convert-parallel-loops-to-gpu"> { +def ConvertParallelLoopToGpuPass : Pass<"convert-parallel-loops-to-gpu"> { let summary = "Convert mapped scf.parallel ops to gpu launch operations"; - let constructor = "mlir::createParallelLoopToGpuPass()"; + let description = [{ + Creates a pass that converts scf.parallel operations into a gpu.launch + operation. The mapping of loop dimensions to launch dimensions is derived + from mapping attributes. See ParallelToGpuLaunchLowering::matchAndRewrite + for a description of the used attributes. + }]; let dependentDialects = ["affine::AffineDialect", "gpu::GPUDialect"]; } @@ -1077,16 +1062,13 @@ def SCFToEmitC : Pass<"convert-scf-to-emitc"> { // ShapeToStandard //===----------------------------------------------------------------------===// -def ConvertShapeToStandard : Pass<"convert-shape-to-std", "ModuleOp"> { +def ConvertShapeToStandardPass : Pass<"convert-shape-to-std", "ModuleOp"> { let summary = "Convert operations from the shape dialect into the standard " "dialect"; - let constructor = "mlir::createConvertShapeToStandardPass()"; - let dependentDialects = [ - "scf::SCFDialect", - ]; + let dependentDialects = ["scf::SCFDialect"]; } -def ConvertShapeConstraints : Pass<"convert-shape-constraints"> { +def ConvertShapeConstraintsPass : Pass<"convert-shape-constraints"> { let summary = "Convert shape constraint operations to the standard dialect"; let description = [{ This pass eliminates shape constraints from the program, converting them to @@ -1097,7 +1079,6 @@ def ConvertShapeConstraints : Pass<"convert-shape-constraints"> { can happen at a different part of the program than general shape computation lowering. }]; - let constructor = "mlir::createConvertShapeConstraintsPass()"; let dependentDialects = ["cf::ControlFlowDialect", "scf::SCFDialect"]; } @@ -1131,9 +1112,8 @@ def ConvertSPIRVToLLVMPass : Pass<"convert-spirv-to-llvm", "ModuleOp"> { // TensorToLinalg //===----------------------------------------------------------------------===// -def ConvertTensorToLinalg : Pass<"convert-tensor-to-linalg", "ModuleOp"> { +def ConvertTensorToLinalgPass : Pass<"convert-tensor-to-linalg", "ModuleOp"> { let summary = "Convert some Tensor dialect ops to Linalg dialect"; - let constructor = "mlir::createConvertTensorToLinalgPass()"; let dependentDialects = [ "arith::ArithDialect", "linalg::LinalgDialect", @@ -1144,9 +1124,8 @@ def ConvertTensorToLinalg : Pass<"convert-tensor-to-linalg", "ModuleOp"> { // TensorToSPIRV //===----------------------------------------------------------------------===// -def ConvertTensorToSPIRV : Pass<"convert-tensor-to-spirv"> { +def ConvertTensorToSPIRVPass : Pass<"convert-tensor-to-spirv"> { let summary = "Convert Tensor dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertTensorToSPIRVPass()"; let dependentDialects = ["spirv::SPIRVDialect"]; let options = [ Option<"emulateLT32BitScalarTypes", "emulate-lt-32-bit-scalar-types", @@ -1160,7 +1139,7 @@ def ConvertTensorToSPIRV : Pass<"convert-tensor-to-spirv"> { // TosaToArith //===----------------------------------------------------------------------===// -def TosaToArith : Pass<"tosa-to-arith"> { +def TosaToArithPass : Pass<"tosa-to-arith"> { let summary = "Lower TOSA to the Arith dialect"; let dependentDialects = [ "arith::ArithDialect", @@ -1179,8 +1158,6 @@ def TosaToArith : Pass<"tosa-to-arith"> { "bool", /*default=*/"false", "Whether to prioritze lowering to 32-bit operations"> ]; - - let constructor = "tosa::createTosaToArith()"; } //===----------------------------------------------------------------------===// @@ -1244,22 +1221,20 @@ def TosaToMLProgram : Pass<"tosa-to-mlprogram", "ModuleOp"> { // TosaToSCF //===----------------------------------------------------------------------===// -def TosaToSCF : Pass<"tosa-to-scf"> { +def TosaToSCFPass : Pass<"tosa-to-scf"> { let summary = "Lower TOSA to the SCF dialect"; let dependentDialects = ["tensor::TensorDialect, scf::SCFDialect"]; let description = [{ Pass that converts TOSA's control flow operations to the equivalent SCF operations. }]; - - let constructor = "tosa::createTosaToSCF()"; } //===----------------------------------------------------------------------===// // TosaToTensor //===----------------------------------------------------------------------===// -def TosaToTensor : Pass<"tosa-to-tensor"> { +def TosaToTensorPass : Pass<"tosa-to-tensor"> { let summary = "Lower TOSA to the Tensor dialect"; let dependentDialects = [ "tensor::TensorDialect", @@ -1268,8 +1243,6 @@ def TosaToTensor : Pass<"tosa-to-tensor"> { Pass that converts TOSA operations to the equivalent operations using the operations in the Tensor dialect. }]; - - let constructor = "tosa::createTosaToTensor()"; } //===----------------------------------------------------------------------===// @@ -1350,10 +1323,9 @@ def ConvertVectorToSCF : Pass<"convert-vector-to-scf"> { // VectorToArmSME //===----------------------------------------------------------------------===// -def ConvertVectorToArmSME : Pass<"convert-vector-to-arm-sme"> { +def ConvertVectorToArmSMEPass : Pass<"convert-vector-to-arm-sme"> { let summary = "Lower the operations from the vector dialect into the ArmSME " "dialect"; - let constructor = "mlir::createConvertVectorToArmSMEPass()"; let description = [{ Pass that converts vector dialect operations into equivalent ArmSME dialect operations. @@ -1365,10 +1337,9 @@ def ConvertVectorToArmSME : Pass<"convert-vector-to-arm-sme"> { // ArmSMEToSCF //===----------------------------------------------------------------------===// -def ConvertArmSMEToSCF : Pass<"convert-arm-sme-to-scf"> { +def ConvertArmSMEToSCFPass : Pass<"convert-arm-sme-to-scf"> { let summary = "Lower the operations from the ArmSME dialect into the SCF " "dialect"; - let constructor = "mlir::createConvertArmSMEToSCFPass()"; let dependentDialects = [ "scf::SCFDialect", "arith::ArithDialect", @@ -1450,9 +1421,8 @@ def ConvertVectorToLLVMPass : Pass<"convert-vector-to-llvm"> { // VectorToSPIRV //===----------------------------------------------------------------------===// -def ConvertVectorToSPIRV : Pass<"convert-vector-to-spirv"> { +def ConvertVectorToSPIRVPass : Pass<"convert-vector-to-spirv"> { let summary = "Convert Vector dialect to SPIR-V dialect"; - let constructor = "mlir::createConvertVectorToSPIRVPass()"; let dependentDialects = [ "spirv::SPIRVDialect", "ub::UBDialect" @@ -1466,7 +1436,6 @@ def ConvertVectorToSPIRV : Pass<"convert-vector-to-spirv"> { def ConvertVectorToXeGPU : Pass<"convert-vector-to-xegpu"> { let summary = "Lower the operations from the vector dialect into the XeGPU " "dialect"; - let constructor = "mlir::createConvertVectorToXeGPUPass()"; let dependentDialects = [ "memref::MemRefDialect", "arith::ArithDialect", "vector::VectorDialect", "xegpu::XeGPUDialect" diff --git a/mlir/include/mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h b/mlir/include/mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h index 533a57a060c26..01a6be8ea957c 100644 --- a/mlir/include/mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h +++ b/mlir/include/mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h @@ -15,12 +15,9 @@ namespace mlir { class Pass; class RewritePatternSet; -#define GEN_PASS_DECL_RECONCILEUNREALIZEDCASTS +#define GEN_PASS_DECL_RECONCILEUNREALIZEDCASTSPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass that eliminates noop `unrealized_conversion_cast` operation -/// sequences. -std::unique_ptr createReconcileUnrealizedCastsPass(); } // namespace mlir #endif // MLIR_CONVERSION_RECONCILEUNREALIZEDCASTS_RECONCILEUNREALIZEDCASTS_H_ diff --git a/mlir/include/mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h b/mlir/include/mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h index b4cb16aecd862..2def01d208f72 100644 --- a/mlir/include/mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h +++ b/mlir/include/mlir/Conversion/SCFToControlFlow/SCFToControlFlow.h @@ -15,17 +15,13 @@ namespace mlir { class Pass; class RewritePatternSet; -#define GEN_PASS_DECL_SCFTOCONTROLFLOW +#define GEN_PASS_DECL_SCFTOCONTROLFLOWPASS #include "mlir/Conversion/Passes.h.inc" /// Collect a set of patterns to convert SCF operations to CFG branch-based /// operations within the ControlFlow dialect. void populateSCFToControlFlowConversionPatterns(RewritePatternSet &patterns); -/// Creates a pass to convert SCF operations to CFG branch-based operation in -/// the ControlFlow dialect. -std::unique_ptr createConvertSCFToCFPass(); - } // namespace mlir #endif // MLIR_CONVERSION_SCFTOCONTROLFLOW_SCFTOCONTROLFLOW_H_ diff --git a/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPUPass.h b/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPUPass.h index b4c843c01e370..3eac7c552c182 100644 --- a/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPUPass.h +++ b/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPUPass.h @@ -9,6 +9,7 @@ #define MLIR_CONVERSION_SCFTOGPU_SCFTOGPUPASS_H_ #include "mlir/Interfaces/FunctionInterfaces.h" +#include "mlir/Pass/Pass.h" #include "mlir/Support/LLVM.h" #include @@ -18,28 +19,10 @@ template class InterfacePass; class Pass; -#define GEN_PASS_DECL_CONVERTAFFINEFORTOGPU -#define GEN_PASS_DECL_CONVERTPARALLELLOOPTOGPU +#define GEN_PASS_DECL_CONVERTAFFINEFORTOGPUPASS +#define GEN_PASS_DECL_CONVERTPARALLELLOOPTOGPUPASS #include "mlir/Conversion/Passes.h.inc" -/// Create a pass that converts loop nests into GPU kernels. It considers -/// top-level affine.for operations as roots of loop nests and converts them to -/// the gpu.launch operations if possible. -/// -/// No check on the size of the block or grid, or on the validity of -/// parallelization is performed, it is under the responsibility of the caller -/// to strip-mine the loops and to perform the dependence analysis before -/// calling the conversion. -std::unique_ptr> -createAffineForToGPUPass(unsigned numBlockDims, unsigned numThreadDims); -std::unique_ptr> createAffineForToGPUPass(); - -/// Creates a pass that converts scf.parallel operations into a gpu.launch -/// operation. The mapping of loop dimensions to launch dimensions is derived -/// from mapping attributes. See ParallelToGpuLaunchLowering::matchAndRewrite -/// for a description of the used attributes. -std::unique_ptr createParallelLoopToGpuPass(); - } // namespace mlir #endif // MLIR_CONVERSION_SCFTOGPU_SCFTOGPUPASS_H_ diff --git a/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h b/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h index 2b35bb7320df7..faef6bda83124 100644 --- a/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h +++ b/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h @@ -19,19 +19,15 @@ template class OperationPass; class RewritePatternSet; -#define GEN_PASS_DECL_CONVERTSHAPECONSTRAINTS -#define GEN_PASS_DECL_CONVERTSHAPETOSTANDARD +#define GEN_PASS_DECL_CONVERTSHAPECONSTRAINTSPASS +#define GEN_PASS_DECL_CONVERTSHAPETOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" void populateShapeToStandardConversionPatterns(RewritePatternSet &patterns); -std::unique_ptr> createConvertShapeToStandardPass(); - void populateConvertShapeConstraintsConversionPatterns( RewritePatternSet &patterns); -std::unique_ptr createConvertShapeConstraintsPass(); - } // namespace mlir #endif // MLIR_CONVERSION_SHAPETOSTANDARD_SHAPETOSTANDARD_H_ diff --git a/mlir/include/mlir/Conversion/TensorToLinalg/TensorToLinalgPass.h b/mlir/include/mlir/Conversion/TensorToLinalg/TensorToLinalgPass.h index af3eed1a9b5f9..ed48df81d7cfd 100644 --- a/mlir/include/mlir/Conversion/TensorToLinalg/TensorToLinalgPass.h +++ b/mlir/include/mlir/Conversion/TensorToLinalg/TensorToLinalgPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTTENSORTOLINALG +#define GEN_PASS_DECL_CONVERTTENSORTOLINALGPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert Tensor ops to Linalg ops. -std::unique_ptr> createConvertTensorToLinalgPass(); - } // namespace mlir #endif // MLIR_CONVERSION_TENSORTOLINALG_TENSORTOLINALGPASS_H diff --git a/mlir/include/mlir/Conversion/TensorToSPIRV/TensorToSPIRVPass.h b/mlir/include/mlir/Conversion/TensorToSPIRV/TensorToSPIRVPass.h index 8f24528b085a4..71532656347f3 100644 --- a/mlir/include/mlir/Conversion/TensorToSPIRV/TensorToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/TensorToSPIRV/TensorToSPIRVPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_CONVERTTENSORTOSPIRV +#define GEN_PASS_DECL_CONVERTTENSORTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert Tensor ops to SPIR-V ops. -std::unique_ptr> createConvertTensorToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_TENSORTOSPIRV_TENSORTOSPIRVPASS_H diff --git a/mlir/include/mlir/Conversion/TosaToArith/TosaToArith.h b/mlir/include/mlir/Conversion/TosaToArith/TosaToArith.h index e7158ee3852e1..a699b9e42906f 100644 --- a/mlir/include/mlir/Conversion/TosaToArith/TosaToArith.h +++ b/mlir/include/mlir/Conversion/TosaToArith/TosaToArith.h @@ -17,14 +17,11 @@ namespace mlir { -#define GEN_PASS_DECL_TOSATOARITH +#define GEN_PASS_DECL_TOSATOARITHPASS #include "mlir/Conversion/Passes.h.inc" namespace tosa { -std::unique_ptr createTosaToArith(bool includeApplyRescale = false, - bool use32BitApplyRescale = false); - void populateTosaToArithConversionPatterns(RewritePatternSet *patterns); void populateTosaRescaleToArithConversionPatterns(RewritePatternSet *patterns, diff --git a/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h b/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h index 96d83fd8400e5..45616bd9e5616 100644 --- a/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h +++ b/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h @@ -17,13 +17,11 @@ namespace mlir { -#define GEN_PASS_DECL_TOSATOSCF +#define GEN_PASS_DECL_TOSATOSCFPASS #include "mlir/Conversion/Passes.h.inc" namespace tosa { -std::unique_ptr createTosaToSCF(); - void populateTosaToSCFConversionPatterns(RewritePatternSet *patterns); /// Populates passes to convert from TOSA to SCF. diff --git a/mlir/include/mlir/Conversion/TosaToTensor/TosaToTensor.h b/mlir/include/mlir/Conversion/TosaToTensor/TosaToTensor.h index 66c381f517418..50dcd91449868 100644 --- a/mlir/include/mlir/Conversion/TosaToTensor/TosaToTensor.h +++ b/mlir/include/mlir/Conversion/TosaToTensor/TosaToTensor.h @@ -18,13 +18,11 @@ namespace mlir { class TypeConverter; -#define GEN_PASS_DECL_TOSATOTENSOR +#define GEN_PASS_DECL_TOSATOTENSORPASS #include "mlir/Conversion/Passes.h.inc" namespace tosa { -std::unique_ptr createTosaToTensor(); - void populateTosaToTensorConversionPatterns(const TypeConverter &converter, RewritePatternSet *patterns); diff --git a/mlir/include/mlir/Conversion/VectorToArmSME/VectorToArmSME.h b/mlir/include/mlir/Conversion/VectorToArmSME/VectorToArmSME.h index 2332311ee72cd..edfd789c47524 100644 --- a/mlir/include/mlir/Conversion/VectorToArmSME/VectorToArmSME.h +++ b/mlir/include/mlir/Conversion/VectorToArmSME/VectorToArmSME.h @@ -13,7 +13,7 @@ namespace mlir { class Pass; -#define GEN_PASS_DECL_CONVERTVECTORTOARMSME +#define GEN_PASS_DECL_CONVERTVECTORTOARMSMEPASS #include "mlir/Conversion/Passes.h.inc" /// Collect a set of patterns to lower Vector ops to ArmSME ops that map to LLVM @@ -21,9 +21,6 @@ class Pass; void populateVectorToArmSMEPatterns(RewritePatternSet &patterns, MLIRContext &ctx); -/// Create a pass to lower operations from the vector dialect to Arm SME. -std::unique_ptr createConvertVectorToArmSMEPass(); - } // namespace mlir #endif // MLIR_CONVERSION_VECTORTOARMSME_VECTORTOARMSME_H_ diff --git a/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRVPass.h b/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRVPass.h index 1a8b367b1fc6b..c7c69c1f92369 100644 --- a/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRVPass.h +++ b/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRVPass.h @@ -18,12 +18,9 @@ namespace mlir { class ModuleOp; -#define GEN_PASS_DECL_VECTORTOSPIRVPASS +#define GEN_PASS_DECL_CONVERTVECTORTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" -/// Creates a pass to convert Vector Ops to SPIR-V ops. -std::unique_ptr> createConvertVectorToSPIRVPass(); - } // namespace mlir #endif // MLIR_CONVERSION_VECTORTOSPIRV_VECTORTOSPIRVPASS_H diff --git a/mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp b/mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp index 9fb51f0bc1f1e..c62314e504dcc 100644 --- a/mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp +++ b/mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp @@ -23,7 +23,7 @@ #include namespace mlir { -#define GEN_PASS_DEF_CONVERTAMDGPUTOROCDL +#define GEN_PASS_DEF_CONVERTAMDGPUTOROCDLPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -1037,8 +1037,8 @@ struct AMDGPUDPPLowering : public ConvertOpToLLVMPattern { }; struct ConvertAMDGPUToROCDLPass - : public impl::ConvertAMDGPUToROCDLBase { - ConvertAMDGPUToROCDLPass() = default; + : public impl::ConvertAMDGPUToROCDLPassBase { + using ConvertAMDGPUToROCDLPassBase::ConvertAMDGPUToROCDLPassBase; void runOnOperation() override { MLIRContext *ctx = &getContext(); @@ -1083,7 +1083,3 @@ void mlir::populateAMDGPUToROCDLConversionPatterns( PackedTrunc2xFp8OpLowering, PackedStochRoundFp8OpLowering>(converter, chipset); } - -std::unique_ptr mlir::createConvertAMDGPUToROCDLPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp index 10ccd5c97783b..faea2412eb63c 100644 --- a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp +++ b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp @@ -26,7 +26,7 @@ #include "mlir/Transforms/Passes.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTAFFINETOSTANDARD +#define GEN_PASS_DEF_LOWERAFFINE #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -553,8 +553,7 @@ void mlir::populateAffineToVectorConversionPatterns( } namespace { -class LowerAffinePass - : public impl::ConvertAffineToStandardBase { +class LowerAffine : public impl::LowerAffineBase { void runOnOperation() override { RewritePatternSet patterns(&getContext()); populateAffineToStdConversionPatterns(patterns); @@ -569,9 +568,3 @@ class LowerAffinePass } }; } // namespace - -/// Lowers If and For operations within a function into their lower level CFG -/// equivalent blocks. -std::unique_ptr mlir::createLowerAffinePass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp b/mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp index 382b93cd9f21b..5887e37b7f0b4 100644 --- a/mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp +++ b/mlir/lib/Conversion/ArithToSPIRV/ArithToSPIRV.cpp @@ -27,7 +27,7 @@ #include namespace mlir { -#define GEN_PASS_DEF_CONVERTARITHTOSPIRV +#define GEN_PASS_DEF_CONVERTARITHTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -1337,7 +1337,9 @@ void mlir::arith::populateArithToSPIRVPatterns( namespace { struct ConvertArithToSPIRVPass - : public impl::ConvertArithToSPIRVBase { + : public impl::ConvertArithToSPIRVPassBase { + using ConvertArithToSPIRVPassBase::ConvertArithToSPIRVPassBase; + void runOnOperation() override { Operation *op = getOperation(); spirv::TargetEnvAttr targetAttr = spirv::lookupTargetEnvOrDefault(op); @@ -1363,7 +1365,3 @@ struct ConvertArithToSPIRVPass } }; } // namespace - -std::unique_ptr> mlir::arith::createConvertArithToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.cpp b/mlir/lib/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.cpp index de8bfd6a17103..9c6de938a7108 100644 --- a/mlir/lib/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.cpp +++ b/mlir/lib/Conversion/ArmNeon2dToIntr/ArmNeon2dToIntr.cpp @@ -16,7 +16,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTARMNEON2DTOINTR +#define GEN_PASS_DEF_CONVERTARMNEON2DTOINTRPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -52,7 +52,7 @@ class Sdot2dLoweringPattern : public OpRewritePattern { }; class ConvertArmNeon2dToIntr - : public impl::ConvertArmNeon2dToIntrBase { + : public impl::ConvertArmNeon2dToIntrPassBase { void runOnOperation() override { auto *context = &getContext(); @@ -69,7 +69,3 @@ class ConvertArmNeon2dToIntr void mlir::populateConvertArmNeon2dToIntrPatterns(RewritePatternSet &patterns) { patterns.add(patterns.getContext()); } - -std::unique_ptr mlir::createConvertArmNeon2dToIntrPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ArmSMEToSCF/ArmSMEToSCF.cpp b/mlir/lib/Conversion/ArmSMEToSCF/ArmSMEToSCF.cpp index 411c9d2ebd838..6ed29903ea407 100644 --- a/mlir/lib/Conversion/ArmSMEToSCF/ArmSMEToSCF.cpp +++ b/mlir/lib/Conversion/ArmSMEToSCF/ArmSMEToSCF.cpp @@ -19,7 +19,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTARMSMETOSCF +#define GEN_PASS_DEF_CONVERTARMSMETOSCFPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -397,7 +397,7 @@ void mlir::populateArmSMEToSCFConversionPatterns(RewritePatternSet &patterns) { namespace { struct ConvertArmSMEToSCFPass - : public impl::ConvertArmSMEToSCFBase { + : public impl::ConvertArmSMEToSCFPassBase { void runOnOperation() override { RewritePatternSet patterns(&getContext()); ConversionTarget target(getContext()); @@ -412,7 +412,3 @@ struct ConvertArmSMEToSCFPass }; } // namespace - -std::unique_ptr mlir::createConvertArmSMEToSCFPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp b/mlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp index 06aedc5e139d3..0b5a5d8e71063 100644 --- a/mlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp +++ b/mlir/lib/Conversion/BufferizationToMemRef/BufferizationToMemRef.cpp @@ -24,7 +24,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTBUFFERIZATIONTOMEMREF +#define GEN_PASS_DEF_CONVERTBUFFERIZATIONTOMEMREFPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -121,7 +121,8 @@ struct CloneOpConversion : public OpConversionPattern { namespace { struct BufferizationToMemRefPass - : public impl::ConvertBufferizationToMemRefBase { + : public impl::ConvertBufferizationToMemRefPassBase< + BufferizationToMemRefPass> { BufferizationToMemRefPass() = default; void runOnOperation() override { @@ -167,7 +168,3 @@ struct BufferizationToMemRefPass } }; } // namespace - -std::unique_ptr mlir::createBufferizationToMemRefPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp index f2b50d109f8f6..050bedf67b542 100644 --- a/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp +++ b/mlir/lib/Conversion/ComplexToLibm/ComplexToLibm.cpp @@ -143,8 +143,3 @@ void ConvertComplexToLibmPass::runOnOperation() { if (failed(applyPartialConversion(module, target, std::move(patterns)))) signalPassFailure(); } - -std::unique_ptr> -mlir::createConvertComplexToLibmPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp b/mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp index 3df8ad47e4d33..ea25d5afaeeca 100644 --- a/mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp +++ b/mlir/lib/Conversion/ComplexToStandard/ComplexToStandard.cpp @@ -20,7 +20,7 @@ #include namespace mlir { -#define GEN_PASS_DEF_CONVERTCOMPLEXTOSTANDARD +#define GEN_PASS_DEF_CONVERTCOMPLEXTOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -1070,11 +1070,9 @@ void mlir::populateComplexToStandardConversionPatterns( namespace { struct ConvertComplexToStandardPass - : public impl::ConvertComplexToStandardBase { - ConvertComplexToStandardPass() = default; - ConvertComplexToStandardPass(const ConvertComplexToStandardOptions &options) - : impl::ConvertComplexToStandardBase( - options) {} + : public impl::ConvertComplexToStandardPassBase< + ConvertComplexToStandardPass> { + using ConvertComplexToStandardPassBase::ConvertComplexToStandardPassBase; void runOnOperation() override; }; @@ -1092,12 +1090,3 @@ void ConvertComplexToStandardPass::runOnOperation() { signalPassFailure(); } } // namespace - -std::unique_ptr mlir::createConvertComplexToStandardPass() { - return std::make_unique(); -} - -std::unique_ptr mlir::createConvertComplexToStandardPass( - ConvertComplexToStandardOptions options) { - return std::make_unique(std::move(options)); -} diff --git a/mlir/lib/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.cpp b/mlir/lib/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.cpp index a752b82eac7c3..a0ae39a353a95 100644 --- a/mlir/lib/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.cpp +++ b/mlir/lib/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRVPass.cpp @@ -17,7 +17,7 @@ #include "mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTCONTROLFLOWTOSPIRV +#define GEN_PASS_DEF_CONVERTCONTROLFLOWTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -26,8 +26,9 @@ using namespace mlir; namespace { /// A pass converting MLIR ControlFlow operations into the SPIR-V dialect. class ConvertControlFlowToSPIRVPass final - : public impl::ConvertControlFlowToSPIRVBase< + : public impl::ConvertControlFlowToSPIRVPassBase< ConvertControlFlowToSPIRVPass> { + using ConvertControlFlowToSPIRVPassBase::ConvertControlFlowToSPIRVPassBase; void runOnOperation() override; }; } // namespace @@ -52,7 +53,3 @@ void ConvertControlFlowToSPIRVPass::runOnOperation() { if (failed(applyPartialConversion(op, *target, std::move(patterns)))) return signalPassFailure(); } - -std::unique_ptr> mlir::createConvertControlFlowToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp index 673ba814d338f..2cf44051ce5f5 100644 --- a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp +++ b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp @@ -280,7 +280,3 @@ void mlir::registerConvertToLLVMDependentDialectLoading( DialectRegistry ®istry) { registry.addExtensions(); } - -std::unique_ptr mlir::createConvertToLLVMPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/FuncToSPIRV/FuncToSPIRVPass.cpp b/mlir/lib/Conversion/FuncToSPIRV/FuncToSPIRVPass.cpp index 9fffc5e3182e9..572a432d6d641 100644 --- a/mlir/lib/Conversion/FuncToSPIRV/FuncToSPIRVPass.cpp +++ b/mlir/lib/Conversion/FuncToSPIRV/FuncToSPIRVPass.cpp @@ -17,7 +17,7 @@ #include "mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTFUNCTOSPIRV +#define GEN_PASS_DEF_CONVERTFUNCTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -26,7 +26,8 @@ using namespace mlir; namespace { /// A pass converting MLIR Func operations into the SPIR-V dialect. class ConvertFuncToSPIRVPass - : public impl::ConvertFuncToSPIRVBase { + : public impl::ConvertFuncToSPIRVPassBase { + using ConvertFuncToSPIRVPassBase::ConvertFuncToSPIRVPassBase; void runOnOperation() override; }; } // namespace @@ -50,7 +51,3 @@ void ConvertFuncToSPIRVPass::runOnOperation() { if (failed(applyPartialConversion(op, *target, std::move(patterns)))) return signalPassFailure(); } - -std::unique_ptr> mlir::createConvertFuncToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp b/mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp index 4d1f35c767304..9504bcb0eff09 100644 --- a/mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp +++ b/mlir/lib/Conversion/LinalgToStandard/LinalgToStandard.cpp @@ -18,7 +18,7 @@ #include "mlir/Pass/Pass.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTLINALGTOSTANDARD +#define GEN_PASS_DEF_CONVERTLINALGTOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -133,7 +133,8 @@ void mlir::linalg::populateLinalgToStandardConversionPatterns( namespace { struct ConvertLinalgToStandardPass - : public impl::ConvertLinalgToStandardBase { + : public impl::ConvertLinalgToStandardPassBase< + ConvertLinalgToStandardPass> { void runOnOperation() override; }; } // namespace @@ -150,8 +151,3 @@ void ConvertLinalgToStandardPass::runOnOperation() { if (failed(applyFullConversion(module, target, std::move(patterns)))) signalPassFailure(); } - -std::unique_ptr> -mlir::createConvertLinalgToStandardPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp index 12a6d9c3452df..c21ee9652b499 100644 --- a/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp +++ b/mlir/lib/Conversion/MathToLibm/MathToLibm.cpp @@ -20,7 +20,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTMATHTOLIBM +#define GEN_PASS_DEF_CONVERTMATHTOLIBMPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -212,7 +212,7 @@ void mlir::populateMathToLibmConversionPatterns(RewritePatternSet &patterns, namespace { struct ConvertMathToLibmPass - : public impl::ConvertMathToLibmBase { + : public impl::ConvertMathToLibmPassBase { void runOnOperation() override; }; } // namespace @@ -230,7 +230,3 @@ void ConvertMathToLibmPass::runOnOperation() { if (failed(applyPartialConversion(module, target, std::move(patterns)))) signalPassFailure(); } - -std::unique_ptr> mlir::createConvertMathToLibmPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/MathToSPIRV/MathToSPIRVPass.cpp b/mlir/lib/Conversion/MathToSPIRV/MathToSPIRVPass.cpp index fac9c7e3a4f7a..2f0ea2e523fa6 100644 --- a/mlir/lib/Conversion/MathToSPIRV/MathToSPIRVPass.cpp +++ b/mlir/lib/Conversion/MathToSPIRV/MathToSPIRVPass.cpp @@ -15,10 +15,9 @@ #include "mlir/Conversion/MathToSPIRV/MathToSPIRV.h" #include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h" #include "mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h" -#include "mlir/Pass/Pass.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTMATHTOSPIRV +#define GEN_PASS_DEF_CONVERTMATHTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -27,7 +26,7 @@ using namespace mlir; namespace { /// A pass converting MLIR Math operations into the SPIR-V dialect. class ConvertMathToSPIRVPass - : public impl::ConvertMathToSPIRVBase { + : public impl::ConvertMathToSPIRVPassBase { void runOnOperation() override; }; } // namespace @@ -52,7 +51,3 @@ void ConvertMathToSPIRVPass::runOnOperation() { if (failed(applyPartialConversion(op, *target, std::move(patterns)))) return signalPassFailure(); } - -std::unique_ptr> mlir::createConvertMathToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.cpp b/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.cpp index 2e383b916970b..5d53aef199d52 100644 --- a/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.cpp +++ b/mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRVPass.cpp @@ -17,7 +17,7 @@ #include "mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTMEMREFTOSPIRV +#define GEN_PASS_DEF_CONVERTMEMREFTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -26,7 +26,8 @@ using namespace mlir; namespace { /// A pass converting MLIR MemRef operations into the SPIR-V dialect. class ConvertMemRefToSPIRVPass - : public impl::ConvertMemRefToSPIRVBase { + : public impl::ConvertMemRefToSPIRVPassBase { + using ConvertMemRefToSPIRVPassBase::ConvertMemRefToSPIRVPassBase; void runOnOperation() override; }; } // namespace @@ -54,7 +55,3 @@ void ConvertMemRefToSPIRVPass::runOnOperation() { if (failed(applyPartialConversion(op, *target, std::move(patterns)))) return signalPassFailure(); } - -std::unique_ptr> mlir::createConvertMemRefToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/MeshToMPI/MeshToMPI.cpp b/mlir/lib/Conversion/MeshToMPI/MeshToMPI.cpp index eb265c621564a..48b3764d520c2 100644 --- a/mlir/lib/Conversion/MeshToMPI/MeshToMPI.cpp +++ b/mlir/lib/Conversion/MeshToMPI/MeshToMPI.cpp @@ -431,8 +431,3 @@ struct ConvertMeshToMPIPass }; } // namespace - -// Create a pass that convert Mesh to MPI -std::unique_ptr<::mlir::Pass> mlir::createConvertMeshToMPIPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/OpenACCToSCF/OpenACCToSCF.cpp b/mlir/lib/Conversion/OpenACCToSCF/OpenACCToSCF.cpp index 54e6bec12b897..8950985d3b67b 100644 --- a/mlir/lib/Conversion/OpenACCToSCF/OpenACCToSCF.cpp +++ b/mlir/lib/Conversion/OpenACCToSCF/OpenACCToSCF.cpp @@ -16,7 +16,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTOPENACCTOSCF +#define GEN_PASS_DEF_CONVERTOPENACCTOSCFPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -66,7 +66,7 @@ void mlir::populateOpenACCToSCFConversionPatterns(RewritePatternSet &patterns) { namespace { struct ConvertOpenACCToSCFPass - : public impl::ConvertOpenACCToSCFBase { + : public impl::ConvertOpenACCToSCFPassBase { void runOnOperation() override; }; } // namespace @@ -94,7 +94,3 @@ void ConvertOpenACCToSCFPass::runOnOperation() { if (failed(applyPartialConversion(op, target, std::move(patterns)))) signalPassFailure(); } - -std::unique_ptr> mlir::createConvertOpenACCToSCFPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp b/mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp index b00cd0dee3ae8..3b4209d47c5c2 100644 --- a/mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp +++ b/mlir/lib/Conversion/PDLToPDLInterp/PDLToPDLInterp.cpp @@ -21,7 +21,7 @@ #include "llvm/ADT/TypeSwitch.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTPDLTOPDLINTERP +#define GEN_PASS_DEF_CONVERTPDLTOPDLINTERPPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -967,7 +967,7 @@ void PatternLowering::generateOperationResultTypeRewriter( namespace { struct PDLToPDLInterpPass - : public impl::ConvertPDLToPDLInterpBase { + : public impl::ConvertPDLToPDLInterpPassBase { PDLToPDLInterpPass() = default; PDLToPDLInterpPass(const PDLToPDLInterpPass &rhs) = default; PDLToPDLInterpPass(DenseMap &configMap) @@ -1013,10 +1013,7 @@ void PDLToPDLInterpPass::runOnOperation() { } } -std::unique_ptr> mlir::createPDLToPDLInterpPass() { - return std::make_unique(); -} -std::unique_ptr> mlir::createPDLToPDLInterpPass( +std::unique_ptr> mlir::createConvertPDLToPDLInterpPass( DenseMap &configMap) { return std::make_unique(configMap); } diff --git a/mlir/lib/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.cpp b/mlir/lib/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.cpp index 2ce6dcbb49014..b60d711a47367 100644 --- a/mlir/lib/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.cpp +++ b/mlir/lib/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.cpp @@ -13,7 +13,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_RECONCILEUNREALIZEDCASTS +#define GEN_PASS_DEF_RECONCILEUNREALIZEDCASTSPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -36,7 +36,7 @@ namespace { /// In the above example, %0 can be used instead of %3 and all cast ops are /// folded away. struct ReconcileUnrealizedCasts - : public impl::ReconcileUnrealizedCastsBase { + : public impl::ReconcileUnrealizedCastsPassBase { ReconcileUnrealizedCasts() = default; void runOnOperation() override { @@ -48,7 +48,3 @@ struct ReconcileUnrealizedCasts }; } // namespace - -std::unique_ptr mlir::createReconcileUnrealizedCastsPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/SCFToControlFlow/SCFToControlFlow.cpp b/mlir/lib/Conversion/SCFToControlFlow/SCFToControlFlow.cpp index 45f3bcfa393be..114d634629d77 100644 --- a/mlir/lib/Conversion/SCFToControlFlow/SCFToControlFlow.cpp +++ b/mlir/lib/Conversion/SCFToControlFlow/SCFToControlFlow.cpp @@ -27,7 +27,7 @@ #include "mlir/Transforms/Passes.h" namespace mlir { -#define GEN_PASS_DEF_SCFTOCONTROLFLOW +#define GEN_PASS_DEF_SCFTOCONTROLFLOWPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -37,7 +37,7 @@ using namespace mlir::scf; namespace { struct SCFToControlFlowPass - : public impl::SCFToControlFlowBase { + : public impl::SCFToControlFlowPassBase { void runOnOperation() override; }; @@ -726,7 +726,3 @@ void SCFToControlFlowPass::runOnOperation() { applyPartialConversion(getOperation(), target, std::move(patterns)))) signalPassFailure(); } - -std::unique_ptr mlir::createConvertSCFToCFPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/SCFToGPU/SCFToGPUPass.cpp b/mlir/lib/Conversion/SCFToGPU/SCFToGPUPass.cpp index 572753986b42e..8e2efbc7f4280 100644 --- a/mlir/lib/Conversion/SCFToGPU/SCFToGPUPass.cpp +++ b/mlir/lib/Conversion/SCFToGPU/SCFToGPUPass.cpp @@ -20,8 +20,8 @@ #include "llvm/Support/CommandLine.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTAFFINEFORTOGPU -#define GEN_PASS_DEF_CONVERTPARALLELLOOPTOGPU +#define GEN_PASS_DEF_CONVERTAFFINEFORTOGPUPASS +#define GEN_PASS_DEF_CONVERTPARALLELLOOPTOGPUPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -32,12 +32,9 @@ namespace { // A pass that traverses top-level loops in the function and converts them to // GPU launch operations. Nested launches are not allowed, so this does not // walk the function recursively to avoid considering nested loops. -struct ForLoopMapper : public impl::ConvertAffineForToGPUBase { - ForLoopMapper() = default; - ForLoopMapper(unsigned numBlockDims, unsigned numThreadDims) { - this->numBlockDims = numBlockDims; - this->numThreadDims = numThreadDims; - } +struct ForLoopMapper + : public impl::ConvertAffineForToGPUPassBase { + using ConvertAffineForToGPUPassBase::ConvertAffineForToGPUPassBase; void runOnOperation() override { for (Operation &op : llvm::make_early_inc_range( @@ -52,7 +49,7 @@ struct ForLoopMapper : public impl::ConvertAffineForToGPUBase { }; struct ParallelLoopToGpuPass - : public impl::ConvertParallelLoopToGpuBase { + : public impl::ConvertParallelLoopToGpuPassBase { void runOnOperation() override { RewritePatternSet patterns(&getContext()); populateParallelLoopToGPUPatterns(patterns); @@ -67,16 +64,3 @@ struct ParallelLoopToGpuPass }; } // namespace - -std::unique_ptr> -mlir::createAffineForToGPUPass(unsigned numBlockDims, unsigned numThreadDims) { - return std::make_unique(numBlockDims, numThreadDims); -} -std::unique_ptr> -mlir::createAffineForToGPUPass() { - return std::make_unique(); -} - -std::unique_ptr mlir::createParallelLoopToGpuPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ShapeToStandard/ConvertShapeConstraints.cpp b/mlir/lib/Conversion/ShapeToStandard/ConvertShapeConstraints.cpp index d92027a5e3d46..1f55fb7456f66 100644 --- a/mlir/lib/Conversion/ShapeToStandard/ConvertShapeConstraints.cpp +++ b/mlir/lib/Conversion/ShapeToStandard/ConvertShapeConstraints.cpp @@ -18,7 +18,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTSHAPECONSTRAINTS +#define GEN_PASS_DEF_CONVERTSHAPECONSTRAINTSPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -54,7 +54,7 @@ namespace { // is emitted, witnesses are satisfied, so they are replace with // `shape.const_witness true`. class ConvertShapeConstraints - : public impl::ConvertShapeConstraintsBase { + : public impl::ConvertShapeConstraintsPassBase { void runOnOperation() override { auto *func = getOperation(); auto *context = &getContext(); @@ -67,7 +67,3 @@ class ConvertShapeConstraints } }; } // namespace - -std::unique_ptr mlir::createConvertShapeConstraintsPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp index de649f730ee9d..bbe1490137bf8 100644 --- a/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp +++ b/mlir/lib/Conversion/ShapeToStandard/ShapeToStandard.cpp @@ -20,7 +20,7 @@ #include "llvm/ADT/STLExtras.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTSHAPETOSTANDARD +#define GEN_PASS_DEF_CONVERTSHAPETOSTANDARDPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -681,7 +681,7 @@ namespace { namespace { /// Conversion pass. class ConvertShapeToStandardPass - : public impl::ConvertShapeToStandardBase { + : public impl::ConvertShapeToStandardPassBase { void runOnOperation() override; }; @@ -727,8 +727,3 @@ void mlir::populateShapeToStandardConversionPatterns( ToExtentTensorOpConversion>(patterns.getContext()); // clang-format on } - -std::unique_ptr> -mlir::createConvertShapeToStandardPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/TensorToLinalg/TensorToLinalgPass.cpp b/mlir/lib/Conversion/TensorToLinalg/TensorToLinalgPass.cpp index c83434cc27524..5acfcfe1ece95 100644 --- a/mlir/lib/Conversion/TensorToLinalg/TensorToLinalgPass.cpp +++ b/mlir/lib/Conversion/TensorToLinalg/TensorToLinalgPass.cpp @@ -18,7 +18,7 @@ #include "mlir/Dialect/Tensor/IR/Tensor.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTTENSORTOLINALG +#define GEN_PASS_DEF_CONVERTTENSORTOLINALGPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -27,7 +27,7 @@ using namespace mlir; namespace { /// A pass converting MLIR Tensor operations into the Linalg dialect. class ConvertTensorToLinalgPass - : public impl::ConvertTensorToLinalgBase { + : public impl::ConvertTensorToLinalgPassBase { void runOnOperation() override { auto &context = getContext(); ConversionTarget target(context); @@ -45,8 +45,3 @@ class ConvertTensorToLinalgPass } }; } // namespace - -std::unique_ptr> -mlir::createConvertTensorToLinalgPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/TensorToSPIRV/TensorToSPIRVPass.cpp b/mlir/lib/Conversion/TensorToSPIRV/TensorToSPIRVPass.cpp index 313172614268d..9e98dc7d7aaf6 100644 --- a/mlir/lib/Conversion/TensorToSPIRV/TensorToSPIRVPass.cpp +++ b/mlir/lib/Conversion/TensorToSPIRV/TensorToSPIRVPass.cpp @@ -19,7 +19,7 @@ #include "mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTTENSORTOSPIRV +#define GEN_PASS_DEF_CONVERTTENSORTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -28,7 +28,9 @@ using namespace mlir; namespace { /// A pass converting MLIR Tensor operations into the SPIR-V dialect. class ConvertTensorToSPIRVPass - : public impl::ConvertTensorToSPIRVBase { + : public impl::ConvertTensorToSPIRVPassBase { + using ConvertTensorToSPIRVPassBase::ConvertTensorToSPIRVPassBase; + void runOnOperation() override { MLIRContext *context = &getContext(); Operation *op = getOperation(); @@ -53,7 +55,3 @@ class ConvertTensorToSPIRVPass } }; } // namespace - -std::unique_ptr> mlir::createConvertTensorToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/TosaToArith/TosaToArithPass.cpp b/mlir/lib/Conversion/TosaToArith/TosaToArithPass.cpp index de82c0335c985..15ddd3f5c16f1 100644 --- a/mlir/lib/Conversion/TosaToArith/TosaToArithPass.cpp +++ b/mlir/lib/Conversion/TosaToArith/TosaToArithPass.cpp @@ -21,7 +21,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_TOSATOARITH +#define GEN_PASS_DEF_TOSATOARITHPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -29,9 +29,8 @@ using namespace mlir; using namespace tosa; namespace { -struct TosaToArith : public impl::TosaToArithBase { -public: - TosaToArith(TosaToArithOptions &options) : TosaToArithBase(options) {} +struct TosaToArith : public impl::TosaToArithPassBase { + using TosaToArithPassBase::TosaToArithPassBase; void runOnOperation() override { RewritePatternSet patterns(&getContext()); @@ -53,9 +52,3 @@ struct TosaToArith : public impl::TosaToArithBase { } }; } // namespace - -std::unique_ptr mlir::tosa::createTosaToArith(bool includeApplyRescale, - bool use32BitApplyRescale) { - TosaToArithOptions options = {includeApplyRescale, use32BitApplyRescale}; - return std::make_unique(options); -} diff --git a/mlir/lib/Conversion/TosaToSCF/TosaToSCFPass.cpp b/mlir/lib/Conversion/TosaToSCF/TosaToSCFPass.cpp index d14535029132f..3fd72223d3139 100644 --- a/mlir/lib/Conversion/TosaToSCF/TosaToSCFPass.cpp +++ b/mlir/lib/Conversion/TosaToSCF/TosaToSCFPass.cpp @@ -23,7 +23,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_TOSATOSCF +#define GEN_PASS_DEF_TOSATOSCFPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -31,7 +31,7 @@ using namespace mlir; using namespace tosa; namespace { -struct TosaToSCF : public impl::TosaToSCFBase { +struct TosaToSCF : public impl::TosaToSCFPassBase { public: void runOnOperation() override { RewritePatternSet patterns(&getContext()); @@ -48,10 +48,6 @@ struct TosaToSCF : public impl::TosaToSCFBase { }; } // namespace -std::unique_ptr mlir::tosa::createTosaToSCF() { - return std::make_unique(); -} - void mlir::tosa::addTosaToSCFPasses(OpPassManager &pm) { - pm.addNestedPass(createTosaToSCF()); + pm.addNestedPass(createTosaToSCFPass()); } diff --git a/mlir/lib/Conversion/TosaToTensor/TosaToTensorPass.cpp b/mlir/lib/Conversion/TosaToTensor/TosaToTensorPass.cpp index fa1c2cf7fba98..e1dbe7db30480 100644 --- a/mlir/lib/Conversion/TosaToTensor/TosaToTensorPass.cpp +++ b/mlir/lib/Conversion/TosaToTensor/TosaToTensorPass.cpp @@ -22,7 +22,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_TOSATOTENSOR +#define GEN_PASS_DEF_TOSATOTENSORPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -30,7 +30,7 @@ using namespace mlir; using namespace tosa; namespace { -struct TosaToTensor : public impl::TosaToTensorBase { +struct TosaToTensor : public impl::TosaToTensorPassBase { public: void runOnOperation() override { RewritePatternSet patterns(&getContext()); @@ -53,7 +53,3 @@ struct TosaToTensor : public impl::TosaToTensorBase { } }; } // namespace - -std::unique_ptr mlir::tosa::createTosaToTensor() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/VectorToArmSME/VectorToArmSMEPass.cpp b/mlir/lib/Conversion/VectorToArmSME/VectorToArmSMEPass.cpp index 7419276651ae2..6d1bc71cf707f 100644 --- a/mlir/lib/Conversion/VectorToArmSME/VectorToArmSMEPass.cpp +++ b/mlir/lib/Conversion/VectorToArmSME/VectorToArmSMEPass.cpp @@ -14,7 +14,7 @@ #include "mlir/Transforms/GreedyPatternRewriteDriver.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTVECTORTOARMSME +#define GEN_PASS_DEF_CONVERTVECTORTOARMSMEPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -23,7 +23,7 @@ using namespace mlir::vector; namespace { struct ConvertVectorToArmSMEPass - : public impl::ConvertVectorToArmSMEBase { + : public impl::ConvertVectorToArmSMEPassBase { void runOnOperation() override; }; @@ -35,7 +35,3 @@ void ConvertVectorToArmSMEPass::runOnOperation() { (void)applyPatternsGreedily(getOperation(), std::move(patterns)); } - -std::unique_ptr mlir::createConvertVectorToArmSMEPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRVPass.cpp b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRVPass.cpp index 0735e1ee0c677..710c74a70f9e7 100644 --- a/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRVPass.cpp +++ b/mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRVPass.cpp @@ -21,7 +21,7 @@ #include "mlir/Transforms/DialectConversion.h" namespace mlir { -#define GEN_PASS_DEF_CONVERTVECTORTOSPIRV +#define GEN_PASS_DEF_CONVERTVECTORTOSPIRVPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -29,7 +29,7 @@ using namespace mlir; namespace { struct ConvertVectorToSPIRVPass - : public impl::ConvertVectorToSPIRVBase { + : public impl::ConvertVectorToSPIRVPassBase { void runOnOperation() override; }; } // namespace @@ -56,7 +56,3 @@ void ConvertVectorToSPIRVPass::runOnOperation() { if (failed(applyPartialConversion(op, *target, std::move(patterns)))) return signalPassFailure(); } - -std::unique_ptr> mlir::createConvertVectorToSPIRVPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Conversion/VectorToXeGPU/VectorToXeGPU.cpp b/mlir/lib/Conversion/VectorToXeGPU/VectorToXeGPU.cpp index 2d915b83f9a77..61b55c57240ce 100644 --- a/mlir/lib/Conversion/VectorToXeGPU/VectorToXeGPU.cpp +++ b/mlir/lib/Conversion/VectorToXeGPU/VectorToXeGPU.cpp @@ -329,7 +329,3 @@ void mlir::populateVectorToXeGPUConversionPatterns( patterns.add(patterns.getContext()); } - -std::unique_ptr mlir::createConvertVectorToXeGPUPass() { - return std::make_unique(); -} diff --git a/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp b/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp index 20d7372eef85d..998d3b7b8636c 100644 --- a/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp +++ b/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp @@ -48,7 +48,7 @@ void buildCommonPassPipeline( pm.addPass(createConvertNVGPUToNVVMPass()); pm.addPass(createGpuKernelOutliningPass()); pm.addPass(createConvertVectorToSCFPass()); - pm.addPass(createConvertSCFToCFPass()); + pm.addPass(createSCFToControlFlowPass()); pm.addPass(createConvertNVVMToLLVMPass()); pm.addPass(createConvertFuncToLLVMPass()); pm.addPass(memref::createExpandStridedMetadataPass()); @@ -59,7 +59,7 @@ void buildCommonPassPipeline( nvvmTargetOptions.features = options.cubinFeatures; nvvmTargetOptions.optLevel = options.optLevel; pm.addPass(createGpuNVVMAttachTarget(nvvmTargetOptions)); - pm.addPass(createLowerAffinePass()); + pm.addPass(createLowerAffine()); pm.addPass(createArithToLLVMConversionPass()); ConvertIndexToLLVMPassOptions convertIndexToLLVMPassOpt; convertIndexToLLVMPassOpt.indexBitwidth = options.indexBitWidth; diff --git a/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp b/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp index 018233dc767b4..ea5bec5dc0e9e 100644 --- a/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp +++ b/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp @@ -55,7 +55,7 @@ void mlir::sparse_tensor::buildSparsifier(OpPassManager &pm, if (gpuCodegen) { pm.addPass(createSparseGPUCodegenPass()); pm.addNestedPass(createStripDebugInfoPass()); - pm.addNestedPass(createConvertSCFToCFPass()); + pm.addNestedPass(createSCFToControlFlowPass()); pm.addNestedPass(createConvertGpuOpsToNVVMOps()); } @@ -66,9 +66,9 @@ void mlir::sparse_tensor::buildSparsifier(OpPassManager &pm, pm.addNestedPass(createConvertLinalgToLoopsPass()); pm.addNestedPass(createConvertVectorToSCFPass()); pm.addNestedPass(memref::createExpandReallocPass()); - pm.addNestedPass(createConvertSCFToCFPass()); + pm.addNestedPass(createSCFToControlFlowPass()); pm.addPass(memref::createExpandStridedMetadataPass()); - pm.addPass(createLowerAffinePass()); + pm.addPass(createLowerAffine()); pm.addPass( createConvertVectorToLLVMPass(options.convertVectorToLLVMOptions())); pm.addPass(createFinalizeMemRefToLLVMConversionPass()); @@ -76,7 +76,7 @@ void mlir::sparse_tensor::buildSparsifier(OpPassManager &pm, pm.addNestedPass(arith::createArithExpandOpsPass()); pm.addNestedPass(createConvertMathToLLVMPass()); pm.addPass(createConvertMathToLibmPass()); - pm.addPass(createConvertComplexToLibmPass()); + pm.addPass(createConvertComplexToLibm()); pm.addPass( createConvertVectorToLLVMPass(options.convertVectorToLLVMOptions())); pm.addPass(createConvertComplexToLLVMPass()); diff --git a/mlir/lib/Rewrite/FrozenRewritePatternSet.cpp b/mlir/lib/Rewrite/FrozenRewritePatternSet.cpp index 17fe02df9f66c..c022ff4b8da49 100644 --- a/mlir/lib/Rewrite/FrozenRewritePatternSet.cpp +++ b/mlir/lib/Rewrite/FrozenRewritePatternSet.cpp @@ -43,7 +43,7 @@ convertPDLToPDLInterp(ModuleOp pdlModule, // mode. pdlPipeline.enableVerifier(false); #endif - pdlPipeline.addPass(createPDLToPDLInterpPass(configMap)); + pdlPipeline.addPass(createConvertPDLToPDLInterpPass(configMap)); if (failed(pdlPipeline.run(pdlModule))) return failure(); diff --git a/mlir/test/lib/Dialect/ArmSME/TestLowerToArmSME.cpp b/mlir/test/lib/Dialect/ArmSME/TestLowerToArmSME.cpp index a220791969d53..ab38b3e1012b4 100644 --- a/mlir/test/lib/Dialect/ArmSME/TestLowerToArmSME.cpp +++ b/mlir/test/lib/Dialect/ArmSME/TestLowerToArmSME.cpp @@ -77,7 +77,7 @@ void buildTestLowerToArmSME(OpPassManager &pm, /*ifRequiredByOps=*/true)); // Convert SCF to CF (required for ArmSME tile allocation). - pm.addPass(createConvertSCFToCFPass()); + pm.addPass(createSCFToControlFlowPass()); // Convert ArmSME to LLVM. pm.addNestedPass( diff --git a/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp b/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp index fca58b6a17062..380d39065ca37 100644 --- a/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp +++ b/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp @@ -53,9 +53,9 @@ void buildTestLowerToLLVM(OpPassManager &pm, // Blanket-convert any remaining linalg ops to loops if any remain. pm.addNestedPass(createConvertLinalgToLoopsPass()); // Blanket-convert any remaining affine ops if any remain. - pm.addPass(createLowerAffinePass()); + pm.addPass(createLowerAffine()); // Convert SCF to CF (always needed). - pm.addPass(createConvertSCFToCFPass()); + pm.addPass(createSCFToControlFlowPass()); // Sprinkle some cleanups. pm.addPass(createCanonicalizerPass()); pm.addPass(createCSEPass()); @@ -68,7 +68,7 @@ void buildTestLowerToLLVM(OpPassManager &pm, // Expand complicated MemRef operations before lowering them. pm.addPass(memref::createExpandStridedMetadataPass()); // The expansion may create affine expressions. Get rid of them. - pm.addPass(createLowerAffinePass()); + pm.addPass(createLowerAffine()); // Convert MemRef to LLVM (always needed). pm.addPass(createFinalizeMemRefToLLVMConversionPass()); // Convert Func to LLVM (always needed). From 46c6160e28029c5626a4af8227b075b895ed3eb5 Mon Sep 17 00:00:00 2001 From: lorenzo chelini Date: Sun, 16 Feb 2025 17:41:49 +0100 Subject: [PATCH 2/3] consistent naming --- .../mlir/Conversion/AffineToStandard/AffineToStandard.h | 7 +------ mlir/include/mlir/Conversion/Passes.td | 2 +- mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp | 4 ++-- mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp | 2 +- .../SparseTensor/Pipelines/SparseTensorPipelines.cpp | 2 +- mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp | 4 ++-- 6 files changed, 8 insertions(+), 13 deletions(-) diff --git a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h index 893c2455fa587..2811d5e4a0f84 100644 --- a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h +++ b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h @@ -24,7 +24,7 @@ namespace affine { class AffineForOp; } // namespace affine -#define GEN_PASS_DECL_LOWERAFFINE +#define GEN_PASS_DECL_LOWERAFFINEPASS #include "mlir/Conversion/Passes.h.inc" /// Collect a set of patterns to convert from the Affine dialect to the Standard @@ -44,11 +44,6 @@ Value lowerAffineLowerBound(affine::AffineForOp op, OpBuilder &builder); /// standard arithmetic operations. Value lowerAffineUpperBound(affine::AffineForOp op, OpBuilder &builder); -/// Lowers affine control flow operations (ForStmt, IfStmt and AffineApplyOp) -/// to equivalent lower-level constructs (flow of basic blocks and arithmetic -/// primitives). -std::unique_ptr createLowerAffinePass(); - } // namespace mlir #endif // MLIR_CONVERSION_AFFINETOSTANDARD_AFFINETOSTANDARD_H diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td index 0479f32c85341..cccdf0a8518bf 100644 --- a/mlir/include/mlir/Conversion/Passes.td +++ b/mlir/include/mlir/Conversion/Passes.td @@ -42,7 +42,7 @@ def ConvertToLLVMPass : Pass<"convert-to-llvm"> { // LowerAffine //===----------------------------------------------------------------------===// -def LowerAffine : Pass<"lower-affine"> { +def LowerAffinePass : Pass<"lower-affine"> { let summary = "Lower Affine operations to a combination of Arith and SCF " "operations"; let description = [{ diff --git a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp index faea2412eb63c..4fbe6a03f6bad 100644 --- a/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp +++ b/mlir/lib/Conversion/AffineToStandard/AffineToStandard.cpp @@ -26,7 +26,7 @@ #include "mlir/Transforms/Passes.h" namespace mlir { -#define GEN_PASS_DEF_LOWERAFFINE +#define GEN_PASS_DEF_LOWERAFFINEPASS #include "mlir/Conversion/Passes.h.inc" } // namespace mlir @@ -553,7 +553,7 @@ void mlir::populateAffineToVectorConversionPatterns( } namespace { -class LowerAffine : public impl::LowerAffineBase { +class LowerAffine : public impl::LowerAffinePassBase { void runOnOperation() override { RewritePatternSet patterns(&getContext()); populateAffineToStdConversionPatterns(patterns); diff --git a/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp b/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp index 998d3b7b8636c..8dcf6bab127a6 100644 --- a/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp +++ b/mlir/lib/Dialect/GPU/Pipelines/GPUToNVVMPipeline.cpp @@ -59,7 +59,7 @@ void buildCommonPassPipeline( nvvmTargetOptions.features = options.cubinFeatures; nvvmTargetOptions.optLevel = options.optLevel; pm.addPass(createGpuNVVMAttachTarget(nvvmTargetOptions)); - pm.addPass(createLowerAffine()); + pm.addPass(createLowerAffinePass()); pm.addPass(createArithToLLVMConversionPass()); ConvertIndexToLLVMPassOptions convertIndexToLLVMPassOpt; convertIndexToLLVMPassOpt.indexBitwidth = options.indexBitWidth; diff --git a/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp b/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp index ea5bec5dc0e9e..3b97786e58155 100644 --- a/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp +++ b/mlir/lib/Dialect/SparseTensor/Pipelines/SparseTensorPipelines.cpp @@ -68,7 +68,7 @@ void mlir::sparse_tensor::buildSparsifier(OpPassManager &pm, pm.addNestedPass(memref::createExpandReallocPass()); pm.addNestedPass(createSCFToControlFlowPass()); pm.addPass(memref::createExpandStridedMetadataPass()); - pm.addPass(createLowerAffine()); + pm.addPass(createLowerAffinePass()); pm.addPass( createConvertVectorToLLVMPass(options.convertVectorToLLVMOptions())); pm.addPass(createFinalizeMemRefToLLVMConversionPass()); diff --git a/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp b/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp index 380d39065ca37..5a2529d626098 100644 --- a/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp +++ b/mlir/test/lib/Dialect/LLVM/TestLowerToLLVM.cpp @@ -53,7 +53,7 @@ void buildTestLowerToLLVM(OpPassManager &pm, // Blanket-convert any remaining linalg ops to loops if any remain. pm.addNestedPass(createConvertLinalgToLoopsPass()); // Blanket-convert any remaining affine ops if any remain. - pm.addPass(createLowerAffine()); + pm.addPass(createLowerAffinePass()); // Convert SCF to CF (always needed). pm.addPass(createSCFToControlFlowPass()); // Sprinkle some cleanups. @@ -68,7 +68,7 @@ void buildTestLowerToLLVM(OpPassManager &pm, // Expand complicated MemRef operations before lowering them. pm.addPass(memref::createExpandStridedMetadataPass()); // The expansion may create affine expressions. Get rid of them. - pm.addPass(createLowerAffine()); + pm.addPass(createLowerAffinePass()); // Convert MemRef to LLVM (always needed). pm.addPass(createFinalizeMemRefToLLVMConversionPass()); // Convert Func to LLVM (always needed). From 93911408fbd4866f98a6fcd1c27cdb6232462b13 Mon Sep 17 00:00:00 2001 From: lorenzo chelini Date: Mon, 17 Feb 2025 07:37:51 +0100 Subject: [PATCH 3/3] fix flang build --- flang/include/flang/Optimizer/Support/InitFIR.h | 2 +- flang/lib/Optimizer/Passes/Pipelines.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flang/include/flang/Optimizer/Support/InitFIR.h b/flang/include/flang/Optimizer/Support/InitFIR.h index 94995ac6136ed..e999796c23718 100644 --- a/flang/include/flang/Optimizer/Support/InitFIR.h +++ b/flang/include/flang/Optimizer/Support/InitFIR.h @@ -112,7 +112,7 @@ inline void registerMLIRPassesForFortranTools() { mlir::affine::registerAffineLoopTilingPass(); mlir::affine::registerAffineDataCopyGenerationPass(); - mlir::registerConvertAffineToStandardPass(); + mlir::registerLowerAffinePass(); } /// Register the interfaces needed to lower to LLVM IR. diff --git a/flang/lib/Optimizer/Passes/Pipelines.cpp b/flang/lib/Optimizer/Passes/Pipelines.cpp index a5cda3b7cb875..afb50a9a79a4b 100644 --- a/flang/lib/Optimizer/Passes/Pipelines.cpp +++ b/flang/lib/Optimizer/Passes/Pipelines.cpp @@ -205,7 +205,7 @@ void createDefaultFIROptimizerPassPipeline(mlir::PassManager &pm, pm, fir::createStackReclaim); // convert control flow to CFG form fir::addCfgConversionPass(pm, pc); - pm.addPass(mlir::createConvertSCFToCFPass()); + pm.addPass(mlir::createSCFToControlFlowPass()); pm.addPass(mlir::createCanonicalizerPass(config)); pm.addPass(fir::createSimplifyRegionLite());