LLVM: llvm::omp Namespace Reference (original) (raw)

Classes
struct AssumptionClauseMappingInfo
Helper to describe assume clauses. More...
struct GV
Defines various target-specific GPU grid values that must be consistent between host RTL (plugin), device RTL, and clang. More...
struct OMPContext
The context for a source location is made up of active property traits, e.g., device={kind(host)}, and constructs traits which describe the nesting in OpenMP constructs at the location. More...
struct VariantMatchInfo
Variant match information describes the required traits and how they are scored (via the ScoresMap). More...
Typedefs
using Kernel = Function *
Summary of a kernel (=entry point for target offloading).
using KernelSet = SetVector< Kernel >
Set of kernels in the module.
Enumerations
enum class InternalControlVar { ICV_DATA_ENV }
IDs for all Internal Control Variables (ICVs). More...
enum class ICVInitValue { ICV_INIT_VALUE }
enum class RuntimeFunction { OMP_RTL }
IDs for all omp runtime library (RTL) functions. More...
enum class DefaultKind { OMP_DEFAULT_KIND }
IDs for the different default kinds. More...
enum class IdentFlag { OMP_IDENT_FLAG }
IDs for all omp runtime library ident_t flag encodings (see their defintion in openmp/runtime/src/kmp.h). More...
enum class OMPScheduleType { None = 0 , BaseStaticChunked = 1 , BaseStatic = 2 , BaseDynamicChunked = 3 , BaseGuidedChunked = 4 , BaseRuntime = 5 , BaseAuto = 6 , BaseTrapezoidal = 7 , BaseGreedy = 8 , BaseBalanced = 9 , BaseGuidedIterativeChunked = 10 , BaseGuidedAnalyticalChunked = 11 , BaseSteal = 12 , BaseStaticBalancedChunked = 13 , BaseGuidedSimd = 14 , BaseRuntimeSimd = 15 , BaseDistributeChunked = 27 , BaseDistribute = 28 , ModifierUnordered = (1 << 5) , ModifierOrdered = (1 << 6) , ModifierNomerge = (1 << 7) , ModifierMonotonic = (1 << 29) , ModifierNonmonotonic = (1 << 30) , OrderingMask = ModifierUnordered | ModifierOrdered ModifierNomerge , MonotonicityMask = ModifierMonotonic ModifierNonmonotonic , ModifierMask = OrderingMask MonotonicityMask , UnorderedStaticChunked = BaseStaticChunked ModifierUnordered , UnorderedStatic = BaseStatic ModifierUnordered , UnorderedDynamicChunked = BaseDynamicChunked ModifierUnordered , UnorderedGuidedChunked = BaseGuidedChunked ModifierUnordered , UnorderedRuntime = BaseRuntime ModifierUnordered , UnorderedAuto = BaseAuto ModifierUnordered , UnorderedTrapezoidal = BaseTrapezoidal ModifierUnordered , UnorderedGreedy = BaseGreedy ModifierUnordered , UnorderedBalanced = BaseBalanced ModifierUnordered , UnorderedGuidedIterativeChunked, UnorderedGuidedAnalyticalChunked, UnorderedSteal = BaseSteal ModifierUnordered , UnorderedStaticBalancedChunked, UnorderedGuidedSimd = BaseGuidedSimd ModifierUnordered , UnorderedRuntimeSimd = BaseRuntimeSimd ModifierUnordered , OrderedStaticChunked = BaseStaticChunked ModifierOrdered , OrderedStatic = BaseStatic ModifierOrdered , OrderedDynamicChunked = BaseDynamicChunked ModifierOrdered , OrderedGuidedChunked = BaseGuidedChunked ModifierOrdered , OrderedRuntime = BaseRuntime ModifierOrdered , OrderedAuto = BaseAuto ModifierOrdered , OrderdTrapezoidal = BaseTrapezoidal ModifierOrdered , OrderedDistributeChunked = BaseDistributeChunked ModifierOrdered , OrderedDistribute = BaseDistribute ModifierOrdered , NomergeUnorderedStaticChunked, NomergeUnorderedStatic, NomergeUnorderedDynamicChunked, NomergeUnorderedGuidedChunked, NomergeUnorderedRuntime, NomergeUnorderedAuto = BaseAuto ModifierUnordered ModifierNomerge , NomergeUnorderedTrapezoidal, NomergeUnorderedGreedy, NomergeUnorderedBalanced, NomergeUnorderedGuidedIterativeChunked, NomergeUnorderedGuidedAnalyticalChunked, NomergeUnorderedSteal, NomergeOrderedStaticChunked, NomergeOrderedStatic = BaseStatic ModifierOrdered ModifierNomerge , NomergeOrderedDynamicChunked, NomergeOrderedGuidedChunked, NomergeOrderedRuntime, NomergeOrderedAuto = BaseAuto ModifierOrdered ModifierNomerge , NomergeOrderedTrapezoidal }
enum class OpenMPOffloadMappingFlags : uint64_t { OMP_MAP_NONE = 0x0 , OMP_MAP_TO = 0x01 , OMP_MAP_FROM = 0x02 , OMP_MAP_ALWAYS = 0x04 , OMP_MAP_DELETE = 0x08 , OMP_MAP_PTR_AND_OBJ = 0x10 , OMP_MAP_TARGET_PARAM = 0x20 , OMP_MAP_RETURN_PARAM = 0x40 , OMP_MAP_PRIVATE = 0x80 , OMP_MAP_LITERAL = 0x100 , OMP_MAP_IMPLICIT = 0x200 , OMP_MAP_CLOSE = 0x400 , OMP_MAP_PRESENT = 0x1000 , OMP_MAP_OMPX_HOLD = 0x2000 , OMP_MAP_NON_CONTIG = 0x100000000000 , OMP_MAP_MEMBER_OF = 0xffff000000000000 }
Values for bit flags used to specify the mapping type for offloading. More...
enum OpenMPOffloadingReservedDeviceIDs { OMP_DEVICEID_UNDEF = -1 }
enum class AddressSpace : unsigned { Generic = 0 , Global = 1 , Shared = 3 , Constant = 4 , Local = 5 }
enum class OMPInteropType { Unknown, Target, TargetSync }
enum class OMPAtomicCompareOp : unsigned { EQ, MIN, MAX }
Atomic compare operations. Currently OpenMP only supports ==, >, and <. More...
enum class RTLDependInfoFields { BaseAddr, Len, Flags }
Fields ids in kmp_depend_info record. More...
enum class RTLDependenceKindTy { DepUnknown = 0x0 , DepIn = 0x01 , DepInOut = 0x3 , DepMutexInOutSet = 0x4 , DepInOutSet = 0x8 , DepOmpAllMem = 0x80 }
Dependence kind for RTL. More...
enum class WorksharingLoopType { ForStaticLoop, DistributeStaticLoop, DistributeForStaticLoop }
A type of worksharing loop construct. More...
enum class TraitSet { OMP_TRAIT_SET }
OpenMP Context related IDs and helpers. More...
enum class TraitSelector { OMP_TRAIT_SELECTOR }
IDs for all OpenMP context selector trait (device={kind/isa...}/...). More...
enum class TraitProperty { OMP_TRAIT_PROPERTY, OMP_LAST_TRAIT_PROPERTY }
IDs for all OpenMP context trait properties (host/gpu/bsc/llvm/...) More...
enum OMPTgtExecModeFlags : unsigned char { OMP_TGT_EXEC_MODE_GENERIC = 1 << 0 , OMP_TGT_EXEC_MODE_SPMD = 1 << 1 , OMP_TGT_EXEC_MODE_GENERIC_SPMD }
Functions
ArrayRef< Directive > getLeafConstructs (Directive D)
ArrayRef< Directive > getLeafConstructsOrSelf (Directive D)
ArrayRef< Directive > getLeafOrCompositeConstructs (Directive D, SmallVectorImpl< Directive > &Output)
Directive getCompoundConstruct (ArrayRef< Directive > Parts)
bool isLeafConstruct (Directive D)
bool isCompositeConstruct (Directive D)
bool isCombinedConstruct (Directive D)
static constexpr bool canHaveIterator (Clause C)
Can clause C have an iterator-modifier.
ArrayRef< unsigned > getOpenMPVersions ()
std::string prettifyFunctionName (StringRef FunctionName)
Create a nicer version of a function name for humans to look at.
std::string deconstructOpenMPKernelName (StringRef KernelName, unsigned &LineNo)
Deconstruct an OpenMP kernel name into the parent function name and the line number.
std::string getAllAssumeClauseOptions ()
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ()
TraitSet getOpenMPContextTraitSetKind (StringRef Str)
Parse Str and return the trait set it matches or TraitSet::invalid.
TraitSet getOpenMPContextTraitSetForSelector (TraitSelector Selector)
Return the trait set for which Selector is a selector.
TraitSet getOpenMPContextTraitSetForProperty (TraitProperty Property)
Return the trait set for which Property is a property.
StringRef getOpenMPContextTraitSetName (TraitSet Kind)
Return a textual representation of the trait set Kind.
TraitSelector getOpenMPContextTraitSelectorKind (StringRef Str)
Parse Str and return the trait set it matches or TraitSelector::invalid.
TraitSelector getOpenMPContextTraitSelectorForProperty (TraitProperty Property)
Return the trait selector for which Property is a property.
StringRef getOpenMPContextTraitSelectorName (TraitSelector Kind)
Return a textual representation of the trait selector Kind.
TraitProperty getOpenMPContextTraitPropertyKind (TraitSet Set, TraitSelector Selector, StringRef Str)
Parse Str and return the trait property it matches in the set Set and selector Selector or TraitProperty::invalid.
TraitProperty getOpenMPContextTraitPropertyForSelector (TraitSelector Selector)
Return the trait property for a singleton selector Selector.
StringRef getOpenMPContextTraitPropertyName (TraitProperty Kind, StringRef RawString)
Return a textual representation of the trait property Kind, which might be the raw string we parsed (RawString) if we do not translate the property into a (distinct) enum.
StringRef getOpenMPContextTraitPropertyFullName (TraitProperty Kind)
Return a textual representation of the trait property Kind with selector and set name included.
std::string listOpenMPContextTraitSets ()
Return a string listing all trait sets.
std::string listOpenMPContextTraitSelectors (TraitSet Set)
Return a string listing all trait selectors for Set.
std::string listOpenMPContextTraitProperties (TraitSet Set, TraitSelector Selector)
Return a string listing all trait properties for Set and Selector.
bool isValidTraitSelectorForTraitSet (TraitSelector Selector, TraitSet Set, bool &AllowsTraitScore, bool &RequiresProperty)
}
bool isValidTraitPropertyForTraitSetAndSelector (TraitProperty Property, TraitSelector Selector, TraitSet Set)
Return true if Property can be nested in Selector and Set.
bool isVariantApplicableInContext (const VariantMatchInfo &VMI, const OMPContext &Ctx, bool DeviceSetOnly=false)
Return true if VMI is applicable in Ctx, that is, all traits required by VMI are available in the OpenMP context Ctx.
int getBestVariantMatchForContext (const SmallVectorImpl< VariantMatchInfo > &VMIs, const OMPContext &Ctx)
Return the index (into VMIs) of the variant with the highest score from the ones applicble in Ctx.
template<unsigned wavesize>
constexpr const GV & getAMDGPUGridValues ()
bool containsOpenMP (Module &M)
Helper to determine if M contains OpenMP.
bool isOpenMPDevice (Module &M)
Helper to determine if M is a OpenMP target offloading device module.
bool isOpenMPKernel (Function &Fn)
Return true iff Fn is an OpenMP GPU kernel; Fn has the "kernel" attribute.
KernelSet getDeviceKernels (Module &M)
Get OpenMP device kernels in M.
Variables
static constexpr AssumptionClauseMappingInfo AssumptionClauseMappings []
All known assume clauses.
static constexpr GV AMDGPUGridValues64
For AMDGPU GPUs.
static constexpr GV AMDGPUGridValues32
static constexpr GV NVPTXGridValues
For Nvidia GPUs.

Kernel

Summary of a kernel (=entry point for target offloading).

Definition at line 21 of file OpenMPOpt.h.

KernelSet

Set of kernels in the module.

Definition at line 24 of file OpenMPOpt.h.

AddressSpace

Enumerator
Generic
Global
Shared
Constant
Local

Definition at line 255 of file OMPConstants.h.

DefaultKind

IDs for the different default kinds.

Enumerator
OMP_DEFAULT_KIND

Definition at line 54 of file OMPConstants.h.

ICVInitValue

IdentFlag

IDs for all omp runtime library ident_t flag encodings (see their defintion in openmp/runtime/src/kmp.h).

Enumerator
OMP_IDENT_FLAG

Definition at line 65 of file OMPConstants.h.

InternalControlVar

IDs for all Internal Control Variables (ICVs).

Enumerator
ICV_DATA_ENV

Definition at line 26 of file OMPConstants.h.

OMPAtomicCompareOp

Atomic compare operations. Currently OpenMP only supports ==, >, and <.

Enumerator
EQ
MIN
MAX

Definition at line 267 of file OMPConstants.h.

OMPInteropType

Note

This needs to be kept in sync with interop.h enum kmp_interop_type_t.:

Enumerator
Unknown
Target
TargetSync

Definition at line 264 of file OMPConstants.h.

OMPScheduleType

Note

This needs to be kept in sync with kmp.h enum sched_type. Todo: Update kmp.h to include this file, and remove the enums in kmp.h

Enumerator
None
BaseStaticChunked
BaseStatic
BaseDynamicChunked
BaseGuidedChunked
BaseRuntime
BaseAuto
BaseTrapezoidal
BaseGreedy
BaseBalanced
BaseGuidedIterativeChunked
BaseGuidedAnalyticalChunked
BaseSteal
BaseStaticBalancedChunked
BaseGuidedSimd
BaseRuntimeSimd
BaseDistributeChunked
BaseDistribute
ModifierUnordered
ModifierOrdered
ModifierNomerge
ModifierMonotonic
ModifierNonmonotonic
OrderingMask
MonotonicityMask
ModifierMask
UnorderedStaticChunked
UnorderedStatic
UnorderedDynamicChunked
UnorderedGuidedChunked
UnorderedRuntime
UnorderedAuto
UnorderedTrapezoidal
UnorderedGreedy
UnorderedBalanced
UnorderedGuidedIterativeChunked
UnorderedGuidedAnalyticalChunked
UnorderedSteal
UnorderedStaticBalancedChunked
UnorderedGuidedSimd
UnorderedRuntimeSimd
OrderedStaticChunked
OrderedStatic
OrderedDynamicChunked
OrderedGuidedChunked
OrderedRuntime
OrderedAuto
OrderdTrapezoidal
OrderedDistributeChunked
OrderedDistribute
NomergeUnorderedStaticChunked
NomergeUnorderedStatic
NomergeUnorderedDynamicChunked
NomergeUnorderedGuidedChunked
NomergeUnorderedRuntime
NomergeUnorderedAuto
NomergeUnorderedTrapezoidal
NomergeUnorderedGreedy
NomergeUnorderedBalanced
NomergeUnorderedGuidedIterativeChunked
NomergeUnorderedGuidedAnalyticalChunked
NomergeUnorderedSteal
NomergeOrderedStaticChunked
NomergeOrderedStatic
NomergeOrderedDynamicChunked
NomergeOrderedGuidedChunked
NomergeOrderedRuntime
NomergeOrderedAuto
NomergeOrderedTrapezoidal

Definition at line 82 of file OMPConstants.h.

OMPTgtExecModeFlags

Enumerator
OMP_TGT_EXEC_MODE_GENERIC
OMP_TGT_EXEC_MODE_SPMD
OMP_TGT_EXEC_MODE_GENERIC_SPMD

Definition at line 21 of file OMPDeviceConstants.h.

OpenMPOffloadingReservedDeviceIDs

Enumerator
OMP_DEVICEID_UNDEF Device ID if the device was not defined, runtime should get it from environment variables in the spec.

Definition at line 249 of file OMPConstants.h.

OpenMPOffloadMappingFlags

Values for bit flags used to specify the mapping type for offloading.

Enumerator
OMP_MAP_NONE No flags.
OMP_MAP_TO Allocate memory on the device and move data from host to device.
OMP_MAP_FROM Allocate memory on the device and move data from device to host.
OMP_MAP_ALWAYS Always perform the requested mapping action on the element, even if it was already mapped before.
OMP_MAP_DELETE Delete the element from the device environment, ignoring the current reference count associated with the element.
OMP_MAP_PTR_AND_OBJ The element being mapped is a pointer-pointee pair; both the pointer and the pointee should be mapped.
OMP_MAP_TARGET_PARAM This flags signals that the base address of an entry should be passed to the target kernel as an argument.
OMP_MAP_RETURN_PARAM Signal that the runtime library has to return the device pointer in the current position for the data being mapped. Used when we have the use_device_ptr or use_device_addr clause.
OMP_MAP_PRIVATE This flag signals that the reference being passed is a pointer to private data.
OMP_MAP_LITERAL Pass the element to the device by value.
OMP_MAP_IMPLICIT Implicit map.
OMP_MAP_CLOSE Close is a hint to the runtime to allocate memory close to the target device.
OMP_MAP_PRESENT 0x800 is reserved for compatibility with XLC. Produce a runtime error if the data is not already allocated.
OMP_MAP_OMPX_HOLD
OMP_MAP_NON_CONTIG Signal that the runtime library should use args as an array of descriptor_dim pointers and use args_size as dims. Used when we have non-contiguous list items in target update directive
OMP_MAP_MEMBER_OF The 16 MSBs of the flags indicate whether the entry is member of some struct/class.

Definition at line 195 of file OMPConstants.h.

RTLDependenceKindTy

Dependence kind for RTL.

Enumerator
DepUnknown
DepIn
DepInOut
DepMutexInOutSet
DepInOutSet
DepOmpAllMem

Definition at line 273 of file OMPConstants.h.

RTLDependInfoFields

Fields ids in kmp_depend_info record.

Enumerator
BaseAddr
Len
Flags

Definition at line 270 of file OMPConstants.h.

RuntimeFunction

IDs for all omp runtime library (RTL) functions.

Enumerator
OMP_RTL

Definition at line 45 of file OMPConstants.h.

TraitProperty

IDs for all OpenMP context trait properties (host/gpu/bsc/llvm/...)

Enumerator
OMP_TRAIT_PROPERTY
OMP_LAST_TRAIT_PROPERTY

Definition at line 45 of file OMPContext.h.

TraitSelector

IDs for all OpenMP context selector trait (device={kind/isa...}/...).

Enumerator
OMP_TRAIT_SELECTOR

Definition at line 39 of file OMPContext.h.

TraitSet

OpenMP Context related IDs and helpers.

{ IDs for all OpenMP context selector trait sets (construct/device/...).

Enumerator
OMP_TRAIT_SET

Definition at line 33 of file OMPContext.h.

WorksharingLoopType

A type of worksharing loop construct.

Enumerator
ForStaticLoop
DistributeStaticLoop
DistributeForStaticLoop

Definition at line 283 of file OMPConstants.h.

canHaveIterator()

static constexpr bool llvm::omp::canHaveIterator ( Clause C) inlinestaticconstexpr

containsOpenMP()

deconstructOpenMPKernelName()

std::string llvm::omp::deconstructOpenMPKernelName ( StringRef KernelName,
unsigned & LineNo
)

getAllAssumeClauseOptions()

std::string llvm::omp::getAllAssumeClauseOptions ( ) inline

getAMDGPUGridValues()

constexpr const GV & llvm::omp::getAMDGPUGridValues ( ) constexpr

getBestVariantMatchForContext()

getCompoundConstruct()

Definition at line 125 of file OMP.cpp.

References llvm::SmallVectorImpl< T >::append(), llvm::ArrayRef< T >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::ArrayRef< T >::drop_front(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), getLeafConstructs(), P, and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by getLeafOrCompositeConstructs().

getDeviceKernels()

getLeafConstructs()

getLeafConstructsOrSelf()

getLeafOrCompositeConstructs()

Definition at line 98 of file OMP.cpp.

References assert(), llvm::ArrayRef< T >::begin(), D, llvm::ArrayRef< T >::end(), getCompoundConstruct(), getFirstCompositeRange(), getLeafConstructsOrSelf(), llvm::make_range(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Range.

getOpenMPContextTraitPropertyForSelector()

getOpenMPContextTraitPropertyFullName()

getOpenMPContextTraitPropertyKind()

Parse Str and return the trait property it matches in the set Set and selector Selector or TraitProperty::invalid.

Definition at line 442 of file OMPContext.cpp.

getOpenMPContextTraitPropertyName()

getOpenMPContextTraitSelectorForProperty()

getOpenMPContextTraitSelectorKind()

getOpenMPContextTraitSelectorName()

getOpenMPContextTraitSetForProperty()

getOpenMPContextTraitSetForSelector()

getOpenMPContextTraitSetKind()

getOpenMPContextTraitSetName()

getOpenMPVersions()

isCombinedConstruct()

isCompositeConstruct()

isLeafConstruct()

isOpenMPDevice()

isOpenMPKernel()

isValidTraitPropertyForTraitSetAndSelector()

isValidTraitSelectorForTraitSet()

}

Return true if Selector can be nested in Set. Also sets AllowsTraitScore and RequiresProperty to true/false if the user can specify a score for properties in Selector and if the Selector requires at least one property.

Definition at line 487 of file OMPContext.cpp.

References llvm_unreachable.

isVariantApplicableInContext()

Return true if VMI is applicable in Ctx, that is, all traits required by VMI are available in the OpenMP context Ctx.

If DeviceSetOnly is true, only the device selector set, if present, are checked. Note that we still honor extension traits provided by the user.

Definition at line 264 of file OMPContext.cpp.

References isVariantApplicableInContextHelper().

listOpenMPContextTraitProperties()

Return a string listing all trait properties for Set and Selector.

Definition at line 535 of file OMPContext.cpp.

listOpenMPContextTraitSelectors()

std::string llvm::omp::listOpenMPContextTraitSelectors ( TraitSet Set )

Return a string listing all trait selectors for Set.

Definition at line 524 of file OMPContext.cpp.

listOpenMPContextTraitSets()

std::string llvm::omp::listOpenMPContextTraitSets ( )

Return a string listing all trait sets.

Definition at line 514 of file OMPContext.cpp.

LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()

llvm::omp::LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ( )

prettifyFunctionName()

std::string llvm::omp::prettifyFunctionName ( StringRef FunctionName )

AMDGPUGridValues32

constexpr GV llvm::omp::AMDGPUGridValues32 staticconstexpr

AMDGPUGridValues64

constexpr GV llvm::omp::AMDGPUGridValues64 staticconstexpr

AssumptionClauseMappings

Initial value:

= {

#define OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression)

}

All known assume clauses.

Definition at line 37 of file OMPAssume.h.

Referenced by getAllAssumeClauseOptions().

NVPTXGridValues

constexpr GV llvm::omp::NVPTXGridValues staticconstexpr