LLVM: llvm::LegalizeRuleSet Class Reference (original) (raw)
#include "[llvm/CodeGen/GlobalISel/LegalizerInfo.h](LegalizerInfo%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| LegalizeRuleSet ()=default | |
| bool | isAliasedByAnother () |
| void | setIsAliasedByAnother () |
| void | aliasTo (unsigned Opcode) |
| unsigned | getAlias () const |
| unsigned | immIdx (unsigned ImmIdx) |
| LegalizeRuleSet & | legalIf (LegalityPredicate Predicate) |
| The instruction is legal if predicate is true. | |
| LegalizeRuleSet & | legalFor (std::initializer_list< LLT > Types) |
| The instruction is legal when type index 0 is any type in the given list. | |
| LegalizeRuleSet & | legalFor (bool Pred, std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | legalFor (std::initializer_list< std::pair< LLT, LLT > > Types) |
| The instruction is legal when type indexes 0 and 1 is any type pair in the given list. | |
| LegalizeRuleSet & | legalFor (bool Pred, std::initializer_list< std::pair< LLT, LLT > > Types) |
| LegalizeRuleSet & | legalFor (bool Pred, std::initializer_list< std::tuple< LLT, LLT, LLT > > Types) |
| LegalizeRuleSet & | legalForTypeWithAnyImm (std::initializer_list< LLT > Types) |
| The instruction is legal when type index 0 is any type in the given list and imm index 0 is anything. | |
| LegalizeRuleSet & | legalForTypeWithAnyImm (std::initializer_list< std::pair< LLT, LLT > > Types) |
| LegalizeRuleSet & | legalForTypesWithMemDesc (std::initializer_list< LegalityPredicates::TypePairAndMemDesc > TypesAndMemDesc) |
| 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. | |
| LegalizeRuleSet & | legalForCartesianProduct (std::initializer_list< LLT > Types) |
| The instruction is legal when type indexes 0 and 1 are both in the given list. | |
| LegalizeRuleSet & | legalForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1) |
| The instruction is legal when type indexes 0 and 1 are both their respective lists. | |
| LegalizeRuleSet & | legalForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2) |
| The instruction is legal when type indexes 0, 1, and 2 are both their respective lists. | |
| LegalizeRuleSet & | alwaysLegal () |
| LegalizeRuleSet & | bitcastIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| The specified type index is coerced if predicate is true. | |
| LegalizeRuleSet & | lower () |
| The instruction is lowered. | |
| LegalizeRuleSet & | lowerIf (LegalityPredicate Predicate) |
| The instruction is lowered if predicate is true. | |
| LegalizeRuleSet & | lowerIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| The instruction is lowered if predicate is true. | |
| LegalizeRuleSet & | lowerFor (std::initializer_list< LLT > Types) |
| The instruction is lowered when type index 0 is any type in the given list. | |
| LegalizeRuleSet & | lowerFor (std::initializer_list< LLT > Types, LegalizeMutation Mutation) |
| The instruction is lowered when type index 0 is any type in the given list. | |
| LegalizeRuleSet & | lowerFor (std::initializer_list< std::pair< LLT, LLT > > Types) |
| The instruction is lowered when type indexes 0 and 1 is any type pair in the given list. | |
| LegalizeRuleSet & | lowerFor (std::initializer_list< std::pair< LLT, LLT > > Types, LegalizeMutation Mutation) |
| The instruction is lowered when type indexes 0 and 1 is any type pair in the given list. | |
| LegalizeRuleSet & | lowerForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1) |
| The instruction is lowered when type indexes 0 and 1 are both in their respective lists. | |
| LegalizeRuleSet & | lowerForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2) |
| The instruction is lowered when type indexes 0, 1, and 2 are all in their respective lists. | |
| LegalizeRuleSet & | libcall () |
| The instruction is emitted as a library call. | |
| LegalizeRuleSet & | libcallIf (LegalityPredicate Predicate) |
| Like legalIf, but for the Libcall action. | |
| LegalizeRuleSet & | libcallFor (std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | libcallFor (bool Pred, std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | libcallFor (std::initializer_list< std::pair< LLT, LLT > > Types) |
| LegalizeRuleSet & | libcallFor (bool Pred, std::initializer_list< std::pair< LLT, LLT > > Types) |
| LegalizeRuleSet & | libcallForCartesianProduct (std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | libcallForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1) |
| LegalizeRuleSet & | widenScalarIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| Widen the scalar to the one selected by the mutation if the predicate is true. | |
| LegalizeRuleSet & | narrowScalarIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| Narrow the scalar to the one selected by the mutation if the predicate is true. | |
| LegalizeRuleSet & | narrowScalarFor (std::initializer_list< std::pair< LLT, LLT > > Types, LegalizeMutation Mutation) |
| Narrow the scalar, specified in mutation, when type indexes 0 and 1 is any type pair in the given list. | |
| LegalizeRuleSet & | moreElementsIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| Add more elements to reach the type selected by the mutation if the predicate is true. | |
| LegalizeRuleSet & | fewerElementsIf (LegalityPredicate Predicate, LegalizeMutation Mutation) |
| Remove elements to reach the type selected by the mutation if the predicate is true. | |
| LegalizeRuleSet & | unsupported () |
| The instruction is unsupported. | |
| LegalizeRuleSet & | unsupportedIf (LegalityPredicate Predicate) |
| LegalizeRuleSet & | unsupportedFor (std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | unsupportedIfMemSizeNotPow2 () |
| LegalizeRuleSet & | lowerIfMemSizeNotPow2 () |
| Lower a memory operation if the memory size, rounded to bytes, is not a power of 2. | |
| LegalizeRuleSet & | lowerIfMemSizeNotByteSizePow2 () |
| Lower a memory operation if the memory access size is not a round power of 2 byte size. | |
| LegalizeRuleSet & | customIf (LegalityPredicate Predicate) |
| LegalizeRuleSet & | customFor (std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | customFor (bool Pred, std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | customFor (std::initializer_list< std::pair< LLT, LLT > > Types) |
| The instruction is custom when type indexes 0 and 1 is any type pair in the given list. | |
| LegalizeRuleSet & | customFor (bool Pred, std::initializer_list< std::pair< LLT, LLT > > Types) |
| LegalizeRuleSet & | customForCartesianProduct (std::initializer_list< LLT > Types) |
| LegalizeRuleSet & | customForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1) |
| The instruction is custom when type indexes 0 and 1 are both in their respective lists. | |
| LegalizeRuleSet & | customForCartesianProduct (std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2) |
| The instruction is custom when type indexes 0, 1, and 2 are all in their respective lists. | |
| LegalizeRuleSet & | customForCartesianProduct (bool Pred, std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1) |
| The instruction is custom when the predicate is true and type indexes 0 and 1 are all in their respective lists. | |
| LegalizeRuleSet & | custom () |
| Unconditionally custom lower. | |
| LegalizeRuleSet & | widenScalarToNextPow2 (unsigned TypeIdx, unsigned MinSize=0) |
| Widen the scalar to the next power of two that is at least MinSize. | |
| LegalizeRuleSet & | widenScalarToNextMultipleOf (unsigned TypeIdx, unsigned Size) |
| Widen the scalar to the next multiple of Size. | |
| LegalizeRuleSet & | widenScalarOrEltToNextPow2 (unsigned TypeIdx, unsigned MinSize=0) |
| Widen the scalar or vector element type to the next power of two that is at least MinSize. | |
| LegalizeRuleSet & | widenScalarOrEltToNextPow2OrMinSize (unsigned TypeIdx, unsigned MinSize=0) |
| Widen the scalar or vector element type to the next power of two that is at least MinSize. | |
| LegalizeRuleSet & | narrowScalar (unsigned TypeIdx, LegalizeMutation Mutation) |
| LegalizeRuleSet & | scalarize (unsigned TypeIdx) |
| LegalizeRuleSet & | scalarizeIf (LegalityPredicate Predicate, unsigned TypeIdx) |
| LegalizeRuleSet & | minScalarOrElt (unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar or element is at least as wide as Ty. | |
| LegalizeRuleSet & | minScalarOrEltIf (LegalityPredicate Predicate, unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar or element is at least as wide as Ty. | |
| LegalizeRuleSet & | widenVectorEltsToVectorMinSize (unsigned TypeIdx, unsigned VectorSize) |
| Ensure the vector size is at least as wide as VectorSize by promoting the element. | |
| LegalizeRuleSet & | minScalar (unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar is at least as wide as Ty. | |
| LegalizeRuleSet & | minScalar (bool Pred, unsigned TypeIdx, const LLT Ty) |
| LegalizeRuleSet & | minScalarIf (LegalityPredicate Predicate, unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar is at least as wide as Ty if condition is met. | |
| LegalizeRuleSet & | maxScalarOrElt (unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar is at most as wide as Ty. | |
| LegalizeRuleSet & | maxScalar (unsigned TypeIdx, const LLT Ty) |
| Ensure the scalar is at most as wide as Ty. | |
| LegalizeRuleSet & | maxScalarIf (LegalityPredicate Predicate, unsigned TypeIdx, const LLT Ty) |
| Conditionally limit the maximum size of the scalar. | |
| LegalizeRuleSet & | clampScalar (unsigned TypeIdx, const LLT MinTy, const LLT MaxTy) |
| Limit the range of scalar sizes to MinTy and MaxTy. | |
| LegalizeRuleSet & | clampScalar (bool Pred, unsigned TypeIdx, const LLT MinTy, const LLT MaxTy) |
| LegalizeRuleSet & | clampScalarOrElt (unsigned TypeIdx, const LLT MinTy, const LLT MaxTy) |
| Limit the range of scalar sizes to MinTy and MaxTy. | |
| LegalizeRuleSet & | minScalarSameAs (unsigned TypeIdx, unsigned LargeTypeIdx) |
| Widen the scalar to match the size of another. | |
| LegalizeRuleSet & | maxScalarSameAs (unsigned TypeIdx, unsigned NarrowTypeIdx) |
| Narrow the scalar to match the size of another. | |
| LegalizeRuleSet & | scalarSameSizeAs (unsigned TypeIdx, unsigned SameSizeIdx) |
| Change the type TypeIdx to have the same scalar size as type SameSizeIdx. | |
| LegalizeRuleSet & | minScalarEltSameAsIf (LegalityPredicate Predicate, unsigned TypeIdx, unsigned LargeTypeIdx) |
| Conditionally widen the scalar or elt to match the size of another. | |
| LegalizeRuleSet & | maxScalarEltSameAsIf (LegalityPredicate Predicate, unsigned TypeIdx, unsigned SmallTypeIdx) |
| Conditionally narrow the scalar or elt to match the size of another. | |
| LegalizeRuleSet & | moreElementsToNextPow2 (unsigned TypeIdx) |
| Add more elements to the vector to reach the next power of two. | |
| LegalizeRuleSet & | clampMinNumElements (unsigned TypeIdx, const LLT EltTy, unsigned MinElements) |
| Limit the number of elements in EltTy vectors to at least MinElements. | |
| LegalizeRuleSet & | alignNumElementsTo (unsigned TypeIdx, const LLT EltTy, unsigned NumElts) |
| Set number of elements to nearest larger multiple of NumElts. | |
| LegalizeRuleSet & | clampMaxNumElements (unsigned TypeIdx, const LLT EltTy, unsigned MaxElements) |
| Limit the number of elements in EltTy vectors to at most MaxElements. | |
| LegalizeRuleSet & | clampNumElements (unsigned TypeIdx, const LLT MinTy, const LLT MaxTy) |
| 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. | |
| LegalizeRuleSet & | clampMaxNumElementsStrict (unsigned TypeIdx, const LLT EltTy, unsigned NumElts) |
| Express EltTy vectors strictly using vectors with NumElts elements (or scalars when NumElts equals 1). | |
| LegalizeRuleSet & | fallback () |
| Fallback on the previous implementation. | |
| LLVM_ABI bool | verifyTypeIdxsCoverage (unsigned NumTypeIdxs) const |
| Check if there is no type index which is obviously not handled by the LegalizeRuleSet in any way at all. | |
| LLVM_ABI bool | verifyImmIdxsCoverage (unsigned NumImmIdxs) const |
| Check if there is no imm index which is obviously not handled by the LegalizeRuleSet in any way at all. | |
| LLVM_ABI LegalizeActionStep | apply (const LegalityQuery &Query) const |
| Apply the ruleset to the given LegalityQuery. |
Definition at line 452 of file LegalizerInfo.h.
| llvm::LegalizeRuleSet::LegalizeRuleSet ( ) | default |
|---|
Referenced by alignNumElementsTo(), alwaysLegal(), bitcastIf(), clampMaxNumElements(), clampMaxNumElementsStrict(), clampMinNumElements(), clampNumElements(), clampScalar(), clampScalar(), clampScalarOrElt(), custom(), customFor(), customFor(), customFor(), customFor(), customForCartesianProduct(), customIf(), fallback(), fewerElementsIf(), legalFor(), legalFor(), legalFor(), legalFor(), legalForCartesianProduct(), legalForCartesianProduct(), legalForCartesianProduct(), legalForTypesWithMemDesc(), legalForTypeWithAnyImm(), legalForTypeWithAnyImm(), legalIf(), libcall(), libcallFor(), libcallFor(), libcallIf(), lower(), lowerFor(), lowerFor(), lowerFor(), lowerFor(), lowerForCartesianProduct(), lowerForCartesianProduct(), lowerIf(), lowerIf(), lowerIfMemSizeNotByteSizePow2(), lowerIfMemSizeNotPow2(), maxScalar(), maxScalarEltSameAsIf(), maxScalarIf(), maxScalarOrElt(), maxScalarSameAs(), minScalar(), minScalar(), minScalarEltSameAsIf(), minScalarIf(), minScalarOrElt(), minScalarOrEltIf(), minScalarSameAs(), moreElementsIf(), moreElementsToNextPow2(), narrowScalar(), narrowScalarIf(), scalarize(), scalarizeIf(), scalarSameSizeAs(), unsupported(), unsupportedFor(), unsupportedIf(), unsupportedIfMemSizeNotPow2(), widenScalarIf(), widenScalarOrEltToNextPow2(), widenScalarOrEltToNextPow2OrMinSize(), widenScalarToNextMultipleOf(), widenScalarToNextPow2(), and widenVectorEltsToVectorMinSize().
◆ aliasTo()
| void llvm::LegalizeRuleSet::aliasTo ( unsigned Opcode) | inline |
|---|
◆ alignNumElementsTo()
◆ alwaysLegal()
◆ apply()
◆ bitcastIf()
◆ clampMaxNumElements()
Limit the number of elements in EltTy vectors to at most MaxElements.
Definition at line 1271 of file LegalizerInfo.h.
References llvm::LLT::getElementType(), llvm::ElementCount::getFixed(), llvm::LLT::getNumElements(), llvm::LLT::isFixedVector(), LegalizeRuleSet(), llvm::LLT::scalarOrVector(), and llvm::LegalityQuery::Types.
Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), clampMaxNumElementsStrict(), clampNumElements(), and llvm::X86LegalizerInfo::X86LegalizerInfo().
◆ clampMaxNumElementsStrict()
Express EltTy vectors strictly using vectors with NumElts elements (or scalars when NumElts equals 1).
First pad with undef elements to nearest larger multiple of NumElts. Then perform split with all sub-instructions having the same type. Using clampMaxNumElements (non-strict) can result in leftover instruction with different type (fewer elements then NumElts or scalar). No effect if the type is not a vector.
Definition at line 1315 of file LegalizerInfo.h.
References alignNumElementsTo(), clampMaxNumElements(), and LegalizeRuleSet().
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
◆ clampMinNumElements()
◆ clampNumElements()
◆ clampScalar() [1/2]
◆ clampScalar() [2/2]
Limit the range of scalar sizes to MinTy and MaxTy.
Definition at line 1137 of file LegalizerInfo.h.
References assert(), llvm::LLT::isScalar(), LegalizeRuleSet(), maxScalar(), and minScalar().
Referenced by llvm::AArch64LegalizerInfo::AArch64LegalizerInfo(), llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::ARMLegalizerInfo::ARMLegalizerInfo(), clampScalar(), llvm::MipsLegalizerInfo::MipsLegalizerInfo(), llvm::RISCVLegalizerInfo::RISCVLegalizerInfo(), and llvm::X86LegalizerInfo::X86LegalizerInfo().
◆ clampScalarOrElt()
◆ custom()
◆ customFor() [1/4]
◆ customFor() [2/4]
◆ customFor() [3/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customFor ( std::initializer_list< LLT > Types) | inline |
|---|
◆ customFor() [4/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customFor ( std::initializer_list< std::pair< LLT, LLT > > Types) | inline |
|---|
The instruction is custom when type indexes 0 and 1 is any type pair in the given list.
Definition at line 922 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ customForCartesianProduct() [1/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customForCartesianProduct ( bool Pred, std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1 ) | inline |
|---|
The instruction is custom when the predicate is true and type indexes 0 and 1 are all in their respective lists.
Definition at line 955 of file LegalizerInfo.h.
◆ customForCartesianProduct() [2/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customForCartesianProduct ( std::initializer_list< LLT > Types) | inline |
|---|
◆ customForCartesianProduct() [3/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1 ) | inline |
|---|
The instruction is custom when type indexes 0 and 1 are both in their respective lists.
Definition at line 938 of file LegalizerInfo.h.
◆ customForCartesianProduct() [4/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::customForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2 ) | inline |
|---|
The instruction is custom when type indexes 0, 1, and 2 are all in their respective lists.
Definition at line 945 of file LegalizerInfo.h.
◆ customIf()
◆ fallback()
Fallback on the previous implementation.
This should only be used while porting a rule.
Definition at line 1323 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ fewerElementsIf()
◆ getAlias()
| unsigned llvm::LegalizeRuleSet::getAlias ( ) const | inline |
|---|
◆ immIdx()
◆ isAliasedByAnother()
| bool llvm::LegalizeRuleSet::isAliasedByAnother ( ) | inline |
|---|
◆ legalFor() [1/5]
◆ legalFor() [2/5]
◆ legalFor() [3/5]
◆ legalFor() [4/5]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalFor ( std::initializer_list< LLT > Types) | inline |
|---|
◆ legalFor() [5/5]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalFor ( std::initializer_list< std::pair< LLT, LLT > > Types) | inline |
|---|
The instruction is legal when type indexes 0 and 1 is any type pair in the given list.
Definition at line 646 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ legalForCartesianProduct() [1/3]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalForCartesianProduct ( std::initializer_list< LLT > Types) | inline |
|---|
◆ legalForCartesianProduct() [2/3]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1 ) | inline |
|---|
The instruction is legal when type indexes 0 and 1 are both their respective lists.
Definition at line 690 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ legalForCartesianProduct() [3/3]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2 ) | inline |
|---|
The instruction is legal when type indexes 0, 1, and 2 are both their respective lists.
Definition at line 696 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ legalForTypesWithMemDesc()
◆ legalForTypeWithAnyImm() [1/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalForTypeWithAnyImm ( std::initializer_list< LLT > Types) | inline |
|---|
The instruction is legal when type index 0 is any type in the given list and imm index 0 is anything.
Definition at line 663 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ legalForTypeWithAnyImm() [2/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::legalForTypeWithAnyImm ( std::initializer_list< std::pair< LLT, LLT > > Types) | inline |
|---|
◆ legalIf()
◆ libcall()
◆ libcallFor() [1/4]
◆ libcallFor() [2/4]
◆ libcallFor() [3/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::libcallFor ( std::initializer_list< LLT > Types) | inline |
|---|
◆ libcallFor() [4/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::libcallFor ( std::initializer_list< std::pair< LLT, LLT > > Types) | inline |
|---|
◆ libcallForCartesianProduct() [1/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::libcallForCartesianProduct ( std::initializer_list< LLT > Types) | inline |
|---|
◆ libcallForCartesianProduct() [2/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::libcallForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1 ) | inline |
|---|
◆ libcallIf()
Like legalIf, but for the Libcall action.
Definition at line 792 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ lower()
◆ lowerFor() [1/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::lowerFor ( std::initializer_list< LLT > Types) | inline |
|---|
◆ lowerFor() [2/4]
The instruction is lowered when type index 0 is any type in the given list.
Definition at line 750 of file LegalizerInfo.h.
References LegalizeRuleSet(), and Mutation.
◆ lowerFor() [3/4]
| LegalizeRuleSet & llvm::LegalizeRuleSet::lowerFor ( std::initializer_list< std::pair< LLT, LLT > > Types) | inline |
|---|
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.
Definition at line 756 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ lowerFor() [4/4]
The instruction is lowered when type indexes 0 and 1 is any type pair in the given list.
Definition at line 761 of file LegalizerInfo.h.
References LegalizeRuleSet(), and Mutation.
◆ lowerForCartesianProduct() [1/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::lowerForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1 ) | inline |
|---|
The instruction is lowered when type indexes 0 and 1 are both in their respective lists.
Definition at line 767 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ lowerForCartesianProduct() [2/2]
| LegalizeRuleSet & llvm::LegalizeRuleSet::lowerForCartesianProduct ( std::initializer_list< LLT > Types0, std::initializer_list< LLT > Types1, std::initializer_list< LLT > Types2 ) | inline |
|---|
The instruction is lowered when type indexes 0, 1, and 2 are all in their respective lists.
Definition at line 774 of file LegalizerInfo.h.
References LegalizeRuleSet().
◆ lowerIf() [1/2]
◆ lowerIf() [2/2]
◆ lowerIfMemSizeNotByteSizePow2()
| LegalizeRuleSet & llvm::LegalizeRuleSet::lowerIfMemSizeNotByteSizePow2 ( ) | inline |
|---|
◆ lowerIfMemSizeNotPow2()
◆ maxScalar()
◆ maxScalarEltSameAsIf()
◆ maxScalarIf()
◆ maxScalarOrElt()
◆ maxScalarSameAs()
◆ minScalar() [1/2]
◆ minScalar() [2/2]
◆ minScalarEltSameAsIf()
◆ minScalarIf()
◆ minScalarOrElt()
◆ minScalarOrEltIf()
◆ minScalarSameAs()
◆ moreElementsIf()
◆ moreElementsToNextPow2()
◆ narrowScalar()
◆ narrowScalarFor()
Narrow the scalar, specified in mutation, when type indexes 0 and 1 is any type pair in the given list.
Definition at line 847 of file LegalizerInfo.h.
References Mutation.
◆ narrowScalarIf()
◆ scalarize()
◆ scalarizeIf()
◆ scalarSameSizeAs()
◆ setIsAliasedByAnother()
| void llvm::LegalizeRuleSet::setIsAliasedByAnother ( ) | inline |
|---|
◆ unsupported()
◆ unsupportedFor()
| LegalizeRuleSet & llvm::LegalizeRuleSet::unsupportedFor ( std::initializer_list< LLT > Types) | inline |
|---|
◆ unsupportedIf()
◆ unsupportedIfMemSizeNotPow2()
| LegalizeRuleSet & llvm::LegalizeRuleSet::unsupportedIfMemSizeNotPow2 ( ) | inline |
|---|
◆ verifyImmIdxsCoverage()
| bool LegalizeRuleSet::verifyImmIdxsCoverage | ( | unsigned | NumImmIdxs | ) | const |
|---|
◆ verifyTypeIdxsCoverage()
| bool LegalizeRuleSet::verifyTypeIdxsCoverage | ( | unsigned | NumTypeIdxs | ) | const |
|---|
◆ widenScalarIf()
◆ widenScalarOrEltToNextPow2()
◆ widenScalarOrEltToNextPow2OrMinSize()
◆ widenScalarToNextMultipleOf()
◆ widenScalarToNextPow2()
◆ widenVectorEltsToVectorMinSize()
The documentation for this class was generated from the following files:
- include/llvm/CodeGen/GlobalISel/LegalizerInfo.h
- lib/CodeGen/GlobalISel/LegalizerInfo.cpp