MLIR
20.0.0git
|
#include "mlir/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.h"
#include "mlir/Analysis/TopologicalSortUtils.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/OpenACC/OpenACC.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/Operation.h"
#include "mlir/Support/LLVM.h"
#include "mlir/Target/LLVMIR/Dialect/OpenMPCommon.h"
#include "mlir/Target/LLVMIR/ModuleTranslation.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include "llvm/Support/FormatVariadic.h"
Go to the source code of this file.
Typedefs | |
using | OpenACCIRBuilder = llvm::OpenMPIRBuilder |
Functions | |
static llvm::Value * | createSourceLocationInfo (OpenACCIRBuilder &builder, Operation *op) |
Create the location struct from the operation location information. More... | |
static llvm::Function * | getAssociatedFunction (OpenACCIRBuilder &builder, Operation *op) |
Return the runtime function used to lower the given operation. More... | |
static LogicalResult | processOperands (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, Operation *op, ValueRange operands, unsigned totalNbOperand, uint64_t operandFlag, SmallVector< uint64_t > &flags, SmallVectorImpl< llvm::Constant * > &names, unsigned &index, struct OpenACCIRBuilder::MapperAllocas &mapperAllocas) |
Extract pointer, size and mapping information from operands to populate the future functions arguments. More... | |
static LogicalResult | processDataOperands (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, acc::EnterDataOp op, SmallVector< uint64_t > &flags, SmallVectorImpl< llvm::Constant * > &names, struct OpenACCIRBuilder::MapperAllocas &mapperAllocas) |
Process data operands from acc::EnterDataOp. More... | |
static LogicalResult | processDataOperands (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, acc::ExitDataOp op, SmallVector< uint64_t > &flags, SmallVectorImpl< llvm::Constant * > &names, struct OpenACCIRBuilder::MapperAllocas &mapperAllocas) |
Process data operands from acc::ExitDataOp. More... | |
static LogicalResult | processDataOperands (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, acc::UpdateOp op, SmallVector< uint64_t > &flags, SmallVectorImpl< llvm::Constant * > &names, struct OpenACCIRBuilder::MapperAllocas &mapperAllocas) |
Process data operands from acc::UpdateOp. More... | |
static LogicalResult | convertDataOp (acc::DataOp &op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenACC data operation into LLVM IR. More... | |
template<typename OpTy > | |
static LogicalResult | convertStandaloneDataOp (OpTy &op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenACC standalone data operation into LLVM IR. More... | |
Variables | |
static constexpr uint64_t | kCreateFlag = 0x000 |
Flag values are extracted from openmp/libomptarget/include/omptarget.h and mapped to corresponding OpenACC flags. More... | |
static constexpr uint64_t | kDeviceCopyinFlag = 0x001 |
static constexpr uint64_t | kHostCopyoutFlag = 0x002 |
static constexpr uint64_t | kPresentFlag = 0x1000 |
static constexpr uint64_t | kDeleteFlag = 0x008 |
static constexpr uint64_t | kHoldFlag = 0x2000 |
static constexpr int64_t | kDefaultDevice = -1 |
Default value for the device id. More... | |
using OpenACCIRBuilder = llvm::OpenMPIRBuilder |
Definition at line 30 of file OpenACCToLLVMIRTranslation.cpp.
|
static |
Converts an OpenACC data operation into LLVM IR.
Definition at line 263 of file OpenACCToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::convertBlock(), createSourceLocationInfo(), mlir::get(), mlir::getBlocksSortedByDominance(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), kCreateFlag, kDefaultDevice, kDeleteFlag, kDeviceCopyinFlag, kHoldFlag, kHostCopyoutFlag, kPresentFlag, mlir::LLVM::ModuleTranslation::lookupBlock(), mlir::LLVM::ModuleTranslation::lookupFunction(), mlir::LLVM::ModuleTranslation::mapBlock(), and processOperands().
|
static |
Converts an OpenACC standalone data operation into LLVM IR.
Definition at line 425 of file OpenACCToLLVMIRTranslation.cpp.
References createSourceLocationInfo(), mlir::get(), getAssociatedFunction(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), kDefaultDevice, mlir::LLVM::ModuleTranslation::lookupFunction(), and processDataOperands().
|
static |
Create the location struct from the operation location information.
Definition at line 50 of file OpenACCToLLVMIRTranslation.cpp.
References mlir::LLVM::createSourceLocStrFromLocation(), mlir::Operation::getLoc(), and mlir::Operation::getParentOfType().
Referenced by convertDataOp(), and convertStandaloneDataOp().
|
static |
Return the runtime function used to lower the given operation.
Definition at line 62 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertStandaloneDataOp().
|
static |
Process data operands from acc::EnterDataOp.
Definition at line 143 of file OpenACCToLLVMIRTranslation.cpp.
References kCreateFlag, kDeviceCopyinFlag, and processOperands().
Referenced by convertStandaloneDataOp().
|
static |
Process data operands from acc::ExitDataOp.
Definition at line 184 of file OpenACCToLLVMIRTranslation.cpp.
References kDeleteFlag, kHostCopyoutFlag, and processOperands().
|
static |
Process data operands from acc::UpdateOp.
Definition at line 225 of file OpenACCToLLVMIRTranslation.cpp.
References kDeviceCopyinFlag, kHostCopyoutFlag, and processOperands().
|
static |
Extract pointer, size and mapping information from operands to populate the future functions arguments.
Definition at line 83 of file OpenACCToLLVMIRTranslation.cpp.
References mlir::LLVM::createMappingInformation(), mlir::Operation::emitOpError(), mlir::get(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertDataOp(), and processDataOperands().
|
staticconstexpr |
Flag values are extracted from openmp/libomptarget/include/omptarget.h and mapped to corresponding OpenACC flags.
Definition at line 38 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp(), and processDataOperands().
|
staticconstexpr |
Default value for the device id.
Definition at line 47 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp(), and convertStandaloneDataOp().
|
staticconstexpr |
Definition at line 42 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp(), and processDataOperands().
|
staticconstexpr |
Definition at line 39 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp(), and processDataOperands().
|
staticconstexpr |
Definition at line 44 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp().
|
staticconstexpr |
Definition at line 40 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp(), and processDataOperands().
|
staticconstexpr |
Definition at line 41 of file OpenACCToLLVMIRTranslation.cpp.
Referenced by convertDataOp().