LLVM 22.0.0git
Classes | Functions
llvm::LegalityPredicates Namespace Reference

Classes

struct  TypePairAndMemDesc
 

Functions

template<typename Predicate >
Predicate predNot (Predicate P)
 True iff P is false.
 
template<typename Predicate >
Predicate all (Predicate P0, Predicate P1)
 True iff P0 and P1 are true.
 
template<typename Predicate , typename... Args>
Predicate all (Predicate P0, Predicate P1, Args... args)
 True iff all given predicates are true.
 
template<typename Predicate >
Predicate any (Predicate P0, Predicate P1)
 True iff P0 or P1 are true.
 
template<typename Predicate , typename... Args>
Predicate any (Predicate P0, Predicate P1, Args... args)
 True iff any given predicates are true.
 
LLVM_ABI LegalityPredicate typeIs (unsigned TypeIdx, LLT TypesInit)
 True iff the given type index is the specified type.
 
LLVM_ABI LegalityPredicate typeInSet (unsigned TypeIdx, std::initializer_list< LLT > TypesInit)
 True iff the given type index is one of the specified types.
 
LegalityPredicate typeIsNot (unsigned TypeIdx, LLT Type)
 True iff the given type index is not the specified type.
 
LLVM_ABI 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.
 
LLVM_ABI LegalityPredicate typeTupleInSet (unsigned TypeIdx0, unsigned TypeIdx1, unsigned Type2, std::initializer_list< std::tuple< LLT, LLT, LLT > > TypesInit)
 True iff the given types for the given tuple of type indexes is one of the specified type tuple.
 
LLVM_ABI LegalityPredicate typePairAndMemDescInSet (unsigned TypeIdx0, unsigned TypeIdx1, unsigned MMOIdx, std::initializer_list< TypePairAndMemDesc > TypesAndMemDescInit)
 True iff the given types for the given pair of type indexes is one of the specified type pairs.
 
LLVM_ABI LegalityPredicate isScalar (unsigned TypeIdx)
 True iff the specified type index is a scalar.
 
LLVM_ABI LegalityPredicate isVector (unsigned TypeIdx)
 True iff the specified type index is a vector.
 
LLVM_ABI LegalityPredicate isPointer (unsigned TypeIdx)
 True iff the specified type index is a pointer (with any address space).
 
LLVM_ABI LegalityPredicate isPointer (unsigned TypeIdx, unsigned AddrSpace)
 True iff the specified type index is a pointer with the specified address space.
 
LLVM_ABI LegalityPredicate isPointerVector (unsigned TypeIdx)
 True iff the specified type index is a vector of pointers (with any address space).
 
LLVM_ABI LegalityPredicate elementTypeIs (unsigned TypeIdx, LLT EltTy)
 True if the type index is a vector with element type EltTy.
 
LLVM_ABI LegalityPredicate scalarNarrowerThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar that's narrower than the given size.
 
LLVM_ABI LegalityPredicate scalarWiderThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar that's wider than the given size.
 
LLVM_ABI LegalityPredicate scalarOrEltNarrowerThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar or vector with an element type that's narrower than the given size.
 
LLVM_ABI LegalityPredicate scalarOrEltWiderThan (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar or a vector with an element type that's wider than the given size.
 
LLVM_ABI LegalityPredicate sizeNotMultipleOf (unsigned TypeIdx, unsigned Size)
 True iff the specified type index is a scalar whose size is not a multiple of Size.
 
LLVM_ABI LegalityPredicate sizeNotPow2 (unsigned TypeIdx)
 True iff the specified type index is a scalar whose size is not a power of.
 
LLVM_ABI LegalityPredicate scalarOrEltSizeNotPow2 (unsigned TypeIdx)
 True iff the specified type index is a scalar or vector whose element size is not a power of 2.
 
LLVM_ABI LegalityPredicate sizeIs (unsigned TypeIdx, unsigned Size)
 True if the total bitwidth of the specified type index is Size bits.
 
LLVM_ABI LegalityPredicate sameSize (unsigned TypeIdx0, unsigned TypeIdx1)
 True iff the specified type indices are both the same bit size.
 
LLVM_ABI LegalityPredicate largerThan (unsigned TypeIdx0, unsigned TypeIdx1)
 True iff the first type index has a larger total bit size than second type index.
 
LLVM_ABI LegalityPredicate smallerThan (unsigned TypeIdx0, unsigned TypeIdx1)
 True iff the first type index has a smaller total bit size than second type index.
 
LLVM_ABI LegalityPredicate memSizeInBytesNotPow2 (unsigned MMOIdx)
 True iff the specified MMO index has a size (rounded to bytes) that is not a power of 2.
 
LLVM_ABI LegalityPredicate memSizeNotByteSizePow2 (unsigned MMOIdx)
 True iff the specified MMO index has a size that is not an even byte size, or that even byte size is not a power of 2.
 
LLVM_ABI LegalityPredicate numElementsNotPow2 (unsigned TypeIdx)
 True iff the specified type index is a vector whose element count is not a power of 2.
 
LLVM_ABI LegalityPredicate atomicOrderingAtLeastOrStrongerThan (unsigned MMOIdx, AtomicOrdering Ordering)
 True iff the specified MMO index has at an atomic ordering of at Ordering or stronger.
 

Function Documentation

◆ all() [1/2]

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

◆ all() [2/2]

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

True iff all given predicates are true.

Definition at line 240 of file LegalizerInfo.h.

References all(), and args.

◆ any() [1/2]

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

True iff P0 or P1 are true.

Definition at line 246 of file LegalizerInfo.h.

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

◆ any() [2/2]

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

True iff any given predicates are true.

Definition at line 253 of file LegalizerInfo.h.

References any(), and 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 226 of file LegalityPredicates.cpp.

References llvm::isAtLeastOrStrongerThan().

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ elementTypeIs()

LegalityPredicate llvm::LegalityPredicates::elementTypeIs ( unsigned  TypeIdx,
LLT  EltTy 
)

True if the type index is a vector with element type EltTy.

Definition at line 110 of file LegalityPredicates.cpp.

References llvm::LLT::getElementType(), and llvm::LLT::isVector().

◆ isPointer() [1/2]

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

True iff the specified type index is a pointer (with any address space).

Definition at line 90 of file LegalityPredicates.cpp.

Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().

◆ isPointer() [2/2]

LegalityPredicate llvm::LegalityPredicates::isPointer ( unsigned  TypeIdx,
unsigned  AddrSpace 
)

True iff the specified type index is a pointer with the specified address space.

Definition at line 96 of file LegalityPredicates.cpp.

References llvm::LLT::getAddressSpace(), and llvm::LLT::isPointer().

◆ isPointerVector()

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

True iff the specified type index is a vector of pointers (with any address space).

Definition at line 104 of file LegalityPredicates.cpp.

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ isScalar()

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

True iff the specified type index is a scalar.

Definition at line 78 of file LegalityPredicates.cpp.

Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().

◆ isVector()

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

True iff the specified type index is a vector.

Definition at line 84 of file LegalityPredicates.cpp.

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ largerThan()

LegalityPredicate llvm::LegalityPredicates::largerThan ( unsigned  TypeIdx0,
unsigned  TypeIdx1 
)

True iff the first type index has a larger total bit size than second type index.

Definition at line 142 of file LegalityPredicates.cpp.

◆ memSizeInBytesNotPow2()

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

True iff the specified MMO index has a size (rounded to bytes) that is not a power of 2.

Definition at line 203 of file LegalityPredicates.cpp.

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

◆ memSizeNotByteSizePow2()

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

True iff the specified MMO index has a size that is not an even byte size, or that even byte size is not a power of 2.

Definition at line 210 of file LegalityPredicates.cpp.

References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::LLT::getSizeInBytes(), and llvm::LLT::isByteSized().

Referenced by llvm::LegalizeRuleSet::lowerIfMemSizeNotByteSizePow2().

◆ 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 219 of file LegalityPredicates.cpp.

References llvm::LLT::getNumElements(), llvm::LLT::isFixedVector(), and llvm::isPowerOf2_32().

◆ predNot()

template<typename Predicate >
Predicate llvm::LegalityPredicates::predNot ( Predicate  P)

True iff P is false.

Definition at line 227 of file LegalizerInfo.h.

References P.

◆ sameSize()

LegalityPredicate llvm::LegalityPredicates::sameSize ( unsigned  TypeIdx0,
unsigned  TypeIdx1 
)

True iff the specified type indices are both the same bit size.

Definition at line 195 of file LegalityPredicates.cpp.

◆ scalarNarrowerThan()

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

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

Definition at line 118 of file LegalityPredicates.cpp.

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

Referenced by llvm::X86LegalizerInfo::X86LegalizerInfo().

◆ scalarOrEltNarrowerThan()

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

True iff the specified type index is a scalar or vector with an element type that's narrower than the given size.

Definition at line 150 of file LegalityPredicates.cpp.

References llvm::LLT::getScalarSizeInBits(), and Size.

Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().

◆ scalarOrEltSizeNotPow2()

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

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

Definition at line 166 of file LegalityPredicates.cpp.

References llvm::LLT::getScalarSizeInBits(), and llvm::isPowerOf2_32().

◆ scalarOrEltWiderThan()

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

True iff the specified type index is a scalar or a vector with an element type that's wider than the given size.

Definition at line 158 of file LegalityPredicates.cpp.

References llvm::LLT::getScalarSizeInBits(), and Size.

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ scalarWiderThan()

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

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

Definition at line 126 of file LegalityPredicates.cpp.

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

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ sizeIs()

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

True if the total bitwidth of the specified type index is Size bits.

Definition at line 189 of file LegalityPredicates.cpp.

References Size.

◆ sizeNotMultipleOf()

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

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

Definition at line 173 of file LegalityPredicates.cpp.

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

◆ 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 181 of file LegalityPredicates.cpp.

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

◆ smallerThan()

LegalityPredicate llvm::LegalityPredicates::smallerThan ( unsigned  TypeIdx0,
unsigned  TypeIdx1 
)

True iff the first type index has a smaller total bit size than second type index.

Definition at line 134 of file LegalityPredicates.cpp.

Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo().

◆ typeInSet()

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

◆ typeIs()

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

◆ typeIsNot()

LegalityPredicate llvm::LegalityPredicates::typeIsNot ( unsigned  TypeIdx,
LLT  Type 
)
inline

True iff the given type index is not the specified type.

Definition at line 264 of file LegalizerInfo.h.

Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().

◆ typePairAndMemDescInSet()

LegalityPredicate llvm::LegalityPredicates::typePairAndMemDescInSet ( unsigned  TypeIdx0,
unsigned  TypeIdx1,
unsigned  MMOIdx,
std::initializer_list< TypePairAndMemDesc TypesAndMemDescInit 
)

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

Definition at line 63 of file LegalityPredicates.cpp.

References llvm::any_of(), and llvm::LegalityPredicates::TypePairAndMemDesc::isCompatible().

Referenced by llvm::LegalizeRuleSet::legalForTypesWithMemDesc().

◆ 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 42 of file LegalityPredicates.cpp.

References llvm::is_contained().

Referenced by llvm::X86LegalizerInfo::X86LegalizerInfo().

◆ typeTupleInSet()

LegalityPredicate llvm::LegalityPredicates::typeTupleInSet ( unsigned  TypeIdx0,
unsigned  TypeIdx1,
unsigned  Type2,
std::initializer_list< std::tuple< LLT, LLT, LLT > >  TypesInit 
)

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

Definition at line 52 of file LegalityPredicates.cpp.

References llvm::is_contained().