MLIR 22.0.0git
OpenACCToLLVMIRTranslation.cpp File Reference

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.
static llvm::Function * getAssociatedFunction (OpenACCIRBuilder &builder, Operation *op)
 Return the runtime function used to lower the given operation.
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.
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.
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.
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.
static LogicalResult convertDataOp (acc::DataOp &op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation)
 Converts an OpenACC data operation into LLVM IR.
template<typename OpTy>
static LogicalResult convertStandaloneDataOp (OpTy &op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation)
 Converts an OpenACC standalone data operation into LLVM IR.

Variables

static constexpr uint64_t kCreateFlag = 0x000
 Flag values are extracted from openmp/libomptarget/include/omptarget.h and mapped to corresponding OpenACC flags.
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.

Typedef Documentation

◆ OpenACCIRBuilder

using OpenACCIRBuilder = llvm::OpenMPIRBuilder

Definition at line 28 of file OpenACCToLLVMIRTranslation.cpp.

Function Documentation

◆ convertDataOp()

◆ convertStandaloneDataOp()

template<typename OpTy>
LogicalResult convertStandaloneDataOp ( OpTy & op,
llvm::IRBuilderBase & builder,
LLVM::ModuleTranslation & moduleTranslation )
static

◆ createSourceLocationInfo()

llvm::Value * createSourceLocationInfo ( OpenACCIRBuilder & builder,
Operation * op )
static

Create the location struct from the operation location information.

Definition at line 48 of file OpenACCToLLVMIRTranslation.cpp.

References mlir::LLVM::createSourceLocStrFromLocation(), mlir::Operation::getLoc(), and mlir::Operation::getParentOfType().

Referenced by convertDataOp(), and convertStandaloneDataOp().

◆ getAssociatedFunction()

llvm::Function * getAssociatedFunction ( OpenACCIRBuilder & builder,
Operation * op )
static

Return the runtime function used to lower the given operation.

Definition at line 60 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertStandaloneDataOp().

◆ processDataOperands() [1/3]

LogicalResult processDataOperands ( llvm::IRBuilderBase & builder,
LLVM::ModuleTranslation & moduleTranslation,
acc::EnterDataOp op,
SmallVector< uint64_t > & flags,
SmallVectorImpl< llvm::Constant * > & names,
struct OpenACCIRBuilder::MapperAllocas & mapperAllocas )
static

Process data operands from acc::EnterDataOp.

Definition at line 141 of file OpenACCToLLVMIRTranslation.cpp.

References kCreateFlag, kDeviceCopyinFlag, processOperands(), and success().

Referenced by convertStandaloneDataOp().

◆ processDataOperands() [2/3]

LogicalResult processDataOperands ( llvm::IRBuilderBase & builder,
LLVM::ModuleTranslation & moduleTranslation,
acc::ExitDataOp op,
SmallVector< uint64_t > & flags,
SmallVectorImpl< llvm::Constant * > & names,
struct OpenACCIRBuilder::MapperAllocas & mapperAllocas )
static

Process data operands from acc::ExitDataOp.

Definition at line 181 of file OpenACCToLLVMIRTranslation.cpp.

References kDeleteFlag, kHostCopyoutFlag, processOperands(), and success().

◆ processDataOperands() [3/3]

LogicalResult processDataOperands ( llvm::IRBuilderBase & builder,
LLVM::ModuleTranslation & moduleTranslation,
acc::UpdateOp op,
SmallVector< uint64_t > & flags,
SmallVectorImpl< llvm::Constant * > & names,
struct OpenACCIRBuilder::MapperAllocas & mapperAllocas )
static

Process data operands from acc::UpdateOp.

Definition at line 222 of file OpenACCToLLVMIRTranslation.cpp.

References kDeviceCopyinFlag, kHostCopyoutFlag, processOperands(), and success().

◆ processOperands()

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 )
static

Variable Documentation

◆ kCreateFlag

uint64_t kCreateFlag = 0x000
staticconstexpr

Flag values are extracted from openmp/libomptarget/include/omptarget.h and mapped to corresponding OpenACC flags.

Definition at line 36 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and processDataOperands().

◆ kDefaultDevice

int64_t kDefaultDevice = -1
staticconstexpr

Default value for the device id.

Definition at line 45 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and convertStandaloneDataOp().

◆ kDeleteFlag

uint64_t kDeleteFlag = 0x008
staticconstexpr

Definition at line 40 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and processDataOperands().

◆ kDeviceCopyinFlag

uint64_t kDeviceCopyinFlag = 0x001
staticconstexpr

◆ kHoldFlag

uint64_t kHoldFlag = 0x2000
staticconstexpr

Definition at line 42 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp().

◆ kHostCopyoutFlag

uint64_t kHostCopyoutFlag = 0x002
staticconstexpr

◆ kPresentFlag

uint64_t kPresentFlag = 0x1000
staticconstexpr

Definition at line 39 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp().