class LegalizationArtifactCombiner
Declaration
class LegalizationArtifactCombiner { /* full declaration omitted */ };
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:26
Method Overview
- public LegalizationArtifactCombiner(llvm::MachineIRBuilder & B, llvm::MachineRegisterInfo & MRI, const llvm::LegalizerInfo & LI)
- public static bool canFoldMergeOpcode(unsigned int MergeOp, unsigned int ConvertOp, llvm::LLT OpTy, llvm::LLT DestTy)
- public static bool isMergeLikeOpcode(unsigned int Opc)
- public bool tryCombineAnyExt(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryCombineExtract(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryCombineInstruction(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, llvm::GISelObserverWrapper & WrapperObserver)
- public bool tryCombineMerges(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryCombineSExt(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryCombineTrunc(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryCombineZExt(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
- public bool tryFoldImplicitDef(llvm::MachineInstr & MI, SmallVectorImpl<llvm::MachineInstr *> & DeadInsts, SmallVectorImpl<llvm::Register> & UpdatedDefs)
Methods
¶LegalizationArtifactCombiner(
llvm::MachineIRBuilder& B,
llvm::MachineRegisterInfo& MRI,
const llvm::LegalizerInfo& LI)
LegalizationArtifactCombiner(
llvm::MachineIRBuilder& B,
llvm::MachineRegisterInfo& MRI,
const llvm::LegalizerInfo& LI)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:44
Parameters
- llvm::MachineIRBuilder& B
- llvm::MachineRegisterInfo& MRI
- const llvm::LegalizerInfo& LI
¶static bool canFoldMergeOpcode(
unsigned int MergeOp,
unsigned int ConvertOp,
llvm::LLT OpTy,
llvm::LLT DestTy)
static bool canFoldMergeOpcode(
unsigned int MergeOp,
unsigned int ConvertOp,
llvm::LLT OpTy,
llvm::LLT DestTy)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:232
Parameters
¶static bool isMergeLikeOpcode(unsigned int Opc)
static bool isMergeLikeOpcode(unsigned int Opc)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:409
Parameters
- unsigned int Opc
¶bool tryCombineAnyExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineAnyExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:48
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryCombineExtract(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineExtract(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:420
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryCombineInstruction(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
llvm::GISelObserverWrapper& WrapperObserver)
bool tryCombineInstruction(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
llvm::GISelObserverWrapper& WrapperObserver)
Description
Try to combine away MI. Returns true if it combined away the MI. Adds instructions that are dead as a result of the combine into DeadInsts, which can include MI.
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:473
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- llvm::GISelObserverWrapper& WrapperObserver
¶bool tryCombineMerges(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineMerges(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:283
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryCombineSExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineSExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:141
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryCombineTrunc(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineTrunc(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:168
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryCombineZExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryCombineZExt(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:97
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs
¶bool tryFoldImplicitDef(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
bool tryFoldImplicitDef(
llvm::MachineInstr& MI,
SmallVectorImpl<llvm::MachineInstr*>&
DeadInsts,
SmallVectorImpl<llvm::Register>& UpdatedDefs)
Description
Try to fold G_[ASZ]EXT (G_IMPLICIT_DEF).
Declared at: llvm/include/llvm/CodeGen/GlobalISel/LegalizationArtifactCombiner.h:196
Parameters
- llvm::MachineInstr& MI
- SmallVectorImpl<llvm::MachineInstr*>& DeadInsts
- SmallVectorImpl<llvm::Register>& UpdatedDefs