LLVM: lib/Frontend/OpenMP/OMPContext.cpp File Reference (original) (raw)
This file implements helper functions and classes to deal with OpenMP contexts as used by [begin/end] declare variant and metadirective. More...
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "openmp-ir-builder" |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_SET(Enum, Str) |
| #define | OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, ReqProp) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_SET(Enum, Str) |
| #define | OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, ReqProp) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, ReqProp) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, ReqProp) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| #define | OMP_TRAIT_SET(Enum, Str) |
| #define | OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, ReqProp) |
| #define | OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) |
| Functions | |
|---|---|
| template<typename T> | |
| static bool | isSubset (ArrayRef< T > C0, ArrayRef< T > C1) |
| Return true if C0 is a subset of C1. | |
| template<typename T> | |
| static bool | isStrictSubset (ArrayRef< T > C0, ArrayRef< T > C1) |
| Return true if C0 is a strict subset of C1. | |
| static bool | isStrictSubset (const VariantMatchInfo &VMI0, const VariantMatchInfo &VMI1) |
| static int | isVariantApplicableInContextHelper (const VariantMatchInfo &VMI, const OMPContext &Ctx, SmallVectorImpl< unsigned > *ConstructMatches, bool DeviceOrImplementationSetOnly) |
| static APInt | getVariantMatchScore (const VariantMatchInfo &VMI, const OMPContext &Ctx, SmallVectorImpl< unsigned > &ConstructMatches) |
This file implements helper functions and classes to deal with OpenMP contexts as used by [begin/end] declare variant and metadirective.
Definition in file OMPContext.cpp.
◆ DEBUG_TYPE
#define DEBUG_TYPE "openmp-ir-builder"
◆ OMP_TRAIT_PROPERTY [1/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
if (TraitSelector::TraitSelectorEnum == TraitSelector::target_device_arch) { \
if (TargetOffloadTriple.getArch() == \
TargetOffloadTriple.getArchTypeForLLVMName(Str)) \
ActiveTraits.set(unsigned(TraitProperty::Enum)); \
ActiveTraits.set(unsigned(TraitProperty::Enum)); \
}
StringRef - Represent a constant reference to a string, i.e.
◆ OMP_TRAIT_PROPERTY [2/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
if (TraitSelector::TraitSelectorEnum == TraitSelector::device_arch || \
TraitSelector::TraitSelectorEnum == TraitSelector::target_device_arch) { \
if (TargetTriple.getArch() == TargetTriple.getArchTypeForLLVMName(Str)) \
ActiveTraits.set(unsigned(TraitProperty::Enum)); \
ActiveTraits.set(unsigned(TraitProperty::Enum)); \
}
◆ OMP_TRAIT_PROPERTY [3/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
case TraitProperty::Enum: \
return TraitSet::TraitSetEnum;
◆ OMP_TRAIT_PROPERTY [4/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
case TraitProperty::Enum: \
return TraitSelector::TraitSelectorEnum;
◆ OMP_TRAIT_PROPERTY [5/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
if (Set == TraitSet::TraitSetEnum && Str == S) \
return TraitProperty::Enum;
◆ OMP_TRAIT_PROPERTY [6/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
.Case(Str, Selector == TraitSelector::TraitSelectorEnum \
? TraitProperty::Enum \
: TraitProperty::invalid)
◆ OMP_TRAIT_PROPERTY [7/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
case TraitProperty::Enum: \
return Str;
◆ OMP_TRAIT_PROPERTY [8/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
case TraitProperty::Enum: \
return "(" #TraitSetEnum "," #TraitSelectorEnum "," Str ")";
◆ OMP_TRAIT_PROPERTY [9/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
case TraitProperty::Enum: \
return Set == TraitSet::TraitSetEnum && \
Selector == TraitSelector::TraitSelectorEnum;
◆ OMP_TRAIT_PROPERTY [10/10]
| #define OMP_TRAIT_PROPERTY | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| TraitSelectorEnum, | ||
| Str ) |
Value:
if (TraitSet::TraitSetEnum == Set && \
TraitSelector::TraitSelectorEnum == Selector && \
S.append("'").append(Str).append("'").append(" ");
◆ OMP_TRAIT_SELECTOR [1/5]
| #define OMP_TRAIT_SELECTOR | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| Str, | ||
| ReqProp ) |
Value:
case TraitSelector::Enum: \
return TraitSet::TraitSetEnum;
◆ OMP_TRAIT_SELECTOR [2/5]
| #define OMP_TRAIT_SELECTOR | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| Str, | ||
| ReqProp ) |
Value:
.Case(Str, TraitSelector::Enum)
◆ OMP_TRAIT_SELECTOR [3/5]
| #define OMP_TRAIT_SELECTOR | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| Str, | ||
| ReqProp ) |
Value:
case TraitSelector::Enum: \
return Str;
◆ OMP_TRAIT_SELECTOR [4/5]
| #define OMP_TRAIT_SELECTOR | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| Str, | ||
| ReqProp ) |
Value:
case TraitSelector::Enum: \
RequiresProperty = ReqProp; \
return Set == TraitSet::TraitSetEnum;
◆ OMP_TRAIT_SELECTOR [5/5]
| #define OMP_TRAIT_SELECTOR | ( | Enum, |
|---|---|---|
| TraitSetEnum, | ||
| Str, | ||
| ReqProp ) |
Value:
if (TraitSet::TraitSetEnum == Set && StringRef(Str) != "Invalid") \
S.append("'").append(Str).append("'").append(" ");
◆ OMP_TRAIT_SET [1/3]
| #define OMP_TRAIT_SET | ( | Enum, |
|---|---|---|
| Str ) |
Value:
.Case(Str, TraitSet::Enum)
◆ OMP_TRAIT_SET [2/3]
| #define OMP_TRAIT_SET | ( | Enum, |
|---|---|---|
| Str ) |
Value:
case TraitSet::Enum: \
return Str;
◆ OMP_TRAIT_SET [3/3]
| #define OMP_TRAIT_SET | ( | Enum, |
|---|---|---|
| Str ) |
Value:
S.append("'").append(Str).append("'").append(" ");
◆ getVariantMatchScore()
Definition at line 329 of file OMPContext.cpp.
References assert(), llvm::omp::VariantMatchInfo::ConstructTraits, llvm::dbgs(), DEBUG_TYPE, llvm::omp::getOpenMPContextTraitSelectorForProperty(), llvm::omp::getOpenMPContextTraitSetForProperty(), llvm::APInt::getZExtValue(), LLVM_DEBUG, llvm_unreachable, llvm::omp::VariantMatchInfo::RequiredTraits, llvm::omp::VariantMatchInfo::ScoreMap, llvm::BitVector::set_bits(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::APInt::uge().
Referenced by llvm::omp::getBestVariantMatchForContext().
◆ isStrictSubset() [1/2]
◆ isStrictSubset() [2/2]
◆ isSubset()
◆ isVariantApplicableInContextHelper()
Definition at line 197 of file OMPContext.cpp.
References llvm::all_of(), assert(), llvm::omp::VariantMatchInfo::ConstructTraits, llvm::dbgs(), DEBUG_TYPE, llvm::omp::getOpenMPContextTraitPropertyName(), llvm::omp::getOpenMPContextTraitSelectorForProperty(), llvm::omp::getOpenMPContextTraitSetForProperty(), llvm::omp::VariantMatchInfo::ISATraits, isSubset(), LLVM_DEBUG, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::omp::VariantMatchInfo::RequiredTraits, llvm::BitVector::set_bits(), and llvm::BitVector::test().
Referenced by llvm::omp::getBestVariantMatchForContext(), and llvm::omp::isVariantApplicableInContext().