Skip to content

Commit 206fad0

Browse files
[mlir][NFC] Mark type converter in populate... functions as const (#111250)
This commit marks the type converter in `populate...` functions as `const`. This is useful for debugging. Patterns already take a `const` type converter. However, some `populate...` functions do not only add new patterns, but also add additional type conversion rules. That makes it difficult to find the place where a type conversion was added in the code base. With this change, all `populate...` functions that only populate pattern now have a `const` type converter. Programmers can then conclude from the function signature that these functions do not register any new type conversion rules. Also some minor cleanups around the 1:N dialect conversion infrastructure, which did not always pass the type converter as a `const` object internally.
1 parent 73683cc commit 206fad0

File tree

115 files changed

+293
-282
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+293
-282
lines changed

flang/include/flang/Optimizer/CodeGen/CodeGen.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ std::unique_ptr<mlir::Pass> createLLVMDialectToLLVMPass(
7272
[](llvm::Module &m, llvm::raw_ostream &out) { m.print(out, nullptr); });
7373

7474
/// Populate the given list with patterns that convert from FIR to LLVM.
75-
void populateFIRToLLVMConversionPatterns(fir::LLVMTypeConverter &converter,
76-
mlir::RewritePatternSet &patterns,
77-
fir::FIRToLLVMPassOptions &options);
75+
void populateFIRToLLVMConversionPatterns(
76+
const fir::LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns,
77+
fir::FIRToLLVMPassOptions &options);
7878

7979
/// Populate the pattern set with the PreCGRewrite patterns.
8080
void populatePreCGRewritePatterns(mlir::RewritePatternSet &patterns,

flang/include/flang/Optimizer/CodeGen/CodeGenOpenMP.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class LLVMTypeConverter;
1919
/// dialect, utilised in cases where the default OpenMP dialect handling cannot
2020
/// handle all cases for intermingled fir types and operations.
2121
void populateOpenMPFIRToLLVMConversionPatterns(
22-
LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns);
22+
const LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns);
2323

2424
} // namespace fir
2525

flang/include/flang/Optimizer/Transforms/CufOpConversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class DataLayout;
2222

2323
namespace cuf {
2424

25-
void populateCUFToFIRConversionPatterns(fir::LLVMTypeConverter &converter,
25+
void populateCUFToFIRConversionPatterns(const fir::LLVMTypeConverter &converter,
2626
mlir::DataLayout &dl,
2727
mlir::RewritePatternSet &patterns);
2828

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3823,7 +3823,7 @@ fir::createLLVMDialectToLLVMPass(llvm::raw_ostream &output,
38233823
}
38243824

38253825
void fir::populateFIRToLLVMConversionPatterns(
3826-
fir::LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns,
3826+
const fir::LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns,
38273827
fir::FIRToLLVMPassOptions &options) {
38283828
patterns.insert<
38293829
AbsentOpConversion, AddcOpConversion, AddrOfOpConversion,

flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,6 @@ struct MapInfoOpConversion
9393
} // namespace
9494

9595
void fir::populateOpenMPFIRToLLVMConversionPatterns(
96-
LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns) {
96+
const LLVMTypeConverter &converter, mlir::RewritePatternSet &patterns) {
9797
patterns.add<MapInfoOpConversion>(converter);
9898
}

flang/lib/Optimizer/Transforms/CufOpConversion.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ struct CufAllocOpConversion : public mlir::OpRewritePattern<cuf::AllocOp> {
222222
using OpRewritePattern::OpRewritePattern;
223223

224224
CufAllocOpConversion(mlir::MLIRContext *context, mlir::DataLayout *dl,
225-
fir::LLVMTypeConverter *typeConverter)
225+
const fir::LLVMTypeConverter *typeConverter)
226226
: OpRewritePattern(context), dl{dl}, typeConverter{typeConverter} {}
227227

228228
mlir::LogicalResult
@@ -311,7 +311,7 @@ struct CufAllocOpConversion : public mlir::OpRewritePattern<cuf::AllocOp> {
311311

312312
private:
313313
mlir::DataLayout *dl;
314-
fir::LLVMTypeConverter *typeConverter;
314+
const fir::LLVMTypeConverter *typeConverter;
315315
};
316316

317317
struct CufFreeOpConversion : public mlir::OpRewritePattern<cuf::FreeOp> {
@@ -583,7 +583,7 @@ class CufOpConversion : public fir::impl::CufOpConversionBase<CufOpConversion> {
583583
} // namespace
584584

585585
void cuf::populateCUFToFIRConversionPatterns(
586-
fir::LLVMTypeConverter &converter, mlir::DataLayout &dl,
586+
const fir::LLVMTypeConverter &converter, mlir::DataLayout &dl,
587587
mlir::RewritePatternSet &patterns) {
588588
patterns.insert<CufAllocOpConversion>(patterns.getContext(), &dl, &converter);
589589
patterns.insert<CufAllocateOpConversion, CufDeallocateOpConversion,

mlir/docs/Bufferization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ is very small, and follows the basic pattern of any dialect conversion pass.
651651

652652
```
653653
void mlir::populateTensorBufferizePatterns(
654-
BufferizeTypeConverter &typeConverter, RewritePatternSet &patterns) {
654+
const BufferizeTypeConverter &typeConverter, RewritePatternSet &patterns) {
655655
patterns.add<BufferizeCastOp, BufferizeExtractOp>(typeConverter,
656656
patterns.getContext());
657657
}

mlir/include/mlir/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Pass;
2424
/// Note: The ROCDL target does not support the LLVM bfloat type at this time
2525
/// and so this function will add conversions to change all `bfloat` uses
2626
/// to `i16`.
27-
void populateAMDGPUToROCDLConversionPatterns(LLVMTypeConverter &converter,
27+
void populateAMDGPUToROCDLConversionPatterns(const LLVMTypeConverter &converter,
2828
RewritePatternSet &patterns,
2929
amdgpu::Chipset chipset);
3030

mlir/include/mlir/Conversion/ArithToLLVM/ArithToLLVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Pass;
2222
#include "mlir/Conversion/Passes.h.inc"
2323

2424
namespace arith {
25-
void populateArithToLLVMConversionPatterns(LLVMTypeConverter &converter,
25+
void populateArithToLLVMConversionPatterns(const LLVMTypeConverter &converter,
2626
RewritePatternSet &patterns);
2727

2828
void registerConvertArithToLLVMInterface(DialectRegistry &registry);

mlir/include/mlir/Conversion/ArithToSPIRV/ArithToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class Pass;
2222
#include "mlir/Conversion/Passes.h.inc"
2323

2424
namespace arith {
25-
void populateArithToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
25+
void populateArithToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2626
RewritePatternSet &patterns);
2727

2828
std::unique_ptr<OperationPass<>> createConvertArithToSPIRVPass();

mlir/include/mlir/Conversion/ComplexToLLVM/ComplexToLLVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class ComplexStructBuilder : public StructBuilder {
3939
};
4040

4141
/// Populate the given list with patterns that convert from Complex to LLVM.
42-
void populateComplexToLLVMConversionPatterns(LLVMTypeConverter &converter,
42+
void populateComplexToLLVMConversionPatterns(const LLVMTypeConverter &converter,
4343
RewritePatternSet &patterns);
4444

4545
void registerConvertComplexToLLVMInterface(DialectRegistry &registry);

mlir/include/mlir/Conversion/ComplexToSPIRV/ComplexToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SPIRVTypeConverter;
2020

2121
/// Appends to a pattern list additional patterns for translating Complex ops
2222
/// to SPIR-V ops.
23-
void populateComplexToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
23+
void populateComplexToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2424
RewritePatternSet &patterns);
2525

2626
} // namespace mlir

mlir/include/mlir/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ namespace cf {
2929
/// Collect the patterns to convert from the ControlFlow dialect to LLVM. The
3030
/// conversion patterns capture the LLVMTypeConverter by reference meaning the
3131
/// references have to remain alive during the entire pattern lifetime.
32-
void populateControlFlowToLLVMConversionPatterns(LLVMTypeConverter &converter,
33-
RewritePatternSet &patterns);
32+
void populateControlFlowToLLVMConversionPatterns(
33+
const LLVMTypeConverter &converter, RewritePatternSet &patterns);
3434

3535
/// Populate the cf.assert to LLVM conversion pattern. If `abortOnFailure` is
3636
/// set to false, the program execution continues when a condition is
3737
/// unsatisfied.
38-
void populateAssertToLLVMConversionPattern(LLVMTypeConverter &converter,
38+
void populateAssertToLLVMConversionPattern(const LLVMTypeConverter &converter,
3939
RewritePatternSet &patterns,
4040
bool abortOnFailure = true);
4141

mlir/include/mlir/Conversion/ControlFlowToSPIRV/ControlFlowToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SPIRVTypeConverter;
2020
namespace cf {
2121
/// Appends to a pattern list additional patterns for translating ControlFLow
2222
/// ops to SPIR-V ops.
23-
void populateControlFlowToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
23+
void populateControlFlowToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2424
RewritePatternSet &patterns);
2525
} // namespace cf
2626
} // namespace mlir

mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVM.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ convertFuncOpToLLVMFuncOp(FunctionOpInterface funcOp,
3939
/// `emitCWrappers` is set, the pattern will also produce functions
4040
/// that pass memref descriptors by pointer-to-structure in addition to the
4141
/// default unpacked form.
42-
void populateFuncToLLVMFuncOpConversionPattern(LLVMTypeConverter &converter,
43-
RewritePatternSet &patterns);
42+
void populateFuncToLLVMFuncOpConversionPattern(
43+
const LLVMTypeConverter &converter, RewritePatternSet &patterns);
4444

4545
/// Collect the patterns to convert from the Func dialect to LLVM. The
4646
/// conversion patterns capture the LLVMTypeConverter and the LowerToLLVMOptions
@@ -56,7 +56,7 @@ void populateFuncToLLVMFuncOpConversionPattern(LLVMTypeConverter &converter,
5656
/// needed if `converter.getOptions().useBarePtrCallConv` is `true`, but it's
5757
/// not an error to provide it anyway.
5858
void populateFuncToLLVMConversionPatterns(
59-
LLVMTypeConverter &converter, RewritePatternSet &patterns,
59+
const LLVMTypeConverter &converter, RewritePatternSet &patterns,
6060
const SymbolTable *symbolTable = nullptr);
6161

6262
void registerConvertFuncToLLVMInterface(DialectRegistry &registry);

mlir/include/mlir/Conversion/FuncToSPIRV/FuncToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class SPIRVTypeConverter;
2121
/// Appends to a pattern list additional patterns for translating Func ops
2222
/// to SPIR-V ops. Also adds the patterns to legalize ops not directly
2323
/// translated to SPIR-V dialect.
24-
void populateFuncToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
24+
void populateFuncToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2525
RewritePatternSet &patterns);
2626

2727
} // namespace mlir

mlir/include/mlir/Conversion/GPUToLLVMSPV/GPUToLLVMSPVPass.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class TypeConverter;
2121
#define GEN_PASS_DECL_CONVERTGPUOPSTOLLVMSPVOPS
2222
#include "mlir/Conversion/Passes.h.inc"
2323

24-
void populateGpuToLLVMSPVConversionPatterns(LLVMTypeConverter &converter,
24+
void populateGpuToLLVMSPVConversionPatterns(const LLVMTypeConverter &converter,
2525
RewritePatternSet &patterns);
2626

2727
/// Populates memory space attribute conversion rules for lowering

mlir/include/mlir/Conversion/GPUToNVVM/GPUToNVVMPass.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ LLVM::LLVMStructType convertMMAToLLVMType(gpu::MMAMatrixType type);
3232
void configureGpuToNVVMConversionLegality(ConversionTarget &target);
3333

3434
/// Collect a set of patterns to convert from the GPU dialect to NVVM.
35-
void populateGpuToNVVMConversionPatterns(LLVMTypeConverter &converter,
35+
void populateGpuToNVVMConversionPatterns(const LLVMTypeConverter &converter,
3636
RewritePatternSet &patterns);
3737

3838
/// Populate GpuSubgroupReduce pattern to NVVM. It generates a specific nvvm
3939
/// op that is not available on every GPU.
40-
void populateGpuSubgroupReduceOpLoweringPattern(LLVMTypeConverter &converter,
41-
RewritePatternSet &patterns);
40+
void populateGpuSubgroupReduceOpLoweringPattern(
41+
const LLVMTypeConverter &converter, RewritePatternSet &patterns);
4242

4343
/// Collect a set of patterns to convert WMMA ops from GPU dialect to NVVM.
44-
void populateGpuWMMAToNVVMConversionPatterns(LLVMTypeConverter &converter,
44+
void populateGpuWMMAToNVVMConversionPatterns(const LLVMTypeConverter &converter,
4545
RewritePatternSet &patterns);
4646
} // namespace mlir
4747

mlir/include/mlir/Conversion/GPUToROCDL/GPUToROCDLPass.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class GPUModuleOp;
3030
/// Collect a set of patterns to convert from the GPU dialect to ROCDL.
3131
/// If `runtime` is Unknown, gpu.printf will not be lowered
3232
/// The resulting pattern set should be run over a gpu.module op
33-
void populateGpuToROCDLConversionPatterns(LLVMTypeConverter &converter,
33+
void populateGpuToROCDLConversionPatterns(const LLVMTypeConverter &converter,
3434
RewritePatternSet &patterns,
3535
gpu::amd::Runtime runtime);
3636

mlir/include/mlir/Conversion/GPUToSPIRV/GPUToSPIRV.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ class SPIRVTypeConverter;
2323
/// Appends to a pattern list additional patterns for translating GPU Ops to
2424
/// SPIR-V ops. For a gpu.func to be converted, it should have a
2525
/// spirv.entry_point_abi attribute.
26-
void populateGPUToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
26+
void populateGPUToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2727
RewritePatternSet &patterns);
2828

2929
/// Collect a set of patterns to convert WMMA ops from GPU dialect to SPIRV,
3030
/// using the KHR Cooperative Matrix extension.
3131
void populateGpuWMMAToSPIRVCoopMatrixKHRConversionPatterns(
32-
SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns);
32+
const SPIRVTypeConverter &typeConverter, RewritePatternSet &patterns);
3333

3434
/// Adds `MMAMatrixType` conversions to SPIR-V cooperative matrix KHR type
3535
/// conversion to the type converter.

mlir/include/mlir/Conversion/IndexToLLVM/IndexToLLVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Pass;
2121
#include "mlir/Conversion/Passes.h.inc"
2222

2323
namespace index {
24-
void populateIndexToLLVMConversionPatterns(LLVMTypeConverter &converter,
24+
void populateIndexToLLVMConversionPatterns(const LLVMTypeConverter &converter,
2525
RewritePatternSet &patterns);
2626

2727
void registerConvertIndexToLLVMInterface(DialectRegistry &registry);

mlir/include/mlir/Conversion/IndexToSPIRV/IndexToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Pass;
2121
#include "mlir/Conversion/Passes.h.inc"
2222

2323
namespace index {
24-
void populateIndexToSPIRVPatterns(SPIRVTypeConverter &converter,
24+
void populateIndexToSPIRVPatterns(const SPIRVTypeConverter &converter,
2525
RewritePatternSet &patterns);
2626
std::unique_ptr<OperationPass<>> createConvertIndexToSPIRVPass();
2727
} // namespace index

mlir/include/mlir/Conversion/MathToLLVM/MathToLLVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Pass;
2121
#define GEN_PASS_DECL_CONVERTMATHTOLLVMPASS
2222
#include "mlir/Conversion/Passes.h.inc"
2323

24-
void populateMathToLLVMConversionPatterns(LLVMTypeConverter &converter,
24+
void populateMathToLLVMConversionPatterns(const LLVMTypeConverter &converter,
2525
RewritePatternSet &patterns,
2626
bool approximateLog1p = true);
2727

mlir/include/mlir/Conversion/MathToROCDL/MathToROCDL.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class Pass;
1919
#include "mlir/Conversion/Passes.h.inc"
2020

2121
/// Populate the given list with patterns that convert from Math to ROCDL calls.
22-
void populateMathToROCDLConversionPatterns(LLVMTypeConverter &converter,
22+
void populateMathToROCDLConversionPatterns(const LLVMTypeConverter &converter,
2323
RewritePatternSet &patterns);
2424
} // namespace mlir
2525

mlir/include/mlir/Conversion/MathToSPIRV/MathToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SPIRVTypeConverter;
2020

2121
/// Appends to a pattern list additional patterns for translating Math ops
2222
/// to SPIR-V ops.
23-
void populateMathToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
23+
void populateMathToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
2424
RewritePatternSet &patterns);
2525

2626
} // namespace mlir

mlir/include/mlir/Conversion/MemRefToEmitC/MemRefToEmitC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class TypeConverter;
1515
void populateMemRefToEmitCTypeConversion(TypeConverter &typeConverter);
1616

1717
void populateMemRefToEmitCConversionPatterns(RewritePatternSet &patterns,
18-
TypeConverter &converter);
18+
const TypeConverter &converter);
1919
} // namespace mlir
2020

2121
#endif // MLIR_CONVERSION_MEMREFTOEMITC_MEMREFTOEMITC_H

mlir/include/mlir/Conversion/MemRefToLLVM/MemRefToLLVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RewritePatternSet;
2323
/// Collect a set of patterns to convert memory-related operations from the
2424
/// MemRef dialect to the LLVM dialect.
2525
void populateFinalizeMemRefToLLVMConversionPatterns(
26-
LLVMTypeConverter &converter, RewritePatternSet &patterns);
26+
const LLVMTypeConverter &converter, RewritePatternSet &patterns);
2727

2828
void registerConvertMemRefToLLVMInterface(DialectRegistry &registry);
2929

mlir/include/mlir/Conversion/MemRefToSPIRV/MemRefToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void convertMemRefTypesAndAttrs(
6767

6868
/// Appends to a pattern list additional patterns for translating MemRef ops
6969
/// to SPIR-V ops.
70-
void populateMemRefToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
70+
void populateMemRefToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
7171
RewritePatternSet &patterns);
7272

7373
} // namespace mlir

mlir/include/mlir/Conversion/NVGPUToNVVM/NVGPUToNVVM.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ MemRefType getMBarrierMemrefType(MLIRContext *context,
3434
MBarrierGroupType barrierType);
3535
} // namespace nvgpu
3636

37-
void populateNVGPUToNVVMConversionPatterns(LLVMTypeConverter &converter,
37+
void populateNVGPUToNVVMConversionPatterns(const LLVMTypeConverter &converter,
3838
RewritePatternSet &patterns);
3939
} // namespace mlir
4040

mlir/include/mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ class RewritePatternSet;
2222

2323
/// Configure dynamic conversion legality of regionless operations from OpenMP
2424
/// to LLVM.
25-
void configureOpenMPToLLVMConversionLegality(ConversionTarget &target,
26-
LLVMTypeConverter &typeConverter);
25+
void configureOpenMPToLLVMConversionLegality(
26+
ConversionTarget &target, const LLVMTypeConverter &typeConverter);
2727

2828
/// Populate the given list with patterns that convert from OpenMP to LLVM.
2929
void populateOpenMPToLLVMConversionPatterns(LLVMTypeConverter &converter,

mlir/include/mlir/Conversion/SCFToSPIRV/SCFToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct ScfToSPIRVContext {
3434

3535
/// Collects a set of patterns to lower from scf.for, scf.if, and
3636
/// loop.terminator to CFG operations within the SPIR-V dialect.
37-
void populateSCFToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
37+
void populateSCFToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
3838
ScfToSPIRVContext &scfToSPIRVContext,
3939
RewritePatternSet &patterns);
4040
} // namespace mlir

mlir/include/mlir/Conversion/SPIRVToLLVM/SPIRVToLLVM.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,16 @@ class ModuleOp;
2525
template <typename SPIRVOp>
2626
class SPIRVToLLVMConversion : public OpConversionPattern<SPIRVOp> {
2727
public:
28-
SPIRVToLLVMConversion(MLIRContext *context, LLVMTypeConverter &typeConverter,
28+
SPIRVToLLVMConversion(MLIRContext *context,
29+
const LLVMTypeConverter &typeConverter,
2930
PatternBenefit benefit = 1)
30-
: OpConversionPattern<SPIRVOp>(typeConverter, context, benefit),
31-
typeConverter(typeConverter) {}
31+
: OpConversionPattern<SPIRVOp>(typeConverter, context, benefit) {}
3232

3333
protected:
34-
LLVMTypeConverter &typeConverter;
34+
const LLVMTypeConverter *getTypeConverter() const {
35+
return static_cast<const LLVMTypeConverter *>(
36+
ConversionPattern::getTypeConverter());
37+
}
3538
};
3639

3740
/// Encodes global variable's descriptor set and binding into its name if they
@@ -46,18 +49,18 @@ void populateSPIRVToLLVMTypeConversion(
4649

4750
/// Populates the given list with patterns that convert from SPIR-V to LLVM.
4851
void populateSPIRVToLLVMConversionPatterns(
49-
LLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
52+
const LLVMTypeConverter &typeConverter, RewritePatternSet &patterns,
5053
spirv::ClientAPI clientAPIForAddressSpaceMapping =
5154
spirv::ClientAPI::Unknown);
5255

5356
/// Populates the given list with patterns for function conversion from SPIR-V
5457
/// to LLVM.
5558
void populateSPIRVToLLVMFunctionConversionPatterns(
56-
LLVMTypeConverter &typeConverter, RewritePatternSet &patterns);
59+
const LLVMTypeConverter &typeConverter, RewritePatternSet &patterns);
5760

5861
/// Populates the given patterns for module conversion from SPIR-V to LLVM.
5962
void populateSPIRVToLLVMModuleConversionPatterns(
60-
LLVMTypeConverter &typeConverter, RewritePatternSet &patterns);
63+
const LLVMTypeConverter &typeConverter, RewritePatternSet &patterns);
6164

6265
} // namespace mlir
6366

mlir/include/mlir/Conversion/TensorToSPIRV/TensorToSPIRV.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class SPIRVTypeConverter;
3030
/// variables. SPIR-V consumers in GPU drivers may or may not optimize that
3131
/// away. So this has implications over register pressure. Therefore, a
3232
/// threshold is used to control when the patterns should kick in.
33-
void populateTensorToSPIRVPatterns(SPIRVTypeConverter &typeConverter,
33+
void populateTensorToSPIRVPatterns(const SPIRVTypeConverter &typeConverter,
3434
int64_t byteCountThreshold,
3535
RewritePatternSet &patterns);
3636

0 commit comments

Comments
 (0)