class LegalizeRuleSet
Declaration
class LegalizeRuleSet { /* full declaration omitted */ };
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:318
Method Overview
- public LegalizeRuleSet()
- public void aliasTo(unsigned int Opcode)
- public llvm::LegalizeRuleSet & alwaysLegal()
- public llvm::LegalizeActionStep apply(const llvm::LegalityQuery & Query) const
- public llvm::LegalizeRuleSet & clampMaxNumElements(unsigned int TypeIdx, const llvm::LLT & EltTy, unsigned int MaxElements)
- public llvm::LegalizeRuleSet & clampMinNumElements(unsigned int TypeIdx, const llvm::LLT & EltTy, unsigned int MinElements)
- public llvm::LegalizeRuleSet & clampNumElements(unsigned int TypeIdx, const llvm::LLT & MinTy, const llvm::LLT & MaxTy)
- public llvm::LegalizeRuleSet & clampScalar(unsigned int TypeIdx, const llvm::LLT & MinTy, const llvm::LLT & MaxTy)
- public llvm::LegalizeRuleSet & clampScalarOrElt(unsigned int TypeIdx, const llvm::LLT & MinTy, const llvm::LLT & MaxTy)
- public llvm::LegalizeRuleSet & custom()
- public llvm::LegalizeRuleSet & customFor(std::initializer_list<std::pair<LLT, LLT>> Types)
- public llvm::LegalizeRuleSet & customFor(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & customForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1)
- public llvm::LegalizeRuleSet & customForCartesianProduct(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & customIf(llvm::LegalityPredicate Predicate)
- public llvm::LegalizeRuleSet & fallback()
- public llvm::LegalizeRuleSet & fewerElementsIf(llvm::LegalityPredicate Predicate, llvm::LegalizeMutation Mutation)
- public unsigned int getAlias() const
- public bool isAliasedByAnother()
- public llvm::LegalizeRuleSet & legalFor(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & legalFor(std::initializer_list<std::pair<LLT, LLT>> Types)
- public llvm::LegalizeRuleSet & legalForCartesianProduct(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & legalForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1)
- public llvm::LegalizeRuleSet & legalForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1, std::initializer_list<LLT> Types2)
- public llvm::LegalizeRuleSet & legalForTypeWithAnyImm(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & legalForTypesWithMemDesc(std::initializer_list<LegalityPredicates::TypePairAndMemDesc> TypesAndMemDesc)
- public llvm::LegalizeRuleSet & legalIf(llvm::LegalityPredicate Predicate)
- public llvm::LegalizeRuleSet & libcallFor(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & libcallFor(std::initializer_list<std::pair<LLT, LLT>> Types)
- public llvm::LegalizeRuleSet & libcallForCartesianProduct(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & libcallForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1)
- public llvm::LegalizeRuleSet & libcallIf(llvm::LegalityPredicate Predicate)
- public llvm::LegalizeRuleSet & lower()
- public llvm::LegalizeRuleSet & lowerFor(std::initializer_list<std::pair<LLT, LLT>> Types, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & lowerFor(std::initializer_list<LLT> Types)
- public llvm::LegalizeRuleSet & lowerFor(std::initializer_list<std::pair<LLT, LLT>> Types)
- public llvm::LegalizeRuleSet & lowerFor(std::initializer_list<LLT> Types, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & lowerForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1)
- public llvm::LegalizeRuleSet & lowerForCartesianProduct(std::initializer_list<LLT> Types0, std::initializer_list<LLT> Types1, std::initializer_list<LLT> Types2)
- public llvm::LegalizeRuleSet & lowerIf(llvm::LegalityPredicate Predicate, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & lowerIf(llvm::LegalityPredicate Predicate)
- public llvm::LegalizeRuleSet & lowerIfMemSizeNotPow2()
- public llvm::LegalizeRuleSet & maxScalar(unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & maxScalarIf(llvm::LegalityPredicate Predicate, unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & maxScalarOrElt(unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & minScalar(unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & minScalarEltSameAsIf(llvm::LegalityPredicate Predicate, unsigned int TypeIdx, unsigned int LargeTypeIdx)
- public llvm::LegalizeRuleSet & minScalarOrElt(unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & minScalarOrEltIf(llvm::LegalityPredicate Predicate, unsigned int TypeIdx, const llvm::LLT & Ty)
- public llvm::LegalizeRuleSet & minScalarSameAs(unsigned int TypeIdx, unsigned int LargeTypeIdx)
- public llvm::LegalizeRuleSet & moreElementsIf(llvm::LegalityPredicate Predicate, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & moreElementsToNextPow2(unsigned int TypeIdx)
- public llvm::LegalizeRuleSet & narrowScalar(unsigned int TypeIdx, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & narrowScalarIf(llvm::LegalityPredicate Predicate, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & scalarize(unsigned int TypeIdx)
- public void setIsAliasedByAnother()
- public llvm::LegalizeRuleSet & unsupported()
- public llvm::LegalizeRuleSet & unsupportedIf(llvm::LegalityPredicate Predicate)
- public llvm::LegalizeRuleSet & unsupportedIfMemSizeNotPow2()
- public bool verifyImmIdxsCoverage(unsigned int NumImmIdxs) const
- public bool verifyTypeIdxsCoverage(unsigned int NumTypeIdxs) const
- public llvm::LegalizeRuleSet & widenScalarIf(llvm::LegalityPredicate Predicate, llvm::LegalizeMutation Mutation)
- public llvm::LegalizeRuleSet & widenScalarOrEltToNextPow2(unsigned int TypeIdx, unsigned int MinSize = 0)
- public llvm::LegalizeRuleSet & widenScalarToNextPow2(unsigned int TypeIdx, unsigned int MinSize = 0)
Methods
¶LegalizeRuleSet()
LegalizeRuleSet()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:465
¶void aliasTo(unsigned int Opcode)
void aliasTo(unsigned int Opcode)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:469
Parameters
- unsigned int Opcode
¶llvm::LegalizeRuleSet& alwaysLegal()
llvm::LegalizeRuleSet& alwaysLegal()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:528
¶llvm::LegalizeActionStep apply(
const llvm::LegalityQuery& Query) const
llvm::LegalizeActionStep apply(
const llvm::LegalityQuery& Query) const
Description
Apply the ruleset to the given LegalityQuery.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:926
Parameters
- const llvm::LegalityQuery& Query
¶llvm::LegalizeRuleSet& clampMaxNumElements(
unsigned int TypeIdx,
const llvm::LLT& EltTy,
unsigned int MaxElements)
llvm::LegalizeRuleSet& clampMaxNumElements(
unsigned int TypeIdx,
const llvm::LLT& EltTy,
unsigned int MaxElements)
Description
Limit the number of elements in EltTy vectors to at most MaxElements.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:876
Parameters
- unsigned int TypeIdx
- const llvm::LLT& EltTy
- unsigned int MaxElements
¶llvm::LegalizeRuleSet& clampMinNumElements(
unsigned int TypeIdx,
const llvm::LLT& EltTy,
unsigned int MinElements)
llvm::LegalizeRuleSet& clampMinNumElements(
unsigned int TypeIdx,
const llvm::LLT& EltTy,
unsigned int MinElements)
Description
Limit the number of elements in EltTy vectors to at least MinElements.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:858
Parameters
- unsigned int TypeIdx
- const llvm::LLT& EltTy
- unsigned int MinElements
¶llvm::LegalizeRuleSet& clampNumElements(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
llvm::LegalizeRuleSet& clampNumElements(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
Description
Limit the number of elements for the given vectors to at least MinTy's number of elements and at most MaxTy's number of elements. No effect if the type is not a vector or does not have the same element type as the constraints. The element type of MinTy and MaxTy must match.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:899
Parameters
¶llvm::LegalizeRuleSet& clampScalar(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
llvm::LegalizeRuleSet& clampScalar(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
Description
Limit the range of scalar sizes to MinTy and MaxTy.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:804
Parameters
¶llvm::LegalizeRuleSet& clampScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
llvm::LegalizeRuleSet& clampScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& MinTy,
const llvm::LLT& MaxTy)
Description
Limit the range of scalar sizes to MinTy and MaxTy.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:811
Parameters
¶llvm::LegalizeRuleSet& custom()
llvm::LegalizeRuleSet& custom()
Description
Unconditionally custom lower.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:705
¶llvm::LegalizeRuleSet& customFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
llvm::LegalizeRuleSet& customFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
Description
The instruction is custom when type indexes 0 and 1 is any type pair in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:691
Parameters
- std::initializer_list<std::pair<LLT, LLT>> Types
¶llvm::LegalizeRuleSet& customFor(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& customFor(
std::initializer_list<LLT> Types)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:685
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& customForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
llvm::LegalizeRuleSet& customForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:699
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
¶llvm::LegalizeRuleSet& customForCartesianProduct(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& customForCartesianProduct(
std::initializer_list<LLT> Types)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:695
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& customIf(
llvm::LegalityPredicate Predicate)
llvm::LegalizeRuleSet& customIf(
llvm::LegalityPredicate Predicate)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:679
Parameters
- llvm::LegalityPredicate Predicate
¶llvm::LegalizeRuleSet& fallback()
llvm::LegalizeRuleSet& fallback()
Description
Fallback on the previous implementation. This should only be used while porting a rule.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:911
¶llvm::LegalizeRuleSet& fewerElementsIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& fewerElementsIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
Description
Remove elements to reach the type selected by the mutation if the predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:654
Parameters
- llvm::LegalityPredicate Predicate
- llvm::LegalizeMutation Mutation
¶unsigned int getAlias() const
unsigned int getAlias() const
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:475
¶bool isAliasedByAnother()
bool isAliasedByAnother()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:467
¶llvm::LegalizeRuleSet& legalFor(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& legalFor(
std::initializer_list<LLT> Types)
Description
The instruction is legal when type index 0 is any type in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:485
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& legalFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
llvm::LegalizeRuleSet& legalFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
Description
The instruction is legal when type indexes 0 and 1 is any type pair in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:490
Parameters
- std::initializer_list<std::pair<LLT, LLT>> Types
¶llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types)
Description
The instruction is legal when type indexes 0 and 1 are both in the given list. That is, the type pair is in the cartesian product of the list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:510
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
Description
The instruction is legal when type indexes 0 and 1 are both their respective lists.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:515
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
¶llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1,
std::initializer_list<LLT> Types2)
llvm::LegalizeRuleSet& legalForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1,
std::initializer_list<LLT> Types2)
Description
The instruction is legal when type indexes 0, 1, and 2 are both their respective lists.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:521
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
- std::initializer_list<LLT> Types2
¶llvm::LegalizeRuleSet& legalForTypeWithAnyImm(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& legalForTypeWithAnyImm(
std::initializer_list<LLT> Types)
Description
The instruction is legal when type index 0 is any type in the given list and imm index 0 is anything.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:495
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& legalForTypesWithMemDesc(
std::initializer_list<
LegalityPredicates::TypePairAndMemDesc>
TypesAndMemDesc)
llvm::LegalizeRuleSet& legalForTypesWithMemDesc(
std::initializer_list<
LegalityPredicates::TypePairAndMemDesc>
TypesAndMemDesc)
Description
The instruction is legal when type indexes 0 and 1 along with the memory size and minimum alignment is any type and size tuple in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:501
Parameters
- std::initializer_list< LegalityPredicates::TypePairAndMemDesc> TypesAndMemDesc
¶llvm::LegalizeRuleSet& legalIf(
llvm::LegalityPredicate Predicate)
llvm::LegalizeRuleSet& legalIf(
llvm::LegalityPredicate Predicate)
Description
The instruction is legal if predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:478
Parameters
- llvm::LegalityPredicate Predicate
¶llvm::LegalizeRuleSet& libcallFor(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& libcallFor(
std::initializer_list<LLT> Types)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:607
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& libcallFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
llvm::LegalizeRuleSet& libcallFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:611
Parameters
- std::initializer_list<std::pair<LLT, LLT>> Types
¶llvm::LegalizeRuleSet& libcallForCartesianProduct(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& libcallForCartesianProduct(
std::initializer_list<LLT> Types)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:615
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& libcallForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
llvm::LegalizeRuleSet& libcallForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:619
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
¶llvm::LegalizeRuleSet& libcallIf(
llvm::LegalityPredicate Predicate)
llvm::LegalizeRuleSet& libcallIf(
llvm::LegalityPredicate Predicate)
Description
Like legalIf, but for the Libcall action.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:601
Parameters
- llvm::LegalityPredicate Predicate
¶llvm::LegalizeRuleSet& lower()
llvm::LegalizeRuleSet& lower()
Description
The instruction is lowered.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:535
¶llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<std::pair<LLT, LLT>>
Types,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<std::pair<LLT, LLT>>
Types,
llvm::LegalizeMutation Mutation)
Description
The instruction is lowered when type indexes 0 and 1 is any type pair in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:579
Parameters
- std::initializer_list<std::pair<LLT, LLT>> Types
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<LLT> Types)
llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<LLT> Types)
Description
The instruction is lowered when type index 0 is any type in the given list. Keep type index 0 as the same type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:561
Parameters
- std::initializer_list<LLT> Types
¶llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<std::pair<LLT, LLT>>
Types)
Description
The instruction is lowered when type indexes 0 and 1 is any type pair in the given list. Keep type index 0 as the same type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:573
Parameters
- std::initializer_list<std::pair<LLT, LLT>> Types
¶llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<LLT> Types,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& lowerFor(
std::initializer_list<LLT> Types,
llvm::LegalizeMutation Mutation)
Description
The instruction is lowered when type index 0 is any type in the given list.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:567
Parameters
- std::initializer_list<LLT> Types
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& lowerForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
llvm::LegalizeRuleSet& lowerForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1)
Description
The instruction is lowered when type indexes 0 and 1 are both in their respective lists.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:585
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
¶llvm::LegalizeRuleSet& lowerForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1,
std::initializer_list<LLT> Types2)
llvm::LegalizeRuleSet& lowerForCartesianProduct(
std::initializer_list<LLT> Types0,
std::initializer_list<LLT> Types1,
std::initializer_list<LLT> Types2)
Description
The instruction is lowered when when type indexes 0, 1, and 2 are all in their respective lists.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:592
Parameters
- std::initializer_list<LLT> Types0
- std::initializer_list<LLT> Types1
- std::initializer_list<LLT> Types2
¶llvm::LegalizeRuleSet& lowerIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& lowerIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
Description
The instruction is lowered if predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:552
Parameters
- llvm::LegalityPredicate Predicate
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& lowerIf(
llvm::LegalityPredicate Predicate)
llvm::LegalizeRuleSet& lowerIf(
llvm::LegalityPredicate Predicate)
Description
The instruction is lowered if predicate is true. Keep type index 0 as the same type.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:544
Parameters
- llvm::LegalityPredicate Predicate
¶llvm::LegalizeRuleSet& lowerIfMemSizeNotPow2()
llvm::LegalizeRuleSet& lowerIfMemSizeNotPow2()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:674
¶llvm::LegalizeRuleSet& maxScalar(
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& maxScalar(
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Ensure the scalar is at most as wide as Ty.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:780
Parameters
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& maxScalarIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& maxScalarIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Conditionally limit the maximum size of the scalar. For example, when the maximum size of one type depends on the size of another such as extracting N bits from an M bit container.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:791
Parameters
- llvm::LegalityPredicate Predicate
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& maxScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& maxScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Ensure the scalar is at most as wide as Ty.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:771
Parameters
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& minScalar(
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& minScalar(
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Ensure the scalar is at least as wide as Ty.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:762
Parameters
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& minScalarEltSameAsIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
unsigned int LargeTypeIdx)
llvm::LegalizeRuleSet& minScalarEltSameAsIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
unsigned int LargeTypeIdx)
Description
Conditionally widen the scalar or elt to match the size of another.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:832
Parameters
- llvm::LegalityPredicate Predicate
- unsigned int TypeIdx
- unsigned int LargeTypeIdx
¶llvm::LegalizeRuleSet& minScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& minScalarOrElt(
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Ensure the scalar or element is at least as wide as Ty.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:742
Parameters
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& minScalarOrEltIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
const llvm::LLT& Ty)
llvm::LegalizeRuleSet& minScalarOrEltIf(
llvm::LegalityPredicate Predicate,
unsigned int TypeIdx,
const llvm::LLT& Ty)
Description
Ensure the scalar or element is at least as wide as Ty.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:751
Parameters
- llvm::LegalityPredicate Predicate
- unsigned int TypeIdx
- const llvm::LLT& Ty
¶llvm::LegalizeRuleSet& minScalarSameAs(
unsigned int TypeIdx,
unsigned int LargeTypeIdx)
llvm::LegalizeRuleSet& minScalarSameAs(
unsigned int TypeIdx,
unsigned int LargeTypeIdx)
Description
Widen the scalar to match the size of another.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:817
Parameters
- unsigned int TypeIdx
- unsigned int LargeTypeIdx
¶llvm::LegalizeRuleSet& moreElementsIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& moreElementsIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
Description
Add more elements to reach the type selected by the mutation if the predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:645
Parameters
- llvm::LegalityPredicate Predicate
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& moreElementsToNextPow2(
unsigned int TypeIdx)
llvm::LegalizeRuleSet& moreElementsToNextPow2(
unsigned int TypeIdx)
Description
Add more elements to the vector to reach the next power of two. No effect if the type is not a vector or the element count is a power of two.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:850
Parameters
- unsigned int TypeIdx
¶llvm::LegalizeRuleSet& narrowScalar(
unsigned int TypeIdx,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& narrowScalar(
unsigned int TypeIdx,
llvm::LegalizeMutation Mutation)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:729
Parameters
- unsigned int TypeIdx
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& narrowScalarIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& narrowScalarIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
Description
Narrow the scalar to the one selected by the mutation if the predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:635
Parameters
- llvm::LegalityPredicate Predicate
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& scalarize(
unsigned int TypeIdx)
llvm::LegalizeRuleSet& scalarize(
unsigned int TypeIdx)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:735
Parameters
- unsigned int TypeIdx
¶void setIsAliasedByAnother()
void setIsAliasedByAnother()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:468
¶llvm::LegalizeRuleSet& unsupported()
llvm::LegalizeRuleSet& unsupported()
Description
The instruction is unsupported.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:663
¶llvm::LegalizeRuleSet& unsupportedIf(
llvm::LegalityPredicate Predicate)
llvm::LegalizeRuleSet& unsupportedIf(
llvm::LegalityPredicate Predicate)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:667
Parameters
- llvm::LegalityPredicate Predicate
¶llvm::LegalizeRuleSet&
unsupportedIfMemSizeNotPow2()
llvm::LegalizeRuleSet&
unsupportedIfMemSizeNotPow2()
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:670
¶bool verifyImmIdxsCoverage(
unsigned int NumImmIdxs) const
bool verifyImmIdxsCoverage(
unsigned int NumImmIdxs) const
Description
Check if there is no imm index which is obviously not handled by the LegalizeRuleSet in any way at all.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:923
Parameters
- unsigned int NumImmIdxs
¶bool verifyTypeIdxsCoverage(
unsigned int NumTypeIdxs) const
bool verifyTypeIdxsCoverage(
unsigned int NumTypeIdxs) const
Description
Check if there is no type index which is obviously not handled by the LegalizeRuleSet in any way at all.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:919
Parameters
- unsigned int NumTypeIdxs
¶llvm::LegalizeRuleSet& widenScalarIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
llvm::LegalizeRuleSet& widenScalarIf(
llvm::LegalityPredicate Predicate,
llvm::LegalizeMutation Mutation)
Description
Widen the scalar to the one selected by the mutation if the predicate is true.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:626
Parameters
- llvm::LegalityPredicate Predicate
- llvm::LegalizeMutation Mutation
¶llvm::LegalizeRuleSet& widenScalarOrEltToNextPow2(
unsigned int TypeIdx,
unsigned int MinSize = 0)
llvm::LegalizeRuleSet& widenScalarOrEltToNextPow2(
unsigned int TypeIdx,
unsigned int MinSize = 0)
Description
Widen the scalar or vector element type to the next power of two that is at least MinSize. No effect if the scalar size is a power of two.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:721
Parameters
- unsigned int TypeIdx
- unsigned int MinSize = 0
¶llvm::LegalizeRuleSet& widenScalarToNextPow2(
unsigned int TypeIdx,
unsigned int MinSize = 0)
llvm::LegalizeRuleSet& widenScalarToNextPow2(
unsigned int TypeIdx,
unsigned int MinSize = 0)
Description
Widen the scalar to the next power of two that is at least MinSize. No effect if the type is not a scalar or is a power of two.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:711
Parameters
- unsigned int TypeIdx
- unsigned int MinSize = 0