Lines Matching +full:bool +full:- +full:property

1 //===- OMPContext.cpp ------ Collection of helpers for OpenMP contexts ----===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
13 //===----------------------------------------------------------------------===//
22 #define DEBUG_TYPE "openmp-ir-builder"
27 OMPContext::OMPContext(bool IsDeviceCompilation, Triple TargetTriple) { in OMPContext()
90 TraitProperty Property = TraitProperty(Bit); in OMPContext()
91 dbgs() << "\t " << getOpenMPContextTraitPropertyFullName(Property) in OMPContext()
99 template <typename T> static bool isSubset(ArrayRef<T> C0, ArrayRef<T> C1) { in isSubset()
124 static bool isStrictSubset(ArrayRef<T> C0, ArrayRef<T> C1) { in isStrictSubset()
130 static bool isStrictSubset(const VariantMatchInfo &VMI0, in isStrictSubset()
147 SmallVectorImpl<unsigned> *ConstructMatches, bool DeviceSetOnly) { in isVariantApplicableInContextHelper()
163 // Helper to deal with a single property that was (not) found in the OpenMP in isVariantApplicableInContextHelper()
166 auto HandleTrait = [MK](TraitProperty Property, in isVariantApplicableInContextHelper()
167 bool WasFound) -> std::optional<bool> /* Result */ { in isVariantApplicableInContextHelper()
168 // For kind "any" a single match is enough but we ignore non-matched in isVariantApplicableInContextHelper()
176 // In "all" or "none" mode we accept a matching or non-matching property in isVariantApplicableInContextHelper()
181 // We missed a property, provide some debug output and indicate failure. in isVariantApplicableInContextHelper()
184 dbgs() << "[" << DEBUG_TYPE << "] Property " in isVariantApplicableInContextHelper()
185 << getOpenMPContextTraitPropertyName(Property, "") in isVariantApplicableInContextHelper()
188 dbgs() << "[" << DEBUG_TYPE << "] Property " in isVariantApplicableInContextHelper()
189 << getOpenMPContextTraitPropertyName(Property, "") in isVariantApplicableInContextHelper()
196 TraitProperty Property = TraitProperty(Bit); in isVariantApplicableInContextHelper() local
198 getOpenMPContextTraitSetForProperty(Property) != TraitSet::device) in isVariantApplicableInContextHelper()
203 if (getOpenMPContextTraitSelectorForProperty(Property) == in isVariantApplicableInContextHelper()
207 bool IsActiveTrait = Ctx.ActiveTraits.test(unsigned(Property)); in isVariantApplicableInContextHelper()
211 if (Property == TraitProperty::device_isa___ANY) in isVariantApplicableInContextHelper()
216 if (std::optional<bool> Result = HandleTrait(Property, IsActiveTrait)) in isVariantApplicableInContextHelper()
224 for (TraitProperty Property : VMI.ConstructTraits) { in isVariantApplicableInContextHelper() local
225 assert(getOpenMPContextTraitSetForProperty(Property) == in isVariantApplicableInContextHelper()
227 "Variant context is ill-formed!"); in isVariantApplicableInContextHelper()
230 bool FoundInOrder = false; in isVariantApplicableInContextHelper()
232 FoundInOrder = (Ctx.ConstructTraits[ConstructIdx++] == Property); in isVariantApplicableInContextHelper()
234 ConstructMatches->push_back(ConstructIdx - 1); in isVariantApplicableInContextHelper()
236 if (std::optional<bool> Result = HandleTrait(Property, FoundInOrder)) in isVariantApplicableInContextHelper()
240 LLVM_DEBUG(dbgs() << "[" << DEBUG_TYPE << "] Construct property " in isVariantApplicableInContextHelper()
241 << getOpenMPContextTraitPropertyName(Property, "") in isVariantApplicableInContextHelper()
263 bool llvm::omp::isVariantApplicableInContext(const VariantMatchInfo &VMI, in isVariantApplicableInContext()
265 bool DeviceSetOnly) { in isVariantApplicableInContext()
277 TraitProperty Property = TraitProperty(Bit); in getVariantMatchScore() local
279 if (VMI.ScoreMap.count(Property)) { in getVariantMatchScore()
280 const APInt &UserScore = VMI.ScoreMap.lookup(Property); in getVariantMatchScore()
281 assert(UserScore.uge(0) && "Expect non-negative user scores!"); in getVariantMatchScore()
286 switch (getOpenMPContextTraitSetForProperty(Property)) { in getVariantMatchScore()
305 if (Property == TraitProperty::device_kind_any) in getVariantMatchScore()
308 switch (getOpenMPContextTraitSelectorForProperty(Property)) { in getVariantMatchScore()
326 for (TraitProperty Property : VMI.ConstructTraits) { in getVariantMatchScore() local
327 assert(getOpenMPContextTraitSetForProperty(Property) == in getVariantMatchScore()
329 "Ill-formed variant match info!"); in getVariantMatchScore()
330 (void)Property; in getVariantMatchScore()
331 // ConstructMatches is the position p - 1 and we need 2^(p-1). in getVariantMatchScore()
344 int BestVMIIdx = -1; in getBestVariantMatchForContext()
395 llvm::omp::getOpenMPContextTraitSetForProperty(TraitProperty Property) { in getOpenMPContextTraitSetForProperty() argument
396 switch (Property) { in getOpenMPContextTraitSetForProperty()
422 llvm::omp::getOpenMPContextTraitSelectorForProperty(TraitProperty Property) { in getOpenMPContextTraitSelectorForProperty() argument
423 switch (Property) { in getOpenMPContextTraitSelectorForProperty()
474 llvm_unreachable("Unknown trait property!"); in getOpenMPContextTraitPropertyName()
483 llvm_unreachable("Unknown trait property!"); in getOpenMPContextTraitPropertyFullName()
486 bool llvm::omp::isValidTraitSelectorForTraitSet(TraitSelector Selector, in isValidTraitSelectorForTraitSet()
488 bool &AllowsTraitScore, in isValidTraitSelectorForTraitSet()
489 bool &RequiresProperty) { in isValidTraitSelectorForTraitSet()
501 bool llvm::omp::isValidTraitPropertyForTraitSetAndSelector( in isValidTraitPropertyForTraitSetAndSelector()
502 TraitProperty Property, TraitSelector Selector, TraitSet Set) { in isValidTraitPropertyForTraitSetAndSelector() argument
503 switch (Property) { in isValidTraitPropertyForTraitSetAndSelector()
510 llvm_unreachable("Unknown trait property!"); in isValidTraitPropertyForTraitSetAndSelector()