MLIR  20.0.0git
Typedefs | Functions | Variables
OpenACCToLLVMIRTranslation.cpp File Reference
#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...
 

Typedef Documentation

◆ OpenACCIRBuilder

using OpenACCIRBuilder = llvm::OpenMPIRBuilder

Definition at line 30 of file OpenACCToLLVMIRTranslation.cpp.

Function Documentation

◆ convertDataOp()

static LogicalResult convertDataOp ( acc::DataOp &  op,
llvm::IRBuilderBase &  builder,
LLVM::ModuleTranslation moduleTranslation 
)
static

◆ convertStandaloneDataOp()

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

◆ createSourceLocationInfo()

static llvm::Value* createSourceLocationInfo ( OpenACCIRBuilder builder,
Operation op 
)
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().

◆ getAssociatedFunction()

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

Return the runtime function used to lower the given operation.

Definition at line 62 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertStandaloneDataOp().

◆ processDataOperands() [1/3]

static 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 143 of file OpenACCToLLVMIRTranslation.cpp.

References kCreateFlag, kDeviceCopyinFlag, and processOperands().

Referenced by convertStandaloneDataOp().

◆ processDataOperands() [2/3]

static 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 184 of file OpenACCToLLVMIRTranslation.cpp.

References kDeleteFlag, kHostCopyoutFlag, and processOperands().

◆ processDataOperands() [3/3]

static 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 225 of file OpenACCToLLVMIRTranslation.cpp.

References kDeviceCopyinFlag, kHostCopyoutFlag, and processOperands().

◆ processOperands()

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 
)
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().

Variable Documentation

◆ kCreateFlag

constexpr uint64_t kCreateFlag = 0x000
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().

◆ kDefaultDevice

constexpr int64_t kDefaultDevice = -1
staticconstexpr

Default value for the device id.

Definition at line 47 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and convertStandaloneDataOp().

◆ kDeleteFlag

constexpr uint64_t kDeleteFlag = 0x008
staticconstexpr

Definition at line 42 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and processDataOperands().

◆ kDeviceCopyinFlag

constexpr uint64_t kDeviceCopyinFlag = 0x001
staticconstexpr

Definition at line 39 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and processDataOperands().

◆ kHoldFlag

constexpr uint64_t kHoldFlag = 0x2000
staticconstexpr

Definition at line 44 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp().

◆ kHostCopyoutFlag

constexpr uint64_t kHostCopyoutFlag = 0x002
staticconstexpr

Definition at line 40 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp(), and processDataOperands().

◆ kPresentFlag

constexpr uint64_t kPresentFlag = 0x1000
staticconstexpr

Definition at line 41 of file OpenACCToLLVMIRTranslation.cpp.

Referenced by convertDataOp().