LLVM 20.0.0git
Classes | Typedefs | Enumerations | Functions | Variables
llvm::omp Namespace Reference

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< DirectivegetLeafConstructs (Directive D)
 
ArrayRef< DirectivegetLeafConstructsOrSelf (Directive D)
 
ArrayRef< DirectivegetLeafOrCompositeConstructs (Directive D, SmallVectorImpl< Directive > &Output)
 
Directive getCompoundConstruct (ArrayRef< Directive > Parts)
 
bool isLeafConstruct (Directive D)
 
bool isCompositeConstruct (Directive D)
 
bool isCombinedConstruct (Directive D)
 
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 GVgetAMDGPUGridValues ()
 
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.
 

Typedef Documentation

◆ Kernel

using llvm::omp::Kernel = typedef Function *

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.

Enumeration Type Documentation

◆ AddressSpace

enum class llvm::omp::AddressSpace : unsigned
strong
Enumerator
Generic 
Global 
Shared 
Constant 
Local 

Definition at line 255 of file OMPConstants.h.

◆ DefaultKind

enum class llvm::omp::DefaultKind
strong

IDs for the different default kinds.

Enumerator
OMP_DEFAULT_KIND 

Definition at line 54 of file OMPConstants.h.

◆ ICVInitValue

enum class llvm::omp::ICVInitValue
strong
Enumerator
ICV_INIT_VALUE 

Definition at line 35 of file OMPConstants.h.

◆ IdentFlag

enum class llvm::omp::IdentFlag
strong

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

enum class llvm::omp::InternalControlVar
strong

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

enum class llvm::omp::OMPInteropType
strong
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

enum class llvm::omp::OMPScheduleType
strong
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

enum class llvm::omp::RTLDependenceKindTy
strong

Dependence kind for RTL.

Enumerator
DepUnknown 
DepIn 
DepInOut 
DepMutexInOutSet 
DepInOutSet 
DepOmpAllMem 

Definition at line 273 of file OMPConstants.h.

◆ RTLDependInfoFields

enum class llvm::omp::RTLDependInfoFields
strong

Fields ids in kmp_depend_info record.

Enumerator
BaseAddr 
Len 
Flags 

Definition at line 270 of file OMPConstants.h.

◆ RuntimeFunction

enum class llvm::omp::RuntimeFunction
strong

IDs for all omp runtime library (RTL) functions.

Enumerator
OMP_RTL 

Definition at line 45 of file OMPConstants.h.

◆ TraitProperty

enum class llvm::omp::TraitProperty
strong

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

enum class llvm::omp::TraitSelector
strong

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

Enumerator
OMP_TRAIT_SELECTOR 

Definition at line 39 of file OMPContext.h.

◆ TraitSet

enum class llvm::omp::TraitSet
strong

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

enum class llvm::omp::WorksharingLoopType
strong

A type of worksharing loop construct.

Enumerator
ForStaticLoop 
DistributeStaticLoop 
DistributeForStaticLoop 

Definition at line 283 of file OMPConstants.h.

Function Documentation

◆ containsOpenMP()

bool llvm::omp::containsOpenMP ( Module M)

Helper to determine if M contains OpenMP.

Definition at line 5936 of file OpenMPOpt.cpp.

Referenced by llvm::OpenMPOptCGSCCPass::run(), and llvm::OpenMPOptPass::run().

◆ deconstructOpenMPKernelName()

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

Deconstruct an OpenMP kernel name into the parent function name and the line number.

Definition at line 210 of file OMP.cpp.

References llvm::demangle(), llvm::StringRef::drop_front(), llvm::StringRef::drop_while(), I, llvm::TargetRegionEntryInfo::KernelNamePrefix, llvm::StringRef::npos, llvm::StringRef::rfind(), and llvm::StringRef::starts_with().

Referenced by prettifyFunctionName().

◆ getAllAssumeClauseOptions()

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

Definition at line 44 of file OMPAssume.h.

References AssumptionClauseMappings.

◆ getAMDGPUGridValues()

template<unsigned wavesize>
constexpr const GV & llvm::omp::getAMDGPUGridValues ( )
constexpr

Definition at line 107 of file OMPGridValues.h.

References AMDGPUGridValues32, and AMDGPUGridValues64.

◆ getBestVariantMatchForContext()

int llvm::omp::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.

See llvm::isVariantApplicableInContext.

Definition at line 340 of file OMPContext.cpp.

References llvm::APInt::eq(), getVariantMatchScore(), isStrictSubset(), isVariantApplicableInContextHelper(), llvm::SmallVectorBase< Size_T >::size(), and llvm::APInt::ult().

◆ getCompoundConstruct()

Directive llvm::omp::getCompoundConstruct ( ArrayRef< Directive Parts)

◆ getDeviceKernels()

KernelSet llvm::omp::getDeviceKernels ( Module M)

◆ getLeafConstructs()

ArrayRef< Directive > llvm::omp::getLeafConstructs ( Directive  D)

Definition at line 83 of file OMP.cpp.

References D, and Idx.

Referenced by getCompoundConstruct(), getLeafConstructsOrSelf(), isCombinedConstruct(), and isLeafConstruct().

◆ getLeafConstructsOrSelf()

ArrayRef< Directive > llvm::omp::getLeafConstructsOrSelf ( Directive  D)

Definition at line 91 of file OMP.cpp.

References assert(), D, getLeafConstructs(), and Idx.

Referenced by getLeafOrCompositeConstructs(), and isCompositeConstruct().

◆ getLeafOrCompositeConstructs()

ArrayRef< Directive > llvm::omp::getLeafOrCompositeConstructs ( Directive  D,
SmallVectorImpl< Directive > &  Output 
)

◆ getOpenMPContextTraitPropertyForSelector()

TraitProperty llvm::omp::getOpenMPContextTraitPropertyForSelector ( TraitSelector  Selector)

Return the trait property for a singleton selector Selector.

Definition at line 454 of file OMPContext.cpp.

References llvm::StringSwitch< T, R >::Default(), and getOpenMPContextTraitSelectorName().

◆ getOpenMPContextTraitPropertyFullName()

StringRef llvm::omp::getOpenMPContextTraitPropertyFullName ( TraitProperty  Kind)

Return a textual representation of the trait property Kind with selector and set name included.

Definition at line 476 of file OMPContext.cpp.

References llvm_unreachable.

Referenced by llvm::omp::OMPContext::OMPContext().

◆ getOpenMPContextTraitPropertyKind()

TraitProperty llvm::omp::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.

Definition at line 441 of file OMPContext.cpp.

◆ getOpenMPContextTraitPropertyName()

StringRef llvm::omp::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.

Definition at line 464 of file OMPContext.cpp.

References llvm_unreachable.

Referenced by isVariantApplicableInContextHelper().

◆ getOpenMPContextTraitSelectorForProperty()

TraitSelector llvm::omp::getOpenMPContextTraitSelectorForProperty ( TraitProperty  Property)

Return the trait selector for which Property is a property.

Definition at line 422 of file OMPContext.cpp.

References llvm_unreachable.

Referenced by getVariantMatchScore(), and isVariantApplicableInContextHelper().

◆ getOpenMPContextTraitSelectorKind()

TraitSelector llvm::omp::getOpenMPContextTraitSelectorKind ( StringRef  Str)

Parse Str and return the trait set it matches or TraitSelector::invalid.

Definition at line 414 of file OMPContext.cpp.

References llvm::StringSwitch< T, R >::Default().

◆ getOpenMPContextTraitSelectorName()

StringRef llvm::omp::getOpenMPContextTraitSelectorName ( TraitSelector  Kind)

Return a textual representation of the trait selector Kind.

Definition at line 431 of file OMPContext.cpp.

References llvm_unreachable.

Referenced by getOpenMPContextTraitPropertyForSelector().

◆ getOpenMPContextTraitSetForProperty()

TraitSet llvm::omp::getOpenMPContextTraitSetForProperty ( TraitProperty  Property)

Return the trait set for which Property is a property.

Definition at line 395 of file OMPContext.cpp.

References llvm_unreachable.

Referenced by llvm::omp::OMPContext::addTrait(), llvm::omp::VariantMatchInfo::addTrait(), getVariantMatchScore(), and isVariantApplicableInContextHelper().

◆ getOpenMPContextTraitSetForSelector()

TraitSet llvm::omp::getOpenMPContextTraitSetForSelector ( TraitSelector  Selector)

Return the trait set for which Selector is a selector.

Definition at line 385 of file OMPContext.cpp.

References llvm_unreachable.

◆ getOpenMPContextTraitSetKind()

TraitSet llvm::omp::getOpenMPContextTraitSetKind ( StringRef  Str)

Parse Str and return the trait set it matches or TraitSet::invalid.

Definition at line 377 of file OMPContext.cpp.

References llvm::StringSwitch< T, R >::Default().

◆ getOpenMPContextTraitSetName()

StringRef llvm::omp::getOpenMPContextTraitSetName ( TraitSet  Kind)

Return a textual representation of the trait set Kind.

Definition at line 404 of file OMPContext.cpp.

References llvm_unreachable.

◆ isCombinedConstruct()

bool llvm::omp::isCombinedConstruct ( Directive  D)

Definition at line 190 of file OMP.cpp.

References D, getLeafConstructs(), and isCompositeConstruct().

◆ isCompositeConstruct()

bool llvm::omp::isCompositeConstruct ( Directive  D)

◆ isLeafConstruct()

bool llvm::omp::isLeafConstruct ( Directive  D)

Definition at line 180 of file OMP.cpp.

References D, and getLeafConstructs().

◆ isOpenMPDevice()

bool llvm::omp::isOpenMPDevice ( Module M)

Helper to determine if M is a OpenMP target offloading device module.

Definition at line 5944 of file OpenMPOpt.cpp.

Referenced by llvm::OpenMPOptCGSCCPass::run(), and llvm::OpenMPOptPass::run().

◆ isOpenMPKernel()

bool llvm::omp::isOpenMPKernel ( Function Fn)

Return true iff Fn is an OpenMP GPU kernel; Fn has the "kernel" attribute.

Definition at line 5900 of file OpenMPOpt.cpp.

References llvm::Function::hasFnAttribute().

Referenced by getDeviceKernels().

◆ isValidTraitPropertyForTraitSetAndSelector()

bool llvm::omp::isValidTraitPropertyForTraitSetAndSelector ( TraitProperty  Property,
TraitSelector  Selector,
TraitSet  Set 
)

Return true if Property can be nested in Selector and Set.

Definition at line 501 of file OMPContext.cpp.

References llvm_unreachable.

◆ isValidTraitSelectorForTraitSet()

bool llvm::omp::isValidTraitSelectorForTraitSet ( TraitSelector  Selector,
TraitSet  Set,
bool AllowsTraitScore,
bool RequiresProperty 
)

}

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 486 of file OMPContext.cpp.

References llvm_unreachable.

◆ isVariantApplicableInContext()

bool llvm::omp::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.

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 263 of file OMPContext.cpp.

References isVariantApplicableInContextHelper().

◆ listOpenMPContextTraitProperties()

std::string llvm::omp::listOpenMPContextTraitProperties ( TraitSet  Set,
TraitSelector  Selector 
)

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

Definition at line 534 of file OMPContext.cpp.

◆ listOpenMPContextTraitSelectors()

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

Return a string listing all trait selectors for Set.

Definition at line 523 of file OMPContext.cpp.

◆ listOpenMPContextTraitSets()

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

Return a string listing all trait sets.

Definition at line 513 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)

Create a nicer version of a function name for humans to look at.

Definition at line 196 of file OMP.cpp.

References deconstructOpenMPKernelName(), llvm::StringRef::drop_back(), llvm::StringRef::ends_with(), and llvm::StringRef::str().

Variable Documentation

◆ AMDGPUGridValues32

constexpr GV llvm::omp::AMDGPUGridValues32
staticconstexpr
Initial value:
= {
256,
32,
(1 << 16),
440,
896,
1024,
256,
}

Definition at line 97 of file OMPGridValues.h.

Referenced by getAMDGPUGridValues().

◆ AMDGPUGridValues64

constexpr GV llvm::omp::AMDGPUGridValues64
staticconstexpr
Initial value:
= {
256,
64,
(1 << 16),
440,
896,
1024,
256,
}

For AMDGPU GPUs.

Definition at line 87 of file OMPGridValues.h.

Referenced by getAMDGPUGridValues().

◆ AssumptionClauseMappings

constexpr AssumptionClauseMappingInfo llvm::omp::AssumptionClauseMappings[]
staticconstexpr
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
Initial value:
= {
256,
32,
(1 << 16),
3200,
896,
1024,
128,
}

For Nvidia GPUs.

Definition at line 113 of file OMPGridValues.h.

Referenced by getGridValue().