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)

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)

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

Parameters

unsigned int MergeOp
unsigned int ConvertOp
llvm::LLT OpTy
llvm::LLT DestTy

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)

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)

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)

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)

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)

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)

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)

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)

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