diff --git a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h --- a/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h +++ b/mlir/include/mlir/Conversion/AffineToStandard/AffineToStandard.h @@ -18,7 +18,6 @@ class AffineParallelOp; class Location; struct LogicalResult; -class MLIRContext; class OpBuilder; class Pass; class RewritePattern; @@ -43,13 +42,12 @@ /// Collect a set of patterns to convert from the Affine dialect to the Standard /// dialect, in particular convert structured affine control flow into CFG /// branch-based control flow. -void populateAffineToStdConversionPatterns(OwningRewritePatternList &patterns, - MLIRContext *ctx); +void populateAffineToStdConversionPatterns(OwningRewritePatternList &patterns); /// Collect a set of patterns to convert vector-related Affine ops to the Vector /// dialect. void populateAffineToVectorConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *ctx); + OwningRewritePatternList &patterns); /// Emit code that computes the lower bound of the given affine loop using /// standard arithmetic operations. diff --git a/mlir/include/mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h b/mlir/include/mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h --- a/mlir/include/mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h +++ b/mlir/include/mlir/Conversion/AsyncToLLVM/AsyncToLLVM.h @@ -33,8 +33,8 @@ /// the TypeConverter, but otherwise don't care what type conversions are /// happening. void populateAsyncStructuralTypeConversionsAndLegality( - MLIRContext *context, TypeConverter &typeConverter, - OwningRewritePatternList &patterns, ConversionTarget &target); + TypeConverter &typeConverter, OwningRewritePatternList &patterns, + ConversionTarget &target); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h b/mlir/include/mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h --- a/mlir/include/mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h +++ b/mlir/include/mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h @@ -21,8 +21,7 @@ /// Appends to a pattern list additional patterns for translating GPU Ops to /// SPIR-V ops. For a gpu.func to be converted, it should have a /// spv.entry_point_abi attribute. -void populateGPUToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateGPUToSPIRVPatterns(SPIRVTypeConverter &typeConverter, OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/LinalgToSPIRV/LinalgToSPIRV.h b/mlir/include/mlir/Conversion/LinalgToSPIRV/LinalgToSPIRV.h --- a/mlir/include/mlir/Conversion/LinalgToSPIRV/LinalgToSPIRV.h +++ b/mlir/include/mlir/Conversion/LinalgToSPIRV/LinalgToSPIRV.h @@ -20,8 +20,7 @@ /// Appends to a pattern list additional patterns for translating Linalg ops to /// SPIR-V ops. -void populateLinalgToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateLinalgToSPIRVPatterns(SPIRVTypeConverter &typeConverter, OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h b/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h --- a/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h +++ b/mlir/include/mlir/Conversion/LinalgToStandard/LinalgToStandard.h @@ -70,7 +70,7 @@ /// Populate the given list with patterns that convert from Linalg to Standard. void populateLinalgToStandardConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *ctx); + OwningRewritePatternList &patterns); } // namespace linalg diff --git a/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPU.h b/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPU.h --- a/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPU.h +++ b/mlir/include/mlir/Conversion/SCFToGPU/SCFToGPU.h @@ -42,8 +42,7 @@ /// Adds the conversion pattern from `scf.parallel` to `gpu.launch` to the /// provided pattern list. -void populateParallelLoopToGPUPatterns(OwningRewritePatternList &patterns, - MLIRContext *ctx); +void populateParallelLoopToGPUPatterns(OwningRewritePatternList &patterns); /// Configures the rewrite target such that only `scf.parallel` operations that /// are not rewritten by the provided patterns are legal. diff --git a/mlir/include/mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h b/mlir/include/mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h --- a/mlir/include/mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h +++ b/mlir/include/mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h @@ -15,7 +15,6 @@ #include namespace mlir { -class MLIRContext; class Pass; // Owning list of rewriting patterns. @@ -35,8 +34,7 @@ /// Collects a set of patterns to lower from scf.for, scf.if, and /// loop.terminator to CFG operations within the SPIR-V dialect. -void populateSCFToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateSCFToSPIRVPatterns(SPIRVTypeConverter &typeConverter, ScfToSPIRVContext &scfToSPIRVContext, OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/SCFToStandard/SCFToStandard.h b/mlir/include/mlir/Conversion/SCFToStandard/SCFToStandard.h --- a/mlir/include/mlir/Conversion/SCFToStandard/SCFToStandard.h +++ b/mlir/include/mlir/Conversion/SCFToStandard/SCFToStandard.h @@ -14,7 +14,6 @@ namespace mlir { struct LogicalResult; -class MLIRContext; class Pass; class RewritePattern; @@ -24,8 +23,7 @@ /// Collect a set of patterns to lower from scf.for, scf.if, and /// loop.terminator to CFG operations within the Standard dialect, in particular /// convert structured control flow into CFG branch-based control flow. -void populateLoopToStdConversionPatterns(OwningRewritePatternList &patterns, - MLIRContext *ctx); +void populateLoopToStdConversionPatterns(OwningRewritePatternList &patterns); /// Creates a pass to convert scf.for, scf.if and loop.terminator ops to CFG. std::unique_ptr createLowerToCFGPass(); diff --git a/mlir/include/mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h b/mlir/include/mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h --- a/mlir/include/mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h +++ b/mlir/include/mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h @@ -40,20 +40,17 @@ void populateSPIRVToLLVMTypeConversion(LLVMTypeConverter &typeConverter); /// Populates the given list with patterns that convert from SPIR-V to LLVM. -void populateSPIRVToLLVMConversionPatterns(MLIRContext *context, - LLVMTypeConverter &typeConverter, +void populateSPIRVToLLVMConversionPatterns(LLVMTypeConverter &typeConverter, OwningRewritePatternList &patterns); /// Populates the given list with patterns for function conversion from SPIR-V /// to LLVM. void populateSPIRVToLLVMFunctionConversionPatterns( - MLIRContext *context, LLVMTypeConverter &typeConverter, - OwningRewritePatternList &patterns); + LLVMTypeConverter &typeConverter, OwningRewritePatternList &patterns); /// Populates the given patterns for module conversion from SPIR-V to LLVM. void populateSPIRVToLLVMModuleConversionPatterns( - MLIRContext *context, LLVMTypeConverter &typeConverter, - OwningRewritePatternList &patterns); + LLVMTypeConverter &typeConverter, OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h b/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h --- a/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h +++ b/mlir/include/mlir/Conversion/ShapeToStandard/ShapeToStandard.h @@ -14,19 +14,18 @@ namespace mlir { class FuncOp; -class MLIRContext; class ModuleOp; template class OperationPass; class OwningRewritePatternList; void populateShapeToStandardConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *ctx); + OwningRewritePatternList &patterns); std::unique_ptr> createConvertShapeToStandardPass(); void populateConvertShapeConstraintsConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *ctx); + OwningRewritePatternList &patterns); std::unique_ptr> createConvertShapeConstraintsPass(); diff --git a/mlir/include/mlir/Conversion/StandardToSPIRV/StandardToSPIRV.h b/mlir/include/mlir/Conversion/StandardToSPIRV/StandardToSPIRV.h --- a/mlir/include/mlir/Conversion/StandardToSPIRV/StandardToSPIRV.h +++ b/mlir/include/mlir/Conversion/StandardToSPIRV/StandardToSPIRV.h @@ -21,8 +21,7 @@ /// Appends to a pattern list additional patterns for translating standard ops /// to SPIR-V ops. Also adds the patterns to legalize ops not directly /// translated to SPIR-V dialect. -void populateStandardToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateStandardToSPIRVPatterns(SPIRVTypeConverter &typeConverter, OwningRewritePatternList &patterns); /// Appends to a pattern list additional patterns for translating tensor ops @@ -37,15 +36,14 @@ /// variables. SPIR-V consumers in GPU drivers may or may not optimize that /// away. So this has implications over register pressure. Therefore, a /// threshold is used to control when the patterns should kick in. -void populateTensorToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateTensorToSPIRVPatterns(SPIRVTypeConverter &typeConverter, int64_t byteCountThreshold, OwningRewritePatternList &patterns); /// Appends to a pattern list patterns to legalize ops that are not directly /// lowered to SPIR-V. void populateStdLegalizationPatternsForSPIRVLowering( - MLIRContext *context, OwningRewritePatternList &patterns); + OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h --- a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h +++ b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h @@ -28,7 +28,7 @@ /// Populates conversion passes from TOSA dialect to Linalg dialect. void populateTosaToLinalgOnTensorsConversionPatterns( - MLIRContext *context, OwningRewritePatternList *patterns); + OwningRewritePatternList *patterns); } // namespace tosa } // namespace mlir diff --git a/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h b/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h --- a/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h +++ b/mlir/include/mlir/Conversion/TosaToSCF/TosaToSCF.h @@ -20,8 +20,7 @@ std::unique_ptr createTosaToSCF(); -void populateTosaToSCFConversionPatterns(MLIRContext *context, - OwningRewritePatternList *patterns); +void populateTosaToSCFConversionPatterns(OwningRewritePatternList *patterns); /// Populates passes to convert from TOSA to SCF. void addTosaToSCFPasses(OpPassManager &pm); diff --git a/mlir/include/mlir/Conversion/TosaToStandard/TosaToStandard.h b/mlir/include/mlir/Conversion/TosaToStandard/TosaToStandard.h --- a/mlir/include/mlir/Conversion/TosaToStandard/TosaToStandard.h +++ b/mlir/include/mlir/Conversion/TosaToStandard/TosaToStandard.h @@ -21,10 +21,10 @@ std::unique_ptr createTosaToStandard(); void populateTosaToStandardConversionPatterns( - MLIRContext *context, OwningRewritePatternList *patterns); + OwningRewritePatternList *patterns); void populateTosaRescaleToStandardConversionPatterns( - MLIRContext *context, OwningRewritePatternList *patterns); + OwningRewritePatternList *patterns); /// Populates passes to convert from TOSA to Standard. void addTosaToStandardPasses(OpPassManager &pm); diff --git a/mlir/include/mlir/Conversion/VectorToSCF/VectorToSCF.h b/mlir/include/mlir/Conversion/VectorToSCF/VectorToSCF.h --- a/mlir/include/mlir/Conversion/VectorToSCF/VectorToSCF.h +++ b/mlir/include/mlir/Conversion/VectorToSCF/VectorToSCF.h @@ -162,7 +162,7 @@ /// Collect a set of patterns to convert from the Vector dialect to SCF + std. void populateVectorToSCFConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *context, + OwningRewritePatternList &patterns, const VectorTransferToSCFOptions &options = VectorTransferToSCFOptions()); /// Create a pass to convert a subset of vector ops to SCF. diff --git a/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRV.h b/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRV.h --- a/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRV.h +++ b/mlir/include/mlir/Conversion/VectorToSPIRV/VectorToSPIRV.h @@ -20,8 +20,7 @@ /// Appends to a pattern list additional patterns for translating Vector Ops to /// SPIR-V ops. -void populateVectorToSPIRVPatterns(MLIRContext *context, - SPIRVTypeConverter &typeConverter, +void populateVectorToSPIRVPatterns(SPIRVTypeConverter &typeConverter, OwningRewritePatternList &patterns); } // namespace mlir diff --git a/mlir/include/mlir/Dialect/GPU/Passes.h b/mlir/include/mlir/Dialect/GPU/Passes.h --- a/mlir/include/mlir/Dialect/GPU/Passes.h +++ b/mlir/include/mlir/Dialect/GPU/Passes.h @@ -31,13 +31,11 @@ std::unique_ptr> createGpuAsyncRegionPass(); /// Collect a set of patterns to rewrite all-reduce ops within the GPU dialect. -void populateGpuAllReducePatterns(MLIRContext *context, - OwningRewritePatternList &patterns); +void populateGpuAllReducePatterns(OwningRewritePatternList &patterns); /// Collect all patterns to rewrite ops within the GPU dialect. -inline void populateGpuRewritePatterns(MLIRContext *context, - OwningRewritePatternList &patterns) { - populateGpuAllReducePatterns(context, patterns); +inline void populateGpuRewritePatterns(OwningRewritePatternList &patterns) { + populateGpuAllReducePatterns(patterns); } namespace gpu { diff --git a/mlir/include/mlir/Dialect/Linalg/Passes.h b/mlir/include/mlir/Dialect/Linalg/Passes.h --- a/mlir/include/mlir/Dialect/Linalg/Passes.h +++ b/mlir/include/mlir/Dialect/Linalg/Passes.h @@ -53,7 +53,7 @@ /// Populate patterns that convert `ElementwiseMappable` ops to linalg /// parallel loops. void populateElementwiseToLinalgConversionPatterns( - OwningRewritePatternList &patterns, MLIRContext *ctx); + OwningRewritePatternList &patterns); /// Create a pass to conver named Linalg operations to Linalg generic /// operations. @@ -67,14 +67,14 @@ /// producer (consumer) generic operation by expanding the dimensionality of the /// loop in the generic op. void populateFoldReshapeOpsByExpansionPatterns( - MLIRContext *context, OwningRewritePatternList &patterns); + OwningRewritePatternList &patterns); /// Patterns to fold a collapsing (expanding) tensor_reshape operation with its /// producer (consumer) generic/indexed_generic operation by linearizing the /// indexing map used to access the source (target) of the reshape operation in /// the generic/indexed_generic operation. void populateFoldReshapeOpsByLinearizationPatterns( - MLIRContext *context, OwningRewritePatternList &patterns); + OwningRewritePatternList &patterns); /// Patterns to fold a collapsing (expanding) tensor_reshape operation with its /// producer (consumer) generic/indexed_generic operation by linearizing the @@ -83,16 +83,15 @@ /// the tensor reshape involved is collapsing (introducing) unit-extent /// dimensions. void populateFoldUnitDimsReshapeOpsByLinearizationPatterns( - MLIRContext *context, OwningRewritePatternList &patterns); + OwningRewritePatternList &patterns); /// Patterns for fusing linalg operation on tensors. -void populateLinalgTensorOpsFusionPatterns(MLIRContext *context, - OwningRewritePatternList &patterns); +void populateLinalgTensorOpsFusionPatterns(OwningRewritePatternList &patterns); /// Patterns to fold unit-extent dimensions in operands/results of linalg ops on /// tensors. void populateLinalgFoldUnitExtentDimsPatterns( - MLIRContext *context, OwningRewritePatternList &patterns); + OwningRewritePatternList &patterns); //===----------------------------------------------------------------------===// // Registration diff --git a/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h b/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h --- a/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h +++ b/mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h @@ -36,11 +36,11 @@ typename = std::enable_if_t::value>> void sfinae_enqueue(OwningRewritePatternList &patternList, OptionsType options, - MLIRContext *context, StringRef opName, - linalg::LinalgTransformationFilter m) { + StringRef opName, linalg::LinalgTransformationFilter m) { assert(opName == ConcreteOpType::getOperationName() && "explicit name must match ConcreteOpType::getOperationName"); - patternList.insert>(context, options, m); + patternList.insert>(patternList.getContext(), + options, m); } /// SFINAE: Enqueue helper for OpType that do not have a `getOperationName` @@ -48,25 +48,26 @@ template