LLVM  8.0.1
Classes | Functions
llvm::LegalityPredicates Namespace Reference

Classes

struct  TypePairAndMemSize
 

Functions

template<typename Predicate >
Predicate all (Predicate P0, Predicate P1)
 True iff P0 and P1 are true. More...
 
template<typename Predicate , typename... Args>
Predicate all (Predicate P0, Predicate P1, Args... args)
 True iff all given predicates are true. More...
 
LegalityPredicate typeIs (unsigned TypeIdx, LLT TypesInit)
 True iff the given type index is the specified types. More...
 
LegalityPredicate typeInSet (unsigned TypeIdx, std::initializer_list< LLT > TypesInit)
 True iff the given type index is one of the specified types. More...
 
LegalityPredicate typePairInSet (unsigned TypeIdx0, unsigned TypeIdx1, std::initializer_list< std::pair< LLT, LLT >> TypesInit)
 True iff the given types for the given pair of type indexes is one of the specified type pairs. More...
 
LegalityPredicate typePairAndMemSizeInSet (unsigned TypeIdx0, unsigned TypeIdx1, unsigned MMOIdx, std::initializer_list< TypePairAndMemSize > TypesAndMemSizeInit)
 True iff the given types for the given pair of type indexes is one of the specified type pairs. More...
 
LegalityPredicate isScalar (unsigned TypeIdx)
 True iff the specified type index is a scalar. More...
 
LegalityPredicate narrowerThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar that's narrower than the given size. More...
 
LegalityPredicate widerThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar that's wider than the given size. More...
 
LegalityPredicate sizeNotPow2 (unsigned TypeIdx)
 True iff the specified type index is a scalar whose size is not a power of. More...
 
LegalityPredicate memSizeInBytesNotPow2 (unsigned MMOIdx)
 True iff the specified MMO index has a size that is not a power of 2. More...
 
LegalityPredicate numElementsNotPow2 (unsigned TypeIdx)
 True iff the specified type index is a vector whose element count is not a power of 2. More...
 
LegalityPredicate atomicOrderingAtLeastOrStrongerThan (unsigned MMOIdx, AtomicOrdering Ordering)
 True iff the specified MMO index has at an atomic ordering of at Ordering or stronger. More...
 

Function Documentation

◆ all() [1/2]

template<typename Predicate >
Predicate llvm::LegalityPredicates::all ( Predicate  P0,
Predicate  P1 
)

True iff P0 and P1 are true.

Definition at line 181 of file LegalizerInfo.h.

References llvm::AMDGPU::HSAMD::Kernel::Key::Args, and Query().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), and llvm::FastMathFlags::isFast().

◆ all() [2/2]

template<typename Predicate , typename... Args>
Predicate llvm::LegalityPredicates::all ( Predicate  P0,
Predicate  P1,
Args...  args 
)

◆ atomicOrderingAtLeastOrStrongerThan()

LegalityPredicate llvm::LegalityPredicates::atomicOrderingAtLeastOrStrongerThan ( unsigned  MMOIdx,
AtomicOrdering  Ordering 
)

True iff the specified MMO index has at an atomic ordering of at Ordering or stronger.

Definition at line 96 of file LegalityPredicates.cpp.

References llvm::isAtLeastOrStrongerThan(), and Query().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), and all().

◆ isScalar()

LegalityPredicate llvm::LegalityPredicates::isScalar ( unsigned  TypeIdx)

◆ memSizeInBytesNotPow2()

LegalityPredicate llvm::LegalityPredicates::memSizeInBytesNotPow2 ( unsigned  MMOIdx)

True iff the specified MMO index has a size that is not a power of 2.

Definition at line 83 of file LegalityPredicates.cpp.

References llvm::isPowerOf2_32(), and Query().

Referenced by all(), and llvm::LegalizeRuleSet::unsupportedIfMemSizeNotPow2().

◆ narrowerThan()

LegalityPredicate llvm::LegalityPredicates::narrowerThan ( unsigned  TypeIdx,
unsigned  Size 
)

True iff the specified type index is a scalar that's narrower than the given size.

Definition at line 60 of file LegalityPredicates.cpp.

References llvm::LLT::getSizeInBits(), llvm::LLT::isScalar(), Query(), and Size.

Referenced by all(), and llvm::LegalizeRuleSet::minScalar().

◆ numElementsNotPow2()

LegalityPredicate llvm::LegalityPredicates::numElementsNotPow2 ( unsigned  TypeIdx)

True iff the specified type index is a vector whose element count is not a power of 2.

Definition at line 89 of file LegalityPredicates.cpp.

References llvm::LLT::getNumElements(), llvm::isPowerOf2_32(), llvm::LLT::isVector(), and Query().

Referenced by all(), and llvm::LegalizeRuleSet::moreElementsToNextPow2().

◆ sizeNotPow2()

LegalityPredicate llvm::LegalityPredicates::sizeNotPow2 ( unsigned  TypeIdx)

True iff the specified type index is a scalar whose size is not a power of.

Definition at line 76 of file LegalityPredicates.cpp.

References llvm::LLT::getSizeInBits(), llvm::isPowerOf2_32(), llvm::LLT::isScalar(), and Query().

Referenced by all(), and llvm::LegalizeRuleSet::widenScalarToNextPow2().

◆ typeInSet()

LegalityPredicate llvm::LegalityPredicates::typeInSet ( unsigned  TypeIdx,
std::initializer_list< LLT TypesInit 
)

True iff the given type index is one of the specified types.

Definition at line 24 of file LegalityPredicates.cpp.

References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::find(), and Query().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), and all().

◆ typeIs()

LegalityPredicate llvm::LegalityPredicates::typeIs ( unsigned  TypeIdx,
LLT  TypesInit 
)

True iff the given type index is the specified types.

Definition at line 18 of file LegalityPredicates.cpp.

References Query().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), and all().

◆ typePairAndMemSizeInSet()

LegalityPredicate llvm::LegalityPredicates::typePairAndMemSizeInSet ( unsigned  TypeIdx0,
unsigned  TypeIdx1,
unsigned  MMOIdx,
std::initializer_list< TypePairAndMemSize TypesAndMemSizeInit 
)

True iff the given types for the given pair of type indexes is one of the specified type pairs.

Definition at line 42 of file LegalityPredicates.cpp.

References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::find(), llvm::Match, and Query().

Referenced by all(), and llvm::LegalizeRuleSet::legalForTypesWithMemSize().

◆ typePairInSet()

LegalityPredicate llvm::LegalityPredicates::typePairInSet ( unsigned  TypeIdx0,
unsigned  TypeIdx1,
std::initializer_list< std::pair< LLT, LLT >>  TypesInit 
)

True iff the given types for the given pair of type indexes is one of the specified type pairs.

Definition at line 32 of file LegalityPredicates.cpp.

References llvm::SmallVectorTemplateCommon< T >::begin(), llvm::SmallVectorTemplateCommon< T >::end(), llvm::find(), llvm::Match, and Query().

Referenced by all().

◆ widerThan()

LegalityPredicate llvm::LegalityPredicates::widerThan ( unsigned  TypeIdx,
unsigned  Size 
)

True iff the specified type index is a scalar that's wider than the given size.

Definition at line 68 of file LegalityPredicates.cpp.

References llvm::LLT::getSizeInBits(), llvm::LLT::isScalar(), Query(), and Size.

Referenced by all(), llvm::LegalizeRuleSet::maxScalar(), and llvm::LegalizeRuleSet::maxScalarIf().