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()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:465

void aliasTo(unsigned int Opcode)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:469

Parameters

unsigned int Opcode

llvm::LegalizeRuleSet& alwaysLegal()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:528

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)

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)

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)

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

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

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

unsigned int TypeIdx
const llvm::LLT& MinTy
const llvm::LLT& MaxTy

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)

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)

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)

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)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:695

Parameters

std::initializer_list<LLT> Types

llvm::LegalizeRuleSet& customIf(
    llvm::LegalityPredicate Predicate)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:679

Parameters

llvm::LegalityPredicate Predicate

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)

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

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:475

bool isAliasedByAnother()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:467

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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()

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)

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)

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)

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)

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)

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)

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)

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)

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()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:674

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:735

Parameters

unsigned int TypeIdx

void setIsAliasedByAnother()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:468

llvm::LegalizeRuleSet& unsupported()

Description

The instruction is unsupported.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:663

llvm::LegalizeRuleSet& unsupportedIf(
    llvm::LegalityPredicate Predicate)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:667

Parameters

llvm::LegalityPredicate Predicate

llvm::LegalizeRuleSet&
unsupportedIfMemSizeNotPow2()

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizerInfo.h:670

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

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)

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)

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)

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