class LegalizationArtifactCombiner::ArtifactValueFinder

Declaration

class LegalizationArtifactCombiner::ArtifactValueFinder { /* full declaration omitted */ };

Description

This class provides utilities for finding source registers of specific bit ranges in an artifact. The routines can look through the source registers if they're other artifacts to try to find a non-artifact source of a value.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:556

Member Variables

private llvm::MachineRegisterInfo& MRI
private llvm::MachineIRBuilder& MIB
private const llvm::LegalizerInfo& LI
private llvm::Register CurrentBest = llvm::Register()

Method Overview

  • public ArtifactValueFinder(llvm::MachineRegisterInfo & Mri, llvm::MachineIRBuilder & Builder, const llvm::LegalizerInfo & Info)
  • private llvm::Register findValueFromBuildVector(llvm::GBuildVector & BV, unsigned int StartBit, unsigned int Size)
  • private llvm::Register findValueFromConcat(llvm::GConcatVectors & Concat, unsigned int StartBit, unsigned int Size)
  • public llvm::Register findValueFromDef(llvm::Register DefReg, unsigned int StartBit, unsigned int Size)
  • private llvm::Register findValueFromDefImpl(llvm::Register DefReg, unsigned int StartBit, unsigned int Size)
  • private llvm::Register findValueFromInsert(llvm::MachineInstr & MI, unsigned int StartBit, unsigned int Size)
  • public bool tryCombineUnmergeDefs(llvm::GUnmerge & MI, llvm::GISelChangeObserver & Observer, SmallVectorImpl<llvm::Register> & UpdatedDefs)

Methods

ArtifactValueFinder(
    llvm::MachineRegisterInfo& Mri,
    llvm::MachineIRBuilder& Builder,
    const llvm::LegalizerInfo& Info)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:765

Parameters

llvm::MachineRegisterInfo& Mri
llvm::MachineIRBuilder& Builder
const llvm::LegalizerInfo& Info

llvm::Register findValueFromBuildVector(
    llvm::GBuildVector& BV,
    unsigned int StartBit,
    unsigned int Size)

Description

Given an build_vector op \p BV and a start bit and size, try to find the origin of the value defined by that start position and size.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:601

Parameters

llvm::GBuildVector& BV
unsigned int StartBit
unsigned int Size

Returns

a register with the requested size, or the current best register found during the current query.

llvm::Register findValueFromConcat(
    llvm::GConcatVectors& Concat,
    unsigned int StartBit,
    unsigned int Size)

Description

Given an concat_vector op \p Concat and a start bit and size, try to find the origin of the value defined by that start position and size.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:569

Parameters

llvm::GConcatVectors& Concat
unsigned int StartBit
unsigned int Size

Returns

a register with the requested size, or the current best register found during the current query.

llvm::Register findValueFromDef(
    llvm::Register DefReg,
    unsigned int StartBit,
    unsigned int Size)

Description

Try to find a source of the value defined in the def \p DefReg, starting at position \p StartBit with size \p Size.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:773

Parameters

llvm::Register DefReg
unsigned int StartBit
unsigned int Size

Returns

a register with the requested size, or an empty Register if no better value could be found.

llvm::Register findValueFromDefImpl(
    llvm::Register DefReg,
    unsigned int StartBit,
    unsigned int Size)

Description

Internal implementation for findValueFromDef(). findValueFromDef() initializes some data like the CurrentBest register, which this method and its callees rely upon.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:725

Parameters

llvm::Register DefReg
unsigned int StartBit
unsigned int Size

llvm::Register findValueFromInsert(
    llvm::MachineInstr& MI,
    unsigned int StartBit,
    unsigned int Size)

Description

Given an G_INSERT op \p MI and a start bit and size, try to find the origin of the value defined by that start position and size.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:655

Parameters

llvm::MachineInstr& MI
unsigned int StartBit
unsigned int Size

Returns

a register with the requested size, or the current best register found during the current query.

bool tryCombineUnmergeDefs(
    llvm::GUnmerge& MI,
    llvm::GISelChangeObserver& Observer,
    SmallVectorImpl<llvm::Register>& UpdatedDefs)

Description

Try to combine the defs of an unmerge \p MI by attempting to find values that provides the bits for each def reg.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:783

Parameters

llvm::GUnmerge& MI
llvm::GISelChangeObserver& Observer
SmallVectorImpl<llvm::Register>& UpdatedDefs

Returns

true if all the defs of the unmerge have been made dead.