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