MLIR
20.0.0git
|
#include "mlir/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.h"
#include "mlir/Analysis/TopologicalSortUtils.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
#include "mlir/Dialect/OpenMP/OpenMPInterfaces.h"
#include "mlir/IR/IRMapping.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 "mlir/Transforms/RegionUtils.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Frontend/OpenMP/OMPConstants.h"
#include "llvm/Frontend/OpenMP/OMPIRBuilder.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/ReplaceConstant.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include <any>
#include <cstdint>
#include <iterator>
#include <numeric>
#include <optional>
#include <utility>
Go to the source code of this file.
Functions | |
static omp::PrivateClauseOp | findPrivatizer (Operation *from, SymbolRefAttr symbolName) |
Looks up from the operation from and returns the PrivateClauseOp with name symbolName. More... | |
static LogicalResult | checkImplementationStatus (Operation &op) |
Check whether translation to LLVM IR for the given operation is currently supported. More... | |
static LogicalResult | handleError (llvm::Error error, Operation &op) |
template<typename T > | |
static LogicalResult | handleError (llvm::Expected< T > &result, Operation &op) |
static llvm::OpenMPIRBuilder::InsertPointTy | findAllocaInsertPoint (llvm::IRBuilderBase &builder, const LLVM::ModuleTranslation &moduleTranslation) |
Find the insertion point for allocas given the current insertion point for normal operations in the builder. More... | |
static llvm::Expected< llvm::BasicBlock * > | convertOmpOpRegions (Region ®ion, StringRef blockName, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, SmallVectorImpl< llvm::PHINode * > *continuationBlockPHIs=nullptr) |
Converts the given region that appears within an OpenMP dialect operation to LLVM IR, creating a branch from the sourceBlock to the entry block of the region, and a branch from any block with an successor-less OpenMP terminator to continuationBlock . More... | |
static llvm::omp::ProcBindKind | getProcBindKind (omp::ClauseProcBindKind kind) |
Convert ProcBindKind from MLIR-generated enum to LLVM enum. More... | |
static LogicalResult | convertIgnoredWrapper (omp::LoopWrapperInterface &opInst, LLVM::ModuleTranslation &moduleTranslation) |
Helper function to map block arguments defined by ignored loop wrappers to LLVM values and prevent any uses of those from triggering null pointer dereferences. More... | |
static LogicalResult | convertIgnoredWrappers (omp::LoopNestOp loopOp, omp::LoopWrapperInterface parentOp, LLVM::ModuleTranslation &moduleTranslation) |
Helper function to call convertIgnoredWrapper() for all wrappers of the given loopOp nested inside of parentOp . More... | |
static LogicalResult | convertOmpMasked (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP 'masked' operation into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpMaster (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP 'master' operation into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpCritical (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP 'critical' operation into LLVM IR using OpenMPIRBuilder. More... | |
template<class OP > | |
static void | collectPrivatizationDecls (OP op, SmallVectorImpl< omp::PrivateClauseOp > &privatizations) |
Populates privatizations with privatization declarations used for the given op. More... | |
template<typename T > | |
static void | collectReductionDecls (T op, SmallVectorImpl< omp::DeclareReductionOp > &reductions) |
Populates reductions with reduction declarations used in the given op. More... | |
static LogicalResult | inlineConvertOmpRegions (Region ®ion, StringRef blockName, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, SmallVectorImpl< llvm::Value * > *continuationBlockArgs=nullptr) |
Translates the blocks contained in the given region and appends them to at the current insertion point of builder . More... | |
static OwningReductionGen | makeReductionGen (omp::DeclareReductionOp decl, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Create an OpenMPIRBuilder-compatible reduction generator for the given reduction declaration. More... | |
static OwningAtomicReductionGen | makeAtomicReductionGen (omp::DeclareReductionOp decl, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Create an OpenMPIRBuilder-compatible atomic reduction generator for the given reduction declaration. More... | |
static LogicalResult | convertOmpOrdered (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP 'ordered' operation into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpOrderedRegion (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP 'ordered_region' operation into LLVM IR using OpenMPIRBuilder. More... | |
template<typename T > | |
static LogicalResult | allocReductionVars (T loop, ArrayRef< BlockArgument > reductionArgs, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, const llvm::OpenMPIRBuilder::InsertPointTy &allocaIP, SmallVectorImpl< omp::DeclareReductionOp > &reductionDecls, SmallVectorImpl< llvm::Value * > &privateReductionVariables, DenseMap< Value, llvm::Value * > &reductionVariableMap, SmallVectorImpl< DeferredStore > &deferredStores, llvm::ArrayRef< bool > isByRefs) |
Allocate space for privatized reduction variables. More... | |
template<typename T > | |
static void | mapInitializationArgs (T loop, LLVM::ModuleTranslation &moduleTranslation, SmallVectorImpl< omp::DeclareReductionOp > &reductionDecls, DenseMap< Value, llvm::Value * > &reductionVariableMap, unsigned i) |
Map input arguments to reduction initialization region. More... | |
template<typename T > | |
static void | collectReductionInfo (T loop, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, SmallVectorImpl< omp::DeclareReductionOp > &reductionDecls, SmallVectorImpl< OwningReductionGen > &owningReductionGens, SmallVectorImpl< OwningAtomicReductionGen > &owningAtomicReductionGens, const ArrayRef< llvm::Value * > privateReductionVariables, SmallVectorImpl< llvm::OpenMPIRBuilder::ReductionInfo > &reductionInfos) |
Collect reduction info. More... | |
static LogicalResult | inlineOmpRegionCleanup (llvm::SmallVectorImpl< Region * > &cleanupRegions, llvm::ArrayRef< llvm::Value * > privateVariables, LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, StringRef regionName, bool shouldLoadCleanupRegionArg=true) |
handling of DeclareReductionOp's cleanup region More... | |
template<class OP > | |
static LogicalResult | createReductionsAndCleanup (OP op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, llvm::OpenMPIRBuilder::InsertPointTy &allocaIP, SmallVectorImpl< omp::DeclareReductionOp > &reductionDecls, ArrayRef< llvm::Value * > privateReductionVariables, ArrayRef< bool > isByRef) |
static ArrayRef< bool > | getIsByRef (std::optional< ArrayRef< bool >> attr) |
template<typename OP > | |
static LogicalResult | allocAndInitializeReductionVars (OP op, ArrayRef< BlockArgument > reductionArgs, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, llvm::OpenMPIRBuilder::InsertPointTy &allocaIP, SmallVectorImpl< omp::DeclareReductionOp > &reductionDecls, SmallVectorImpl< llvm::Value * > &privateReductionVariables, DenseMap< Value, llvm::Value * > &reductionVariableMap, llvm::ArrayRef< bool > isByRef) |
static llvm::Expected< llvm::BasicBlock * > | allocatePrivateVars (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, MutableArrayRef< BlockArgument > privateBlockArgs, MutableArrayRef< omp::PrivateClauseOp > privateDecls, MutableArrayRef< mlir::Value > mlirPrivateVars, llvm::SmallVectorImpl< llvm::Value * > &llvmPrivateVars, const llvm::OpenMPIRBuilder::InsertPointTy &allocaIP) |
Allocate delayed private variables. More... | |
static LogicalResult | convertOmpSections (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static LogicalResult | convertOmpSingle (omp::SingleOp &singleOp, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP single construct into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpTeams (omp::TeamsOp op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static void | buildDependData (std::optional< ArrayAttr > dependKinds, OperandRange dependVars, LLVM::ModuleTranslation &moduleTranslation, SmallVectorImpl< llvm::OpenMPIRBuilder::DependData > &dds) |
static LogicalResult | convertOmpTaskOp (omp::TaskOp taskOp, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP task construct into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpTaskgroupOp (omp::TaskgroupOp tgOp, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP taskgroup construct into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpTaskwaitOp (omp::TaskwaitOp twOp, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static LogicalResult | convertOmpWsloop (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP workshare loop into LLVM IR using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpParallel (omp::ParallelOp opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts the OpenMP parallel operation to LLVM IR. More... | |
static llvm::omp::OrderKind | convertOrderKind (std::optional< omp::ClauseOrderKind > o) |
Convert Order attribute to llvm::omp::OrderKind. More... | |
static LogicalResult | convertOmpSimd (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP simd loop into LLVM IR using OpenMPIRBuilder. More... | |
static llvm::AtomicOrdering | convertAtomicOrdering (std::optional< omp::ClauseMemoryOrderKind > ao) |
Convert an Atomic Ordering attribute to llvm::AtomicOrdering. More... | |
static LogicalResult | convertOmpAtomicRead (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Convert omp.atomic.read operation to LLVM IR. More... | |
static LogicalResult | convertOmpAtomicWrite (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an omp.atomic.write operation to LLVM IR. More... | |
llvm::AtomicRMWInst::BinOp | convertBinOpToAtomic (Operation &op) |
Converts an LLVM dialect binary operation to the corresponding enum value for atomicrmw supported binary operation. More... | |
static LogicalResult | convertOmpAtomicUpdate (omp::AtomicUpdateOp &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP atomic update operation using OpenMPIRBuilder. More... | |
static LogicalResult | convertOmpAtomicCapture (omp::AtomicCaptureOp atomicCaptureOp, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static LogicalResult | convertOmpThreadprivate (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Converts an OpenMP Threadprivate operation into LLVM IR using OpenMPIRBuilder. More... | |
static llvm::OffloadEntriesInfoManager::OMPTargetDeviceClauseKind | convertToDeviceClauseKind (mlir::omp::DeclareTargetDeviceType deviceClause) |
static llvm::OffloadEntriesInfoManager::OMPTargetGlobalVarEntryKind | convertToCaptureClauseKind (mlir::omp::DeclareTargetCaptureClause captureClause) |
static llvm::SmallString< 64 > | getDeclareTargetRefPtrSuffix (LLVM::GlobalOp globalOp, llvm::OpenMPIRBuilder &ompBuilder) |
static bool | isDeclareTargetLink (mlir::Value value) |
static llvm::Value * | getRefPtrIfDeclareTarget (mlir::Value value, LLVM::ModuleTranslation &moduleTranslation) |
uint64_t | getArrayElementSizeInBits (LLVM::LLVMArrayType arrTy, DataLayout &dl) |
llvm::Value * | getSizeInBytes (DataLayout &dl, const mlir::Type &type, Operation *clauseOp, llvm::Value *basePointer, llvm::Type *baseType, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static void | collectMapDataFromMapOperands (MapInfoData &mapData, SmallVectorImpl< Value > &mapVars, LLVM::ModuleTranslation &moduleTranslation, DataLayout &dl, llvm::IRBuilderBase &builder, const ArrayRef< Value > &useDevPtrOperands={}, const ArrayRef< Value > &useDevAddrOperands={}) |
static int | getMapDataMemberIdx (MapInfoData &mapData, omp::MapInfoOp memberOp) |
static omp::MapInfoOp | getFirstOrLastMappedMemberPtr (omp::MapInfoOp mapInfo, bool first) |
std::vector< llvm::Value * > | calculateBoundsOffset (LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, bool isArrayTy, OperandRange bounds) |
This function calculates the array/pointer offset for map data provided with bounds operations, e.g. More... | |
static llvm::omp::OpenMPOffloadMappingFlags | mapParentWithMembers (LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, llvm::OpenMPIRBuilder &ompBuilder, DataLayout &dl, llvm::OpenMPIRBuilder::MapInfosTy &combinedInfo, MapInfoData &mapData, uint64_t mapDataIndex, bool isTargetParams) |
static bool | checkIfPointerMap (omp::MapInfoOp mapOp) |
static void | processMapMembersWithParent (LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, llvm::OpenMPIRBuilder &ompBuilder, DataLayout &dl, llvm::OpenMPIRBuilder::MapInfosTy &combinedInfo, MapInfoData &mapData, uint64_t mapDataIndex, llvm::omp::OpenMPOffloadMappingFlags memberOfFlag) |
static void | processIndividualMap (MapInfoData &mapData, size_t mapDataIdx, llvm::OpenMPIRBuilder::MapInfosTy &combinedInfo, bool isTargetParams, int mapDataParentIdx=-1) |
static void | processMapWithMembersOf (LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, llvm::OpenMPIRBuilder &ompBuilder, DataLayout &dl, llvm::OpenMPIRBuilder::MapInfosTy &combinedInfo, MapInfoData &mapData, uint64_t mapDataIndex, bool isTargetParams) |
static void | createAlteredByCaptureMap (MapInfoData &mapData, LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder) |
static void | genMapInfos (llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation, DataLayout &dl, llvm::OpenMPIRBuilder::MapInfosTy &combinedInfo, MapInfoData &mapData, bool isTargetParams=false) |
static LogicalResult | convertOmpTargetData (Operation *op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
LogicalResult | convertFlagsAttr (Operation *op, mlir::omp::FlagsAttr attribute, LLVM::ModuleTranslation &moduleTranslation) |
Lowers the FlagsAttr which is applied to the module on the device pass when offloading, this attribute contains OpenMP RTL globals that can be passed as flags to the frontend, otherwise they are set to default. More... | |
static bool | getTargetEntryUniqueInfo (llvm::TargetRegionEntryInfo &targetInfo, omp::TargetOp targetOp, llvm::StringRef parentName="") |
static void | handleDeclareTargetMapVar (MapInfoData &mapData, LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase &builder, llvm::Function *func) |
static llvm::IRBuilderBase::InsertPoint | createDeviceArgumentAccessor (MapInfoData &mapData, llvm::Argument &arg, llvm::Value *input, llvm::Value *&retVal, llvm::IRBuilderBase &builder, llvm::OpenMPIRBuilder &ompBuilder, LLVM::ModuleTranslation &moduleTranslation, llvm::IRBuilderBase::InsertPoint allocaIP, llvm::IRBuilderBase::InsertPoint codeGenIP) |
static LogicalResult | convertOmpTarget (Operation &opInst, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static LogicalResult | convertDeclareTargetAttr (Operation *op, mlir::omp::DeclareTargetAttr attribute, LLVM::ModuleTranslation &moduleTranslation) |
static bool | isTargetDeviceOp (Operation *op) |
static LogicalResult | convertHostOrTargetOperation (Operation *op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
Given an OpenMP MLIR operation, create the corresponding LLVM IR (including OpenMP runtime calls). More... | |
static LogicalResult | convertTargetDeviceOp (Operation *op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
static LogicalResult | convertTargetOpsInNest (Operation *op, llvm::IRBuilderBase &builder, LLVM::ModuleTranslation &moduleTranslation) |
|
static |
Definition at line 1180 of file OpenMPToLLVMIRTranslation.cpp.
References allocReductionVars(), mlir::LLVM::ModuleTranslation::convertType(), mlir::LLVM::ModuleTranslation::forgetMapping(), inlineConvertOmpRegions(), mapInitializationArgs(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertOmpSections(), and convertOmpWsloop().
|
static |
Allocate delayed private variables.
Returns the basic block which comes after all of these allocations. llvm::Value * for each of these private variables are populated in llvmPrivateVars.
Definition at line 1258 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::forgetMapping(), inlineConvertOmpRegions(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertOmpParallel(), and convertOmpTaskOp().
|
static |
Allocate space for privatized reduction variables.
deferredStores
contains information to create store operations which needs to be inserted after all allocas
Definition at line 961 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::convertType(), mlir::Region::empty(), inlineConvertOmpRegions(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by allocAndInitializeReductionVars(), and convertOmpParallel().
|
static |
Definition at line 1526 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertOmpTarget(), and convertOmpTaskOp().
std::vector<llvm::Value *> calculateBoundsOffset | ( | LLVM::ModuleTranslation & | moduleTranslation, |
llvm::IRBuilderBase & | builder, | ||
bool | isArrayTy, | ||
OperandRange | bounds | ||
) |
This function calculates the array/pointer offset for map data provided with bounds operations, e.g.
when provided something like the following:
Fortran map(tofrom: array(2:5, 3:2)) or C++ map(tofrom: array[1:4][2:3]) We must calculate the initial pointer offset to pass across, this function performs this using bounds.
NOTE: which while specified in row-major order it currently needs to be flipped for Fortran's column order array allocation and access (as opposed to C++'s row-major, hence the backwards processing where order is important). This is likely important to keep in mind for the future when we incorporate a C++ frontend, both frontends will need to agree on the ordering of generated bounds operations (one may have to flip them) to make the below lowering frontend agnostic. The offload size calcualtion may also have to be adjusted for C++.
Definition at line 2931 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by createAlteredByCaptureMap().
|
static |
Definition at line 3110 of file OpenMPToLLVMIRTranslation.cpp.
References isDeclareTargetLink().
Referenced by createAlteredByCaptureMap(), processIndividualMap(), and processMapMembersWithParent().
|
static |
Check whether translation to LLVM IR for the given operation is currently supported.
If not, descriptive diagnostics will be emitted to let users know this is a not-yet-implemented feature.
Definition at line 146 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Operation::emitError(), mlir::Operation::emitWarning(), findPrivatizer(), and mlir::Operation::getName().
Referenced by convertHostOrTargetOperation(), convertOmpAtomicCapture(), convertOmpAtomicRead(), convertOmpAtomicUpdate(), convertOmpAtomicWrite(), convertOmpCritical(), convertOmpMasked(), convertOmpMaster(), convertOmpOrdered(), convertOmpOrderedRegion(), convertOmpParallel(), convertOmpSections(), convertOmpSimd(), convertOmpSingle(), convertOmpTarget(), convertOmpTargetData(), convertOmpTaskgroupOp(), convertOmpTaskOp(), convertOmpTaskwaitOp(), convertOmpTeams(), convertOmpThreadprivate(), and convertOmpWsloop().
|
static |
Definition at line 2761 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpTarget(), and convertOmpTargetData().
|
static |
Populates privatizations
with privatization declarations used for the given op.
Definition at line 704 of file OpenMPToLLVMIRTranslation.cpp.
References findPrivatizer().
Referenced by convertOmpParallel(), and convertOmpTaskOp().
|
static |
Populates reductions
with reduction declarations used in the given op.
Definition at line 719 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpParallel(), convertOmpSections(), and convertOmpWsloop().
|
static |
Collect reduction info.
Definition at line 1040 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::convertType(), mlir::getType(), mlir::LLVM::ModuleTranslation::lookupValue(), makeAtomicReductionGen(), and makeReductionGen().
Referenced by convertOmpParallel(), and createReductionsAndCleanup().
|
static |
Convert an Atomic Ordering attribute to llvm::AtomicOrdering.
Definition at line 2268 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpAtomicCapture(), convertOmpAtomicRead(), convertOmpAtomicUpdate(), and convertOmpAtomicWrite().
llvm::AtomicRMWInst::BinOp convertBinOpToAtomic | ( | Operation & | op | ) |
Converts an LLVM dialect binary operation to the corresponding enum value for atomicrmw
supported binary operation.
Definition at line 2335 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpAtomicCapture(), and convertOmpAtomicUpdate().
|
static |
Definition at line 3993 of file OpenMPToLLVMIRTranslation.cpp.
References convertToCaptureClauseKind(), convertToDeviceClauseKind(), mlir::LocationAttr::findInstanceOf(), mlir::LLVM::ModuleTranslation::getLLVMModule(), mlir::Operation::getLoc(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getParentOfType(), mlir::LLVM::ModuleTranslation::lookupFunction(), and mlir::SymbolTable::Private.
LogicalResult convertFlagsAttr | ( | Operation * | op, |
mlir::omp::FlagsAttr | attribute, | ||
LLVM::ModuleTranslation & | moduleTranslation | ||
) |
Lowers the FlagsAttr which is applied to the module on the device pass when offloading, this attribute contains OpenMP RTL globals that can be passed as flags to the frontend, otherwise they are set to default.
Definition at line 3614 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::getOpenMPBuilder().
|
static |
Given an OpenMP MLIR operation, create the corresponding LLVM IR (including OpenMP runtime calls).
Definition at line 4104 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpAtomicCapture(), convertOmpAtomicRead(), convertOmpAtomicUpdate(), convertOmpAtomicWrite(), convertOmpCritical(), convertOmpMasked(), convertOmpMaster(), convertOmpOrdered(), convertOmpOrderedRegion(), convertOmpParallel(), convertOmpSections(), convertOmpSimd(), convertOmpSingle(), convertOmpTarget(), convertOmpTargetData(), convertOmpTaskgroupOp(), convertOmpTaskOp(), convertOmpTaskwaitOp(), convertOmpTeams(), convertOmpThreadprivate(), convertOmpWsloop(), mlir::Operation::emitError(), mlir::Operation::getName(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and handleError().
Referenced by convertTargetDeviceOp().
|
static |
Helper function to map block arguments defined by ignored loop wrappers to LLVM values and prevent any uses of those from triggering null pointer dereferences.
This must be called after block arguments of parent wrappers have already been mapped to LLVM IR values.
Definition at line 522 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertIgnoredWrappers().
|
static |
Helper function to call convertIgnoredWrapper()
for all wrappers of the given loopOp
nested inside of parentOp
.
This has the effect of mapping entry block arguments defined by these operations to outside values.
It must be called after block arguments of parentOp
have already been mapped themselves.
Definition at line 555 of file OpenMPToLLVMIRTranslation.cpp.
References convertIgnoredWrapper().
Referenced by convertOmpWsloop().
|
static |
Definition at line 2429 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Block::begin(), checkImplementationStatus(), convertAtomicOrdering(), convertBinOpToAtomic(), mlir::LLVM::ModuleTranslation::convertBlock(), mlir::LLVM::ModuleTranslation::convertType(), findAllocaInsertPoint(), mlir::Region::front(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getOperand(), mlir::Operation::getOperands(), mlir::Operation::getRegion(), mlir::Block::getTerminator(), handleError(), mlir::LLVM::ModuleTranslation::lookupValue(), mlir::LLVM::ModuleTranslation::mapBlock(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Convert omp.atomic.read operation to LLVM IR.
Definition at line 2289 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertAtomicOrdering(), mlir::LLVM::ModuleTranslation::convertType(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP atomic update operation using OpenMPIRBuilder.
Definition at line 2351 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Block::begin(), checkImplementationStatus(), convertAtomicOrdering(), convertBinOpToAtomic(), mlir::LLVM::ModuleTranslation::convertBlock(), mlir::LLVM::ModuleTranslation::convertType(), findAllocaInsertPoint(), mlir::Region::front(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getOperand(), mlir::Operation::getOperands(), mlir::Operation::getRegion(), mlir::Block::getTerminator(), handleError(), mlir::LLVM::ModuleTranslation::lookupValue(), mlir::LLVM::ModuleTranslation::mapBlock(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an omp.atomic.write operation to LLVM IR.
Definition at line 2314 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertAtomicOrdering(), mlir::LLVM::ModuleTranslation::convertType(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP 'critical' operation into LLVM IR using OpenMPIRBuilder.
Definition at line 653 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::get(), mlir::LLVM::ModuleTranslation::getLLVMContext(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and handleError().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP 'masked' operation into LLVM IR using OpenMPIRBuilder.
Definition at line 574 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::get(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP 'master' operation into LLVM IR using OpenMPIRBuilder.
Definition at line 618 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and handleError().
Referenced by convertHostOrTargetOperation().
|
static |
Converts the given region that appears within an OpenMP dialect operation to LLVM IR, creating a branch from the sourceBlock
to the entry block of the region, and a branch from any block with an successor-less OpenMP terminator to continuationBlock
.
Populates continuationBlockPHIs
with the PHI nodes of the continuation block if provided.
Definition at line 390 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::detail::connectPHINodes(), mlir::LLVM::ModuleTranslation::convertBlock(), mlir::LLVM::ModuleTranslation::convertType(), mlir::LLVM::ModuleTranslation::forgetMapping(), mlir::Region::getBlocks(), mlir::getBlocksSortedByDominance(), mlir::Operation::getNumOperands(), mlir::Operation::getOperand(), mlir::LLVM::ModuleTranslation::lookupBlock(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapBlock().
Referenced by convertOmpCritical(), convertOmpMasked(), convertOmpMaster(), convertOmpOrderedRegion(), convertOmpParallel(), convertOmpSections(), convertOmpSimd(), convertOmpSingle(), convertOmpTarget(), convertOmpTaskgroupOp(), convertOmpTaskOp(), convertOmpTeams(), convertOmpWsloop(), and inlineConvertOmpRegions().
|
static |
Converts an OpenMP 'ordered' operation into LLVM IR using OpenMPIRBuilder.
Definition at line 879 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), findAllocaInsertPoint(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and mlir::LLVM::ModuleTranslation::lookupValues().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP 'ordered_region' operation into LLVM IR using OpenMPIRBuilder.
Definition at line 912 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and handleError().
Referenced by convertHostOrTargetOperation().
|
static |
Converts the OpenMP parallel operation to LLVM IR.
Definition at line 1868 of file OpenMPToLLVMIRTranslation.cpp.
References allocatePrivateVars(), allocReductionVars(), checkImplementationStatus(), collectPrivatizationDecls(), collectReductionDecls(), collectReductionInfo(), convertOmpOpRegions(), mlir::LLVM::ModuleTranslation::convertType(), findAllocaInsertPoint(), mlir::LLVM::ModuleTranslation::forgetMapping(), getIsByRef(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), getProcBindKind(), handleError(), inlineConvertOmpRegions(), inlineOmpRegionCleanup(), mlir::LLVM::ModuleTranslation::lookupValue(), mapInitializationArgs(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Definition at line 1327 of file OpenMPToLLVMIRTranslation.cpp.
References allocAndInitializeReductionVars(), mlir::Region::begin(), checkImplementationStatus(), collectReductionDecls(), convertOmpOpRegions(), createReductionsAndCleanup(), findAllocaInsertPoint(), mlir::Region::getArguments(), getIsByRef(), mlir::Region::getNumArguments(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getRegion(), handleError(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP simd loop into LLVM IR using OpenMPIRBuilder.
Definition at line 2172 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), convertOrderKind(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP single construct into LLVM IR using OpenMPIRBuilder.
Definition at line 1439 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), mlir::LLVM::ModuleTranslation::lookupFunction(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertHostOrTargetOperation().
|
static |
Definition at line 3818 of file OpenMPToLLVMIRTranslation.cpp.
References buildDependData(), checkImplementationStatus(), collectMapDataFromMapOperands(), convertOmpOpRegions(), createDeviceArgumentAccessor(), findAllocaInsertPoint(), findPrivatizer(), mlir::LLVM::ModuleTranslation::forgetMapping(), genMapInfos(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getParentOfType(), getTargetEntryUniqueInfo(), handleDeclareTargetMapVar(), handleError(), inlineConvertOmpRegions(), mlir::LLVM::ModuleTranslation::lookupFunction(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation(), and convertTargetOpsInNest().
|
static |
Definition at line 3379 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), collectMapDataFromMapOperands(), findAllocaInsertPoint(), genMapInfos(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getParentOfType(), handleError(), inlineConvertOmpRegions(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation(), and convertTargetOpsInNest().
|
static |
Converts an OpenMP taskgroup construct into LLVM IR using OpenMPIRBuilder.
Definition at line 1676 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), findAllocaInsertPoint(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), and handleError().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP task construct into LLVM IR using OpenMPIRBuilder.
Definition at line 1554 of file OpenMPToLLVMIRTranslation.cpp.
References allocatePrivateVars(), buildDependData(), checkImplementationStatus(), collectPrivatizationDecls(), convertOmpOpRegions(), findAllocaInsertPoint(), mlir::LLVM::ModuleTranslation::forgetMapping(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), inlineConvertOmpRegions(), inlineOmpRegionCleanup(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Definition at line 1703 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), and mlir::LLVM::ModuleTranslation::getOpenMPBuilder().
Referenced by convertHostOrTargetOperation().
|
static |
Definition at line 1482 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), convertOmpOpRegions(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), and mlir::LLVM::ModuleTranslation::lookupValue().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP Threadprivate operation into LLVM IR using OpenMPIRBuilder.
Definition at line 2526 of file OpenMPToLLVMIRTranslation.cpp.
References checkImplementationStatus(), mlir::Operation::emitError(), mlir::Value::getDefiningOp(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), mlir::Operation::getResult(), mlir::LLVM::ModuleTranslation::lookupGlobal(), mlir::LLVM::ModuleTranslation::mapValue(), and mlir::LLVM::ModuleTranslation::symbolTable().
Referenced by convertHostOrTargetOperation().
|
static |
Converts an OpenMP workshare loop into LLVM IR using OpenMPIRBuilder.
Definition at line 1714 of file OpenMPToLLVMIRTranslation.cpp.
References allocAndInitializeReductionVars(), checkImplementationStatus(), collectReductionDecls(), convertIgnoredWrappers(), convertOmpOpRegions(), createReductionsAndCleanup(), findAllocaInsertPoint(), getIsByRef(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertHostOrTargetOperation().
|
static |
Convert Order attribute to llvm::omp::OrderKind.
Definition at line 2160 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpSimd().
|
static |
Definition at line 4230 of file OpenMPToLLVMIRTranslation.cpp.
References convertHostOrTargetOperation().
|
static |
Definition at line 4236 of file OpenMPToLLVMIRTranslation.cpp.
References convertOmpTarget(), convertOmpTargetData(), and mlir::Operation::walk().
|
static |
Definition at line 2574 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertDeclareTargetAttr().
|
static |
Definition at line 2558 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertDeclareTargetAttr().
|
static |
Definition at line 3271 of file OpenMPToLLVMIRTranslation.cpp.
References calculateBoundsOffset(), checkIfPointerMap(), and findAllocaInsertPoint().
Referenced by genMapInfos().
|
static |
Definition at line 3760 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpTarget().
|
static |
Definition at line 1115 of file OpenMPToLLVMIRTranslation.cpp.
References collectReductionInfo(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), handleError(), and inlineOmpRegionCleanup().
Referenced by convertOmpSections(), and convertOmpWsloop().
|
static |
Find the insertion point for allocas given the current insertion point for normal operations in the builder.
Definition at line 347 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::WalkResult::interrupt(), mlir::LLVM::ModuleTranslation::stackWalk(), and mlir::WalkResult::wasInterrupted().
Referenced by convertOmpAtomicCapture(), convertOmpAtomicUpdate(), convertOmpOrdered(), convertOmpParallel(), convertOmpSections(), convertOmpTarget(), convertOmpTargetData(), convertOmpTaskgroupOp(), convertOmpTaskOp(), convertOmpWsloop(), and createAlteredByCaptureMap().
|
static |
Looks up from the operation from and returns the PrivateClauseOp with name symbolName.
Definition at line 131 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by checkImplementationStatus(), collectPrivatizationDecls(), and convertOmpTarget().
|
static |
Definition at line 3335 of file OpenMPToLLVMIRTranslation.cpp.
References createAlteredByCaptureMap(), mlir::LLVM::ModuleTranslation::getOpenMPBuilder(), processIndividualMap(), and processMapWithMembersOf().
Referenced by convertOmpTarget(), and convertOmpTargetData().
uint64_t getArrayElementSizeInBits | ( | LLVM::LLVMArrayType | arrTy, |
DataLayout & | dl | ||
) |
Definition at line 2696 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::DataLayout::getTypeSizeInBits().
Referenced by getSizeInBytes().
|
static |
Definition at line 2588 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::SymbolTable::Private.
Referenced by getRefPtrIfDeclareTarget().
|
static |
Definition at line 2873 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by mapParentWithMembers().
Definition at line 1172 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpParallel(), convertOmpSections(), and convertOmpWsloop().
|
static |
Definition at line 2866 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by mapParentWithMembers(), processMapMembersWithParent(), and processMapWithMembersOf().
|
static |
Convert ProcBindKind from MLIR-generated enum to LLVM enum.
Definition at line 501 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpParallel().
|
static |
Definition at line 2625 of file OpenMPToLLVMIRTranslation.cpp.
References getDeclareTargetRefPtrSuffix(), mlir::Value::getDefiningOp(), mlir::LLVM::ModuleTranslation::getLLVMModule(), and mlir::LLVM::ModuleTranslation::getOpenMPBuilder().
llvm::Value* getSizeInBytes | ( | DataLayout & | dl, |
const mlir::Type & | type, | ||
Operation * | clauseOp, | ||
llvm::Value * | basePointer, | ||
llvm::Type * | baseType, | ||
llvm::IRBuilderBase & | builder, | ||
LLVM::ModuleTranslation & | moduleTranslation | ||
) |
Definition at line 2713 of file OpenMPToLLVMIRTranslation.cpp.
References getArrayElementSizeInBits(), mlir::DataLayout::getTypeSizeInBits(), and mlir::LLVM::ModuleTranslation::lookupValue().
|
static |
Definition at line 3651 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpTarget().
|
static |
Definition at line 3672 of file OpenMPToLLVMIRTranslation.cpp.
Referenced by convertOmpTarget().
|
static |
Definition at line 323 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Operation::emitError().
Referenced by convertHostOrTargetOperation(), convertOmpAtomicCapture(), convertOmpAtomicUpdate(), convertOmpCritical(), convertOmpMasked(), convertOmpMaster(), convertOmpOrderedRegion(), convertOmpParallel(), convertOmpSections(), convertOmpSimd(), convertOmpSingle(), convertOmpTarget(), convertOmpTargetData(), convertOmpTaskgroupOp(), convertOmpTaskOp(), convertOmpTeams(), convertOmpWsloop(), createReductionsAndCleanup(), handleError(), and inlineConvertOmpRegions().
|
static |
Definition at line 337 of file OpenMPToLLVMIRTranslation.cpp.
References handleError().
|
static |
Translates the blocks contained in the given region and appends them to at the current insertion point of builder
.
The operations of the entry block are appended to the current insertion block. If set, continuationBlockArgs
is populated with translated values that correspond to the values omp.yield'ed from the region.
Definition at line 738 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Block::back(), mlir::LLVM::ModuleTranslation::convertBlock(), convertOmpOpRegions(), mlir::Region::empty(), mlir::LLVM::ModuleTranslation::forgetMapping(), mlir::Region::front(), mlir::Operation::getOperands(), mlir::Region::getParentOp(), handleError(), mlir::LLVM::ModuleTranslation::lookupValues(), and mlir::LLVM::ModuleTranslation::mapBlock().
Referenced by allocAndInitializeReductionVars(), allocatePrivateVars(), allocReductionVars(), convertOmpParallel(), convertOmpTarget(), convertOmpTargetData(), convertOmpTaskOp(), inlineOmpRegionCleanup(), makeAtomicReductionGen(), and makeReductionGen().
|
static |
handling of DeclareReductionOp's cleanup region
Definition at line 1076 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::ModuleTranslation::convertType(), mlir::detail::enumerate(), mlir::LLVM::ModuleTranslation::forgetMapping(), mlir::Block::front(), mlir::Block::getArgument(), mlir::Value::getType(), inlineConvertOmpRegions(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by convertOmpParallel(), convertOmpTaskOp(), and createReductionsAndCleanup().
|
static |
Definition at line 2607 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Value::getDefiningOp().
Referenced by checkIfPointerMap().
|
static |
Definition at line 4084 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Operation::getParentOfType().
|
static |
Create an OpenMPIRBuilder-compatible atomic reduction generator for the given reduction declaration.
The generator uses builder
but ignores its insertion point. Returns null if there is no atomic region available in the reduction declaration.
Definition at line 849 of file OpenMPToLLVMIRTranslation.cpp.
References inlineConvertOmpRegions(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by collectReductionInfo().
|
static |
Create an OpenMPIRBuilder-compatible reduction generator for the given reduction declaration.
The generator uses builder
but ignores its insertion point.
Definition at line 818 of file OpenMPToLLVMIRTranslation.cpp.
References inlineConvertOmpRegions(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by collectReductionInfo().
|
static |
Map input arguments to reduction initialization region.
Definition at line 1017 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::Region::front(), mlir::Block::getNumArguments(), mlir::LLVM::ModuleTranslation::lookupValue(), and mlir::LLVM::ModuleTranslation::mapValue().
Referenced by allocAndInitializeReductionVars(), and convertOmpParallel().
|
static |
Definition at line 3019 of file OpenMPToLLVMIRTranslation.cpp.
References mlir::LLVM::createMappingInformation(), getFirstOrLastMappedMemberPtr(), getMapDataMemberIdx(), and None.
Referenced by processMapWithMembersOf().
|
static |
Definition at line 3191 of file OpenMPToLLVMIRTranslation.cpp.
References checkIfPointerMap().
Referenced by genMapInfos(), and processMapWithMembersOf().
|
static |
Definition at line 3125 of file OpenMPToLLVMIRTranslation.cpp.
References checkIfPointerMap(), mlir::LLVM::createMappingInformation(), mlir::LLVM::ModuleTranslation::getLLVMModule(), getMapDataMemberIdx(), and None.
Referenced by processMapWithMembersOf().
|
static |
Definition at line 3228 of file OpenMPToLLVMIRTranslation.cpp.
References getMapDataMemberIdx(), mapParentWithMembers(), processIndividualMap(), and processMapMembersWithParent().
Referenced by genMapInfos().