22#define GEN_PASS_DEF_CONVERTACCTOLLVMPASS
23#include "mlir/Conversion/Passes.h.inc"
29struct ConvertACCToLLVMPass
33 void getDependentDialects(DialectRegistry ®istry)
const override {
34 Base::getDependentDialects(registry);
38 void runOnOperation()
override;
42void ConvertACCToLLVMPass::runOnOperation() {
43 ModuleOp module = getOperation();
45 SymbolTable symbolTable(module);
48 arith::populateArithToLLVMConversionPatterns(converter, patterns);
53 acc::ACCRuntimeCallConfig runtimeConfig;
56 converter, patterns, module.getBodyRegion(), symbolTable, runtimeConfig);
58 acc::OpenACCSupport &accSupport = getAnalysis<acc::OpenACCSupport>();
60 module.getBodyRegion(), symbolTable,
63 symbolTable, runtimeConfig);
65 module.getBodyRegion(), symbolTable,
69 module.getBodyRegion(), symbolTable,
78 if (
failed(applyPartialConversion(module,
target, std::move(patterns))))
void registerAllExtensions(DialectRegistry ®istry)
Register the standard OpenACC models for GPU, LLVM and MemRef IR.
void populateControlFlowToLLVMConversionPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns)
Collect the patterns to convert from the ControlFlow dialect to LLVM.
Include the generated interface declarations.
void configureACCKernelLaunchConversionLegality(ConversionTarget &target)
Configure conversion legality for acc.kernel_environment.
void populateACCDataClauseOpPatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns, acc::OpenACCSupport &accSupport, Region &globalSymbolRegion, SymbolTable &symbolTable, const acc::ACCRuntimeCallConfig &config={})
Populate the patterns that remove OpenACC data clause operations once the constructs holding them hav...
void populateACCAtomicPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns, acc::OpenACCSupport &accSupport, ACCAtomicLoadAddressCallback getLoadAddress={})
Populate patterns that lower OpenACC atomic operations to LLVM dialect.
void populateACCDataDirectivePatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns, acc::OpenACCSupport &accSupport, Region &globalSymbolRegion, SymbolTable &symbolTable, const acc::ACCRuntimeCallConfig &config={}, acc::DeviceType clauseDeviceType=acc::DeviceType::None)
Populate patterns that lower OpenACC data directives (acc.data, enter_data, exit_data,...
void populateFuncToLLVMConversionPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns, SymbolTableCollection *symbolTables=nullptr)
Collect the patterns to convert from the Func dialect to LLVM.
void configureACCHostDataConversionLegality(ConversionTarget &target)
Configure conversion legality for the OpenACC host_data construct.
void populateFinalizeMemRefToLLVMConversionPatterns(const LLVMTypeConverter &converter, RewritePatternSet &patterns, SymbolTableCollection *symbolTables=nullptr)
Collect a set of patterns to convert memory-related operations from the MemRef dialect to the LLVM di...
void populateACCKernelLaunchPatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns, acc::OpenACCSupport &accSupport, Region &globalSymbolRegion, SymbolTable &symbolTable, const acc::ACCRuntimeCallConfig &config={}, acc::DeviceType clauseDeviceType=acc::DeviceType::None)
Populate patterns that lower an acc.kernel_environment and all gpu.launch_func operations in its body...
void populateACCExecutableDirectivePatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns, Region &globalSymbolRegion, SymbolTable &symbolTable, const acc::ACCRuntimeCallConfig &config={})
Populate patterns that lower OpenACC executable directives (init, shutdown, wait, set) to LLVM runtim...
void configureACCExecutableDirectiveConversionLegality(ConversionTarget &target)
Configure conversion legality for OpenACC executable directives lowered to runtime calls.
void configureACCDataDirectiveConversionLegality(ConversionTarget &target)
Configure conversion legality for OpenACC data directives.
void populateACCHostDataPatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns, Region &globalSymbolRegion, SymbolTable &symbolTable, const acc::ACCRuntimeCallConfig &config={})
Populate patterns that lower the OpenACC host_data construct to runtime calls, one per use_device cla...
void configureACCAtomicConversionLegality(ConversionTarget &target)
Configure conversion legality for OpenACC atomic operations.