LLVM  14.0.0git
Macros | Typedefs | Functions | Variables
MachineSink.cpp File Reference
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SparseBitVector.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
#include "llvm/CodeGen/MachineDominators.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachinePostDominators.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RegisterClassInfo.h"
#include "llvm/CodeGen/RegisterPressure.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Pass.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <map>
#include <utility>
#include <vector>
Include dependency graph for MachineSink.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "machine-sink"
 

Typedefs

using MIRegs = std::pair< MachineInstr *, SmallVector< unsigned, 2 > >
 

Functions

 STATISTIC (NumSunk, "Number of machine instructions sunk")
 
 STATISTIC (NumLoopSunk, "Number of machine instructions sunk into a loop")
 
 STATISTIC (NumSplit, "Number of critical edges split")
 
 STATISTIC (NumCoalesces, "Number of copies coalesced")
 
 STATISTIC (NumPostRACopySink, "Number of copies sunk after RA")
 
 INITIALIZE_PASS_BEGIN (MachineSinking, DEBUG_TYPE, "Machine code sinking", false, false) INITIALIZE_PASS_END(MachineSinking
 
static bool mayLoadFromGOTOrConstantPool (MachineInstr &MI)
 Return true if this machine instruction loads from global offset table or constant pool. More...
 
static bool SinkingPreventsImplicitNullCheck (MachineInstr &MI, const TargetInstrInfo *TII, const TargetRegisterInfo *TRI)
 Return true if MI is likely to be usable as a memory operation by the implicit null check optimization. More...
 
static bool attemptDebugCopyProp (MachineInstr &SinkInst, MachineInstr &DbgMI, Register Reg)
 If the sunk instruction is a copy, try to forward the copy instead of leaving an 'undef' DBG_VALUE in the original location. More...
 
static void performSink (MachineInstr &MI, MachineBasicBlock &SuccToSinkTo, MachineBasicBlock::iterator InsertPos, SmallVectorImpl< MIRegs > &DbgValuesToSink)
 Sink an instruction and its associated debug instructions. More...
 
 INITIALIZE_PASS (PostRAMachineSinking, "postra-machine-sink", "PostRA Machine Sink", false, false) static bool aliasWithRegsInLiveIn(MachineBasicBlock &MBB
 
LiveInRegUnits addLiveIns (MBB)
 
return !LiveInRegUnits available (Reg)
 
static MachineBasicBlockgetSingleLiveInSuccBB (MachineBasicBlock &CurBB, const SmallPtrSetImpl< MachineBasicBlock * > &SinkableBBs, unsigned Reg, const TargetRegisterInfo *TRI)
 
static MachineBasicBlockgetSingleLiveInSuccBB (MachineBasicBlock &CurBB, const SmallPtrSetImpl< MachineBasicBlock * > &SinkableBBs, ArrayRef< unsigned > DefedRegsInCopy, const TargetRegisterInfo *TRI)
 
static void clearKillFlags (MachineInstr *MI, MachineBasicBlock &CurBB, SmallVectorImpl< unsigned > &UsedOpsInCopy, LiveRegUnits &UsedRegUnits, const TargetRegisterInfo *TRI)
 
static void updateLiveIn (MachineInstr *MI, MachineBasicBlock *SuccBB, SmallVectorImpl< unsigned > &UsedOpsInCopy, SmallVectorImpl< unsigned > &DefedRegsInCopy)
 
static bool hasRegisterDependency (MachineInstr *MI, SmallVectorImpl< unsigned > &UsedOpsInCopy, SmallVectorImpl< unsigned > &DefedRegsInCopy, LiveRegUnits &ModifiedRegUnits, LiveRegUnits &UsedRegUnits)
 
static SmallSet< MCRegister, 4 > getRegUnits (MCRegister Reg, const TargetRegisterInfo *TRI)
 

Variables

static cl::opt< bool > SplitEdges ("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden)
 
static cl::opt< bool > UseBlockFreqInfo ("machine-sink-bfi", cl::desc("Use block frequency info to find successors to sink"), cl::init(true), cl::Hidden)
 
static cl::opt< unsigned > SplitEdgeProbabilityThreshold ("machine-sink-split-probability-threshold", cl::desc("Percentage threshold for splitting single-instruction critical edge. " "If the branch threshold is higher than this threshold, we allow " "speculative execution of up to 1 instruction to avoid branching to " "splitted critical edge"), cl::init(40), cl::Hidden)
 
static cl::opt< unsigned > SinkLoadInstsPerBlockThreshold ("machine-sink-load-instrs-threshold", cl::desc("Do not try to find alias store for a load if there is a in-path " "block whose instruction number is higher than this threshold."), cl::init(2000), cl::Hidden)
 
static cl::opt< unsigned > SinkLoadBlocksThreshold ("machine-sink-load-blocks-threshold", cl::desc("Do not try to find alias store for a load if the block number in " "the straight line is higher than this threshold."), cl::init(20), cl::Hidden)
 
static cl::opt< bool > SinkInstsIntoLoop ("sink-insts-to-avoid-spills", cl::desc("Sink instructions into loops to avoid " "register spills"), cl::init(false), cl::Hidden)
 
static cl::opt< unsigned > SinkIntoLoopLimit ("machine-sink-loop-limit", cl::desc("The maximum number of instructions considered for loop sinking."), cl::init(50), cl::Hidden)
 
 DEBUG_TYPE
 
Machine code sinking
 
Machine code false
 
unsigned Reg
 
unsigned const TargetRegisterInfoTRI
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "machine-sink"

Definition at line 62 of file MachineSink.cpp.

Typedef Documentation

◆ MIRegs

using MIRegs = std::pair<MachineInstr *, SmallVector<unsigned, 2> >

Definition at line 1083 of file MachineSink.cpp.

Function Documentation

◆ addLiveIns()

LiveInRegUnits addLiveIns ( MBB  )

◆ attemptDebugCopyProp()

static bool attemptDebugCopyProp ( MachineInstr SinkInst,
MachineInstr DbgMI,
Register  Reg 
)
static

If the sunk instruction is a copy, try to forward the copy instead of leaving an 'undef' DBG_VALUE in the original location.

Don't do this if there's any subregister weirdness involved. Returns true if copy propagation occurred.

Definition at line 1033 of file MachineSink.cpp.

References llvm::MachineInstr::getDebugOperandsForReg(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getMF(), llvm::MachineRegisterInfo::getNumVirtRegs(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineOperand::getSubReg(), llvm::MachineFunction::getSubtarget(), llvm::Register::isVirtual(), MRI, Reg, and TII.

Referenced by performSink().

◆ available()

return !LiveInRegUnits available ( Reg  )

◆ clearKillFlags()

static void clearKillFlags ( MachineInstr MI,
MachineBasicBlock CurBB,
SmallVectorImpl< unsigned > &  UsedOpsInCopy,
LiveRegUnits UsedRegUnits,
const TargetRegisterInfo TRI 
)
static

◆ getRegUnits()

static SmallSet<MCRegister, 4> getRegUnits ( MCRegister  Reg,
const TargetRegisterInfo TRI 
)
static

◆ getSingleLiveInSuccBB() [1/2]

static MachineBasicBlock* getSingleLiveInSuccBB ( MachineBasicBlock CurBB,
const SmallPtrSetImpl< MachineBasicBlock * > &  SinkableBBs,
ArrayRef< unsigned >  DefedRegsInCopy,
const TargetRegisterInfo TRI 
)
static

Definition at line 1601 of file MachineSink.cpp.

References BB, getSingleLiveInSuccBB(), and TRI.

◆ getSingleLiveInSuccBB() [2/2]

static MachineBasicBlock* getSingleLiveInSuccBB ( MachineBasicBlock CurBB,
const SmallPtrSetImpl< MachineBasicBlock * > &  SinkableBBs,
unsigned  Reg,
const TargetRegisterInfo TRI 
)
static

Definition at line 1574 of file MachineSink.cpp.

References BB, Reg, SI, llvm::MachineBasicBlock::successors(), and TRI.

Referenced by getSingleLiveInSuccBB().

◆ hasRegisterDependency()

static bool hasRegisterDependency ( MachineInstr MI,
SmallVectorImpl< unsigned > &  UsedOpsInCopy,
SmallVectorImpl< unsigned > &  DefedRegsInCopy,
LiveRegUnits ModifiedRegUnits,
LiveRegUnits UsedRegUnits 
)
static

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( PostRAMachineSinking  ,
"postra-machine-sink ,
"PostRA Machine Sink"  ,
false  ,
false   
) &

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( MachineSinking  ,
DEBUG_TYPE  ,
"Machine code sinking ,
false  ,
false   
)

◆ mayLoadFromGOTOrConstantPool()

static bool mayLoadFromGOTOrConstantPool ( MachineInstr MI)
static

Return true if this machine instruction loads from global offset table or constant pool.

Definition at line 363 of file MachineSink.cpp.

References assert(), and MI.

◆ performSink()

static void performSink ( MachineInstr MI,
MachineBasicBlock SuccToSinkTo,
MachineBasicBlock::iterator  InsertPos,
SmallVectorImpl< MIRegs > &  DbgValuesToSink 
)
static

◆ SinkingPreventsImplicitNullCheck()

static bool SinkingPreventsImplicitNullCheck ( MachineInstr MI,
const TargetInstrInfo TII,
const TargetRegisterInfo TRI 
)
static

Return true if MI is likely to be usable as a memory operation by the implicit null check optimization.

This is a "best effort" heuristic, and should not be relied upon for correctness. This returning true does not guarantee that the implicit null check optimization is legal over MI, and this returning false does not guarantee MI cannot possibly be used to do a null check.

Definition at line 988 of file MachineSink.cpp.

References llvm::MachineOperand::getReg(), llvm::MachineOperand::isReg(), MBB, MI, Offset, llvm::MachineBasicBlock::pred_begin(), llvm::PPC::PRED_EQ, llvm::PPC::PRED_NE, llvm::MachineBasicBlock::pred_size(), TII, and TRI.

◆ STATISTIC() [1/5]

STATISTIC ( NumCoalesces  ,
"Number of copies coalesced"   
)

◆ STATISTIC() [2/5]

STATISTIC ( NumLoopSunk  ,
"Number of machine instructions sunk into a loop  
)

◆ STATISTIC() [3/5]

STATISTIC ( NumPostRACopySink  ,
"Number of copies sunk after RA  
)

◆ STATISTIC() [4/5]

STATISTIC ( NumSplit  ,
"Number of critical edges split  
)

◆ STATISTIC() [5/5]

STATISTIC ( NumSunk  ,
"Number of machine instructions sunk"   
)

◆ updateLiveIn()

static void updateLiveIn ( MachineInstr MI,
MachineBasicBlock SuccBB,
SmallVectorImpl< unsigned > &  UsedOpsInCopy,
SmallVectorImpl< unsigned > &  DefedRegsInCopy 
)
static

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 264 of file MachineSink.cpp.

◆ false

Machine code false

Definition at line 265 of file MachineSink.cpp.

◆ Reg

unsigned Reg

Definition at line 1566 of file MachineSink.cpp.

Referenced by llvm::LiveRegUnits::accumulateUsedDefed(), addAsmInstr(), llvm::addDirectMem(), llvm::ARMBaseInstrInfo::AddDReg(), addExclusiveRegPair(), addHints(), llvm::RegsForValue::AddInlineAsmOperands(), llvm::LiveIntervals::addKillFlags(), llvm::MachineRegisterInfo::addLiveIn(), llvm::addLiveIns(), llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), llvm::DwarfExpression::addMachineReg(), llvm::DwarfExpression::addMachineRegExpression(), llvm::AMDGPURegisterBankInfo::addMappingFromTable(), llvm::PPCFunctionInfo::addMustSaveCR(), llvm::LiveVariables::addNewBlock(), llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::GISelInstProfileBuilder::addNodeIDReg(), llvm::GISelInstProfileBuilder::addNodeIDRegNum(), llvm::GISelInstProfileBuilder::addNodeIDRegType(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MCInstBuilder::addReg(), llvm::LivePhysRegs::addReg(), llvm::LiveRegUnits::addReg(), addRegAndItsAliases(), llvm::M68k::addRegIndirectWithDisp(), llvm::MachineInstr::addRegisterDead(), llvm::MachineInstr::addRegisterDefined(), llvm::MachineInstr::addRegisterKilled(), llvm::LiveRegUnits::addRegMasked(), llvm::addRegOffset(), addRegUnits(), addSaveRestoreRegs(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::LiveIntervals::addSegmentToEndOfBlock(), llvm::M68kInstrInfo::AddSExt(), AddSubReg(), addToFwdRegWorklist(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::M68kInstrInfo::AddZExt(), llvm::GCNSubtarget::adjustSchedDependency(), llvm::X86RegisterInfo::adjustStackMapLiveOutMask(), llvm::MipsSEInstrInfo::adjustStackPtr(), llvm::RegPressureTracker::advance(), llvm::GCNDownwardRPTracker::advanceToNext(), allocateFixedSGPRInputImpl(), llvm::RegAllocBase::allocatePhysRegs(), llvm::CCState::AllocateReg(), allocateSGPR32InputImpl(), llvm::SITargetLowering::allocateSpecialEntryInputVGPRs(), llvm::SITargetLowering::allocateSpecialInputVGPRsFixed(), llvm::SITargetLowering::allocateSystemSGPRs(), allocateVGPR32Input(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), AnalyzeArguments(), llvm::analyzeArguments(), llvm::AnalyzePhysRegInBundle(), llvm::analyzeReturnValues(), llvm::AnalyzeVirtRegInBundle(), AnyAliasLiveIn(), llvm::LiveRegSet::appendTo(), llvm::CombinerHelper::applyCombineExtOfExt(), llvm::CombinerHelper::applyCombineI2PToP2I(), llvm::CombinerHelper::applyCombineP2IToI2P(), llvm::CombinerHelper::applyExtractVecEltBuildVec(), llvm::CombinerHelper::applyNotCmp(), llvm::SystemZELFFrameLowering::assignCalleeSavedSpillSlots(), llvm::AArch64FrameLowering::assignCalleeSavedSpillSlots(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), assignCalleeSavedSpillSlots(), attemptDebugCopyProp(), llvm::LivePhysRegs::available(), llvm::LiveRegUnits::available(), llvm::baseRegNeedsLoadStoreMask(), llvm::MIPatternMatch::bind_helper< MachineInstr * >::bind(), llvm::MIPatternMatch::bind_helper< LLT >::bind(), llvm::MIPatternMatch::bind_helper< const ConstantFP * >::bind(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), buildCopyFromRegs(), buildDefCFAReg(), llvm::MachineIRBuilder::buildDirectDbgValue(), llvm::MachineIRBuilder::buildIndirectDbgValue(), llvm::BuildMI(), buildMUBUFOffsetLoadStore(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::RegPressureTracker::bumpDeadDefs(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), llvm::LiveIntervalCalc::calculate(), llvm::calculateDbgEntityHistory(), llvm::VirtRegAuxInfo::calculateSpillWeightsAndHints(), canBeFeederToNewValueJump(), canClobberPhysRegDefs(), canFoldIntoSelect(), canUseSiblingCall(), CC_AArch64_Custom_Block(), CC_AIX(), CC_ARM_AAPCS_Custom_Aggregate(), CC_MipsO32(), CC_PPC32_SPE_CustomSplitFP64(), CC_PPC32_SPE_RetF64(), CC_RISCV(), CC_RISCV_FastCC(), CC_RISCV_GHC(), CC_RISCVAssign2XLen(), CC_Sparc64_Full(), CC_Sparc64_Half(), CC_Sparc_Assign_Ret_Split_64(), CC_Sparc_Assign_Split_64(), llvm::CC_SystemZ_I128Indirect(), CC_X86_32_MCUInReg(), CC_X86_32_RegCall_Assign2Regs(), CC_X86_32_VectorCall(), CC_X86_64_VectorCall(), CC_X86_VectorCallAssignRegister(), llvm::MachineInstr::changeDebugValuesDefReg(), llvm::MachineOperand::ChangeToRegister(), llvm::GISelChangeObserver::changingAllUsesOfReg(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), CheckForLiveRegDef(), CheckForPhysRegDependency(), checkFrameBase(), checkLowRegisterList(), llvm::MachineRegisterInfo::clearKillFlags(), llvm::MachineInstr::clearRegisterDeads(), llvm::MachineInstr::clearRegisterKills(), llvm::X86_MC::X86MCInstrAnalysis::clearsSuperRegisters(), llvm::MachineRegisterInfo::clearVirtRegs(), llvm::MachineRegisterInfo::cloneVirtualRegister(), CMSEPopCalleeSaves(), CMSEPushCalleeSaves(), collectVirtualRegUses(), llvm::ScheduleDAGMILive::collectVRegUses(), llvm::AMDGPURegisterBankInfo::collectWaterfallOperands(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveOuts(), llvm::ScheduleDAGSDNodes::computeOperandLatency(), llvm::TargetSchedModel::computeOutputLatency(), llvm::MachineBasicBlock::computeRegisterLiveness(), llvm::RegisterBankInfo::constrainGenericRegister(), llvm::constrainOperandRegClass(), llvm::AMDGPURegisterBankInfo::constrainOpWithReadfirstlane(), llvm::MachineRegisterInfo::constrainRegAttrs(), constrainRegClass(), llvm::MachineRegisterInfo::constrainRegClass(), constrainRegToBank(), llvm::constrainRegToClass(), llvm::constrainSelectedInstRegOperands(), llvm::MCRegisterClass::contains(), llvm::TargetRegisterClass::contains(), llvm::LivePhysRegs::contains(), llvm::LiveRegSet::contains(), ContainsReg(), llvm::MIRPrinter::convert(), convertGR16ToGR8(), llvm::MIRPrinter::convertStackObjects(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), copyHint(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), createAArch64MCAsmInfo(), llvm::LiveIntervals::createAndComputeVirtRegInterval(), createARMMCAsmInfo(), createCSKYMCAsmInfo(), llvm::LiveIntervalCalc::createDeadDefs(), llvm::LiveIntervals::createEmptyInterval(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), llvm::MachineRegisterInfo::createIncompleteVirtualRegister(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), llvm::AMDGPUTargetLowering::CreateLiveInRegisterRaw(), llvm::createMemLibcall(), createPPCMCAsmInfo(), llvm::mca::MCAOperand::createReg(), llvm::MCOperand::createReg(), llvm::MachineOperand::CreateReg(), createSparcMCAsmInfo(), createSparcV9MCAsmInfo(), createVEMCAsmInfo(), llvm::MachineRegisterInfo::createVirtualRegister(), CustomAssignInRegList(), llvm::DbgCallSiteParam::DbgCallSiteParam(), llvm::CCState::DeallocateReg(), DecodeACC64DSPRegisterClass(), DecodeAFGR64RegisterClass(), DecodeCCRRegisterClass(), DecodeCOP0RegisterClass(), DecodeCOP2RegisterClass(), DecodeCPRegsRegisterClass(), DecodeDFPRegsRegisterClass(), DecodeF128RegisterClass(), DecodeF32RegisterClass(), DecodeFCCRegisterClass(), DecodeFGR32RegisterClass(), DecodeFGR64RegisterClass(), DecodeFGRCCRegisterClass(), DecodeFMem(), DecodeFMem2(), DecodeFMem3(), DecodeFMemCop2MMR6(), DecodeFMemCop2R6(), DecodeFMemMMR2(), DecodeFPR16RegisterClass(), DecodeFPR32CRegisterClass(), DecodeFPR32RegisterClass(), DecodeFPR64CRegisterClass(), DecodeFPR64RegisterClass(), DecodeFPRegsRegisterClass(), DecodeGPR32RegisterClass(), DecodeGPR64RegisterClass(), DecodeGPRCRegisterClass(), DecodeGPRMM16MovePRegisterClass(), DecodeGPRMM16RegisterClass(), DecodeGPRMM16ZeroRegisterClass(), DecodeGPRRegisterClass(), DecodeGPRSeqPairsClassRegisterClass(), DecodeGR16RegisterClass(), DecodeGR8RegisterClass(), DecodeGRRegsRegisterClass(), DecodeHI32DSPRegisterClass(), DecodeI32RegisterClass(), DecodeI64RegisterClass(), DecodeI64RegsRegisterClass(), DecodeIntRegsRegisterClass(), DecodeLO32DSPRegisterClass(), DecodeLoadByte15(), DecodeMem(), DecodeMemEVA(), DecodeMemMMGPImm7Lsl2(), DecodeMemMMImm12(), DecodeMemMMImm16(), DecodeMemMMImm4(), DecodeMemMMImm9(), DecodeMemMMSPImm5Lsl2(), DecodeMemOperand(), DecodeMISCRegisterClass(), DecodeMSA128BRegisterClass(), DecodeMSA128DRegisterClass(), DecodeMSA128HRegisterClass(), DecodeMSA128Mem(), DecodeMSA128WRegisterClass(), DecodeMSACtrlRegisterClass(), DecodeQFPRegsRegisterClass(), DecodeRRegsRegisterClass(), DecodeV64RegisterClass(), DecodeVM512RegisterClass(), decodeVMaskReg(), DecodeVMRegisterClass(), DecodeVRM2RegisterClass(), DecodeVRM4RegisterClass(), DecodeVRM8RegisterClass(), DecodeVRRegisterClass(), decreaseSetPressure(), llvm::ShapeT::deduceImm(), llvm::MachineRegisterInfo::def_bundles(), llvm::MachineRegisterInfo::def_instructions(), llvm::MachineRegisterInfo::def_operands(), definesFullReg(), definesOrUsesFPReg(), llvm::MachineInstr::definesRegister(), llvm::ARMBaseInstrInfo::describeLoadedValue(), llvm::MipsInstrInfo::describeLoadedValue(), llvm::AArch64InstrInfo::describeLoadedValue(), llvm::X86InstrInfo::describeLoadedValue(), llvm::TargetInstrInfo::describeLoadedValue(), llvm::RegisterOperands::detectDeadDefs(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), determineFPRegsToClear(), determineLastCalleeSave(), llvm::MachineRegisterInfo::disableCalleeSavedRegister(), llvm::TargetRegisterInfo::dumpReg(), llvm::MachineRegisterInfo::dumpUses(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::LanaiRegisterInfo::eliminateFrameIndex(), llvm::ARCRegisterInfo::eliminateFrameIndex(), emitAligningInstructions(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveFReg(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveFRegP(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveFRegPX(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveFRegX(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveLRPair(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveReg(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveRegP(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveRegPX(), llvm::AArch64TargetWinCOFFStreamer::emitARM64WinCFISaveRegX(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), emitDebugValueComment(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::SIFrameLowering::emitEpilogue(), llvm::SITargetLowering::emitGWSMemViolTestLoop(), emitIncrement(), llvm::MipsELFStreamer::emitInstruction(), llvm::X86AsmPrinter::emitInstruction(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), emitRegUpdate(), llvm::UnwindOpcodeAssembler::EmitSetSP(), llvm::VETargetLowering::emitSjLjDispatchBlock(), llvm::X86FrameLowering::emitSPUpdate(), llvm::M68kFrameLowering::emitSPUpdate(), llvm::codeview::encodeFramePtrReg(), encodeSEHRegNum(), llvm::RegAllocBase::enqueue(), llvm::MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval(), eraseGPOpnd(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::HexagonEvaluator::evaluate(), llvm::execMayBeModifiedBeforeAnyUse(), llvm::ModuloScheduleExpander::expand(), Expand2AddrKreg(), Expand2AddrUndef(), expandLoadStackGuard(), llvm::ARMBaseInstrInfo::expandLoadStackGuardBase(), expandMOV32r1(), llvm::M68kInstrInfo::ExpandMOVEM(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::PPCInstrInfo::expandPostRAPseudo(), expandSGPRCopy(), llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), extractParts(), f64AssignAAPCS(), f64AssignAPCS(), f64RetAssign(), llvm::PeelingModuloScheduleExpander::filterInstructions(), llvm::finalizeBundle(), llvm::MachineFunction::finalizeDebugInstrRefs(), llvm::SITargetLowering::finalizeLowering(), llvm::findCMPToFoldIntoCBZ(), llvm::X86RegisterInfo::findDeadCallerSavedReg(), findDeadCallerSavedReg(), findFirstFreeSGPR(), findHoistingInsertPosAndDeps(), findIncDecAfter(), findIncDecBefore(), findNextInsertLocation(), findOnlyInterestingUse(), llvm::SIRegisterInfo::findReachingDef(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::MachineInstr::findRegisterUseOperand(), llvm::MachineInstr::findRegisterUseOperandIdx(), findScratchNonCalleeSaveRegister(), findSingleRegDef(), findSingleRegUse(), findStartOfTree(), findSurvivorBackwards(), findTemporariesForLR(), llvm::RegScavenger::FindUnusedReg(), llvm::SIRegisterInfo::findUnusedRegister(), findUseBetween(), llvm::SplitEditor::finish(), llvm::ScheduleDAGInstrs::fixupKills(), flagsNeedToBePreservedBeforeTheTerminators(), llvm::PPCInstrInfo::foldFrameOffset(), llvm::VEInstrInfo::FoldImmediate(), llvm::SystemZInstrInfo::FoldImmediate(), llvm::ARMBaseInstrInfo::FoldImmediate(), llvm::SIInstrInfo::FoldImmediate(), llvm::PPCInstrInfo::FoldImmediate(), foldImmediates(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), forceReg(), llvm::RegScavenger::forward(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), llvm::SIRegisterInfo::get32BitRegister(), llvm::AMDGPURegisterBankInfo::getAGPROpMapping(), llvm::rdf::PhysicalRegisterInfo::getAliasSet(), getARClassRegisterMask(), llvm::AMDGPU::getBaseWithConstantOffset(), getBaseWithConstantOffset(), llvm::getBRegFromDReg(), getBundledDefMI(), getBundledUseMI(), getConstantZext32Val(), llvm::X86InstrInfo::getConstValDefinedInReg(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getCopyToReg(), llvm::getCRFromCRBit(), getDataDeps(), llvm::MachineInstr::getDebugOperandsForReg(), llvm::getDefIgnoringCopies(), llvm::PPCInstrInfo::getDefMIPostRA(), llvm::getDefSrcRegIgnoringCopies(), llvm::getDRegFromBReg(), GetDSubRegs(), llvm::HexagonMCInstrInfo::getDuplexRegisterNumbering(), getDwarfRegNum(), llvm::MipsFunctionInfo::getEhDataRegFI(), llvm::PeelingModuloScheduleExpander::getEquivalentRegisterIn(), llvm::getFConstantVRegValWithLookThrough(), llvm::SystemZMC::getFirstReg(), getFoldableImm(), getFPReg(), getFrameHelperName(), llvm::AggressiveAntiDepState::GetGroupRegs(), getHexagonRegisterPair(), llvm::R600RegisterInfo::getHWRegIndex(), llvm::SIRegisterInfo::getHWRegIndex(), llvm::R600InstrInfo::getIndirectIndexBegin(), getIndirectThunkSymbol(), llvm::AMDGPURegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), getInstrVecReg(), llvm::LiveIntervals::getInterval(), llvm::MipsFunctionInfo::getISRRegFI(), llvm::getLanaiRegisterNumbering(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), llvm::getLiveLaneMask(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), getLiveRange(), llvm::getLiveRegMap(), llvm::getLiveRegs(), getLoadStoreRegOpcode(), getLocalId(), LiveDebugValues::MLocTracker::getLocID(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), llvm::PPCMCCodeEmitter::getMachineOpValue(), llvm::MipsMCCodeEmitter::getMachineOpValue(), getMappedReg(), llvm::AMDGPURegisterBankInfo::getMappingType(), llvm::M68kRegisterInfo::getMatchingMegaReg(), llvm::MCRegisterInfo::getMatchingSuperReg(), llvm::TargetRegisterInfo::getMatchingSuperReg(), getMax32BitSubRegister(), getMaxCalleeSavedReg(), llvm::MachineRegisterInfo::getMaxLaneMaskForVReg(), getMClassRegisterMask(), llvm::AMDGPU::getMCReg(), llvm::RegisterBankInfo::getMinimalPhysRegClass(), getNextRegister(), getNextVectorRegister(), getNumAllocatableRegsForConstraints(), llvm::MachineRegisterInfo::getOneDef(), llvm::getOpcodeDef(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::PPCInstrInfo::getOperandLatency(), llvm::SIInstrInfo::getOpRegClass(), getPairedGPR(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), llvm::X86InstrInfo::getPartialRegUpdateClearance(), llvm::SIProgramInfo::getPGMRSrc1(), getPHIDeps(), getPhysicalRegisterVT(), llvm::HexagonEvaluator::getPhysRegBitWidth(), llvm::BitTracker::MachineEvaluator::getPhysRegBitWidth(), llvm::SIRegisterInfo::getPhysRegClass(), getPrologueDeath(), llvm::rdf::PhysicalRegisterInfo::getRefForUnit(), llvm::RegisterSDNode::getReg(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::ARMBaseRegisterInfo::getRegAllocationHints(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::SystemZMC::getRegAsGR32(), llvm::SystemZMC::getRegAsGR64(), llvm::SystemZMC::getRegAsGRH32(), llvm::SIRegisterInfo::getRegAsmName(), llvm::TargetRegisterInfo::getRegAsmName(), llvm::SystemZMC::getRegAsVR128(), llvm::CombinerHelper::getRegBank(), llvm::RegisterBankInfo::getRegBank(), llvm::RegisterBankInfo::getRegBankFromConstraints(), llvm::AMDGPURegisterBankInfo::getRegBankID(), llvm::MachineRegisterInfo::getRegBankOrNull(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineInstr::getRegClassConstraintEffectForVReg(), llvm::SIRegisterInfo::getRegClassForReg(), getRegClassFromGRPhysReg(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::MachineRegisterInfo::getRegClassOrRegBank(), llvm::FastISel::getRegForValue(), llvm::AMDGPUPALMetadata::getRegister(), llvm::VETargetLowering::getRegisterByName(), llvm::SparcTargetLowering::getRegisterByName(), llvm::LanaiTargetLowering::getRegisterByName(), llvm::PerTargetMIParsingState::getRegisterByName(), llvm::AVRTargetLowering::getRegisterByName(), llvm::HexagonTargetLowering::getRegisterByName(), llvm::MipsTargetLowering::getRegisterByName(), llvm::SITargetLowering::getRegisterByName(), llvm::RISCVTargetLowering::getRegisterByName(), llvm::SystemZTargetLowering::getRegisterByName(), llvm::PPCTargetLowering::getRegisterByName(), llvm::X86TargetLowering::getRegisterByName(), llvm::MipsMCCodeEmitter::getRegisterListOpValue(), getRegisterName(), llvm::M68kRegisterInfo::getRegisterOrder(), getRegisterSize(), getRegName(), llvm::PPCInstrInfo::getRegNumForOperand(), llvm::RegScavenger::getRegsAvailable(), llvm::TargetRegisterInfo::getRegSizeInBits(), llvm::SystemZELFFrameLowering::getRegSpillOffset(), getRegTy(), getRegularRegInfo(), getRegUnits(), llvm::RISCVRegisterInfo::getReservedRegs(), llvm::WebAssemblyRegisterInfo::getReservedRegs(), llvm::HexagonRegisterInfo::getReservedRegs(), llvm::MipsRegisterInfo::getReservedRegs(), llvm::SIRegisterInfo::getReservedRegs(), llvm::M68kRegisterInfo::getReservedRegs(), llvm::PPCRegisterInfo::getReservedRegs(), llvm::ARMBaseRegisterInfo::getReservedRegs(), llvm::X86::getSegmentOverridePrefixForReg(), getSetupCost(), llvm::AMDGPURegisterBankInfo::getSGPROpMapping(), getSingleDef(), getSingleLiveInSuccBB(), llvm::RegisterBankInfo::getSizeInBits(), llvm::M68kRegisterInfo::getSpillRegisterOrder(), llvm::getSrcRegIgnoringCopies(), getSrcRegIgnoringCopies(), llvm::R600InstrInfo::getSrcs(), llvm::MCRegisterInfo::getSubReg(), llvm::TargetRegisterInfo::getSubReg(), getSubRegForIndex(), llvm::MCRegisterInfo::getSubRegIndex(), getTestBitReg(), llvm::MachineRegisterInfo::getType(), llvm::MachineRegisterInfo::getUniqueVRegDef(), getv64i1Argument(), llvm::FunctionLoweringInfo::getValueFromVirtualReg(), llvm::LiveVariables::getVarInfo(), getVectorShiftImm(), getVectorSHLImm(), llvm::getVectorSplat(), llvm::AMDGPURegisterBankInfo::getVGPROpMapping(), llvm::NVPTXAsmPrinter::getVirtualRegisterName(), getVRegDef(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineRegisterInfo::getVRegName(), llvm::WebAssemblyFunctionInfo::getWARegStackId(), llvm::getWRegFromXReg(), llvm::getX86SubSuperRegister(), llvm::getX86SubSuperRegisterOrZero(), llvm::getXRegFromWReg(), llvm::AMDGPURegisterBankInfo::handleD16VData(), llvm::AMDGPULegalizerInfo::handleD16VData(), llvm::SelectionDAGBuilder::handleDebugValue(), llvm::LiveIntervals::handleMoveIntoNewBundle(), handleNormalInst(), handleRegMaskClobber(), llvm::LiveVariables::HandleVirtRegDef(), llvm::LiveVariables::HandleVirtRegUse(), llvm::BitTracker::has(), hasAnyNonFlatUseOfReg(), hasArgumentDef(), llvm::MachineInstr::hasDebugOperandForReg(), llvm::MCInstrDesc::hasDefOfPhysReg(), llvm::hash_value(), llvm::MCInstrDesc::hasImplicitDefOfPhysReg(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), llvm::LiveIntervals::hasInterval(), hasLiveThroughUse(), hasOneUse(), hasOnlyLiveInOpers(), hasOnlyLiveOutUses(), hasRegisterDependency(), llvm::MachineInstr::hasRegisterImplicitUseOperand(), llvm::TargetRegisterInfo::hasRegUnit(), llvm::RISCVRegisterInfo::hasReservedSpillSlot(), llvm::PPCRegisterInfo::hasReservedSpillSlot(), hasTiedUseOf(), hasUseAfterLoop(), llvm::HexagonAsmPrinter::HexagonProcessInstruction(), hoistAndMergeSGPRInits(), llvm::GCNRegPressure::inc(), increaseSetPressure(), INITIALIZE_PASS(), llvm::MIRParserImpl::initializeCallSiteInfo(), llvm::ARM_MC::initLLVMToCVRegMapping(), llvm::AArch64_MC::initLLVMToCVRegMapping(), llvm::X86_MC::initLLVMToSEHAndCVRegMapping(), llvm::WebAssemblyFunctionInfo::initWARegs(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::VEInstrInfo::insertBranch(), insertCSRRestores(), insertCSRSaves(), llvm::SIInstrInfo::insertEQ(), InsertFPConstInst(), InsertFPImmInst(), InsertLDR_STR(), llvm::SIInstrInfo::insertNE(), insertNoDuplicates(), llvm::AArch64InstrInfo::insertOutlinedCall(), llvm::ARMBaseInstrInfo::insertOutlinedCall(), insertPHI(), InsertSEH(), InsertSPConstInst(), InsertSPImmInst(), llvm::MachineRegisterInfo::insertVRegByName(), instAccessReg(), instModifiesReg(), instReadsReg(), llvm::FunctionLoweringInfo::InvalidatePHILiveOutRegInfo(), isACalleeSavedRegister(), llvm::MipsInstrInfo::isAddImmediate(), llvm::AArch64InstrInfo::isAddImmediate(), llvm::ARMBaseInstrInfo::isAddImmediate(), llvm::SIRegisterInfo::isAGPR(), IsAGPROperand(), IsAliasOfSX(), llvm::CCState::isAllocated(), llvm::isARMArea1Register(), llvm::isARMArea2Register(), llvm::isARMArea3Register(), llvm::isARMLowRegister(), LiveDebugValues::InstrRefBasedLDV::isCalleeSaved(), isCalleeSavedCR(), llvm::SIMachineFunctionInfo::isCalleeSavedReg(), llvm::isCalleeSavedRegister(), isCallerPreservedOrConstPhysReg(), llvm::SITargetLowering::isCanonicalized(), llvm::WebAssembly::isChild(), llvm::MachineInstr::isConstantValuePHI(), isDblRegForSubInst(), llvm::HexagonMCInstrInfo::isDblRegForSubInst(), isDefBetween(), isDefLiveOut(), isEAXLiveIn(), TransferTracker::isEntryValueValue(), isEvenReg(), llvm::rdf::TargetOperandInfo::isFixedReg(), isFPR64(), isFullCopyOf(), isGPRShadowAligned(), llvm::SystemZ::isHighReg(), llvm::AllocationOrder::isHint(), isHReg(), isImplicitlyDef(), isIncrementOrDecrement(), isInefficientLEAReg(), isInlineValue(), llvm::HexagonMCInstrInfo::isIntReg(), isIntRegForSubInst(), llvm::HexagonMCInstrInfo::isIntRegForSubInst(), isInvariantStore(), isKilled(), llvm::isKnownToBeAPowerOfTwo(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::AggressiveAntiDepState::IsLive(), llvm::LiveVariables::VarInfo::isLiveIn(), llvm::LiveVariables::isLiveIn(), llvm::MachineBasicBlock::isLiveIn(), llvm::MachineRegisterInfo::isLiveIn(), isLiveOut(), llvm::LiveVariables::isLiveOut(), llvm::LanaiInstrInfo::isLoadFromStackSlotPostFE(), llvm::X86InstrInfo::isLoadFromStackSlotPostFE(), llvm::MachineLoop::isLoopInvariant(), isMatchingOrAlias(), llvm::AArch64InstrInfo::isMBBSafeToOutlineFrom(), IsMovepDestinationReg(), IsMovepSrcRegister(), isNonZeroModBitWidthOrUndef(), llvm::LiveVariables::isPHIJoin(), llvm::R600RegisterInfo::isPhysRegLiveAcrossClauses(), isPlainlyKilled(), llvm::R600InstrInfo::isPredicated(), llvm::HexagonMCInstrInfo::isPredReg(), isRegLiveIn(), isRegOtherThanSPAndFP(), llvm::RegScavenger::isRegUsed(), isRematerializable(), llvm::AArch64RegisterInfo::isReservedReg(), llvm::MachineRegisterInfo::isReservedRegUnit(), IsSafeAndProfitableToMove(), isSafeToMove(), llvm::AMDGPURegisterBankInfo::isSALUMapping(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::AMDGPU::isSGPR(), llvm::SIRegisterInfo::isSGPRReg(), llvm::CCState::IsShadowAllocatedReg(), isSSA(), llvm::X86InstrInfo::isStoreToStackSlotPostFE(), isTilePhysReg(), llvm::isTriviallyDead(), isTwoAddrUse(), isVCmpResult(), isVecReg(), llvm::SIRegisterInfo::isVectorRegister(), llvm::PPCInstrInfo::isVFRegister(), llvm::SIRegisterInfo::isVGPR(), AMDGPURegBankCombinerHelper::isVgprRegBank(), isVRegCompatibleReg(), llvm::PPCInstrInfo::isVRRegister(), isVShiftRImm(), isX87Reg(), isYmmOrZmmReg(), isZero(), llvm::MachineInstr::killsRegister(), llvm::AggressiveAntiDepState::LeaveGroup(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SIInstrInfo::legalizeOpWithMove(), listContainsReg(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::XCoreInstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadImmediate(), llvm::ARCInstrInfo::loadImmediate(), llvm::SystemZInstrInfo::loadImmediate(), TransferTracker::loadInlocs(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::BitTracker::lookup(), llvm::PPCRegisterInfo::lowerACCRestore(), llvm::PPCRegisterInfo::lowerACCSpilling(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), llvm::VETargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCallResults(), LowerCMP_SWAP(), llvm::PPCRegisterInfo::lowerCRBitRestore(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRRestore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::InlineAsmLowering::lowerInlineAsm(), llvm::HexagonTargetLowering::LowerINLINEASM(), llvm::PPCRegisterInfo::lowerQuadwordRestore(), llvm::PPCRegisterInfo::lowerQuadwordSpilling(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::LanaiTargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), lowerRISCVVMachineInstrToMCInst(), llvm::SelectionDAGBuilder::LowerStatepoint(), llvm::rdf::DataFlowGraph::makeRegRef(), mapArgRegToOffsetAIX(), llvm::yaml::MappingTraits< VirtualRegisterDefinition >::mapping(), mapRegToGPRIndex(), llvm::TargetRegisterInfo::markSuperRegs(), llvm::MachineRegisterInfo::markUsesInDebugValueAsUndef(), llvm::HexagonEvaluator::mask(), llvm::BitTracker::MachineEvaluator::mask(), llvm::MIPatternMatch::OneUse_match< SubPatternT >::match(), llvm::MIPatternMatch::OneNonDBGUse_match< SubPatternT >::match(), llvm::MIPatternMatch::ConstantMatch::match(), llvm::MIPatternMatch::GCstAndRegMatch::match(), llvm::MIPatternMatch::GFCstAndRegMatch::match(), llvm::MIPatternMatch::GFCstOrSplatGFCstMatch::match(), llvm::MIPatternMatch::SpecificConstantMatch::match(), llvm::MIPatternMatch::CheckType::match(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineConcatVectors(), llvm::CombinerHelper::matchCombineFNegOfFNeg(), llvm::CombinerHelper::matchCombineI2PToP2I(), llvm::CombinerHelper::matchCombineP2IToI2P(), llvm::CombinerHelper::matchCombineZextTrunc(), matchDupFromBuildVector(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), matchLoadAndBytePosition(), llvm::CombinerHelper::matchNotCmp(), AMDGPUPostLegalizerCombinerHelper::matchRemoveFcanonicalize(), llvm::matchUnaryPredicate(), matchZeroExtendFromS32(), MaySpeculate(), llvm::MCRegisterInfo::mc_difflist_iterator< mc_subreg_iterator >::mc_difflist_iterator(), llvm::MCRegUnitIterator::MCRegUnitIterator(), llvm::MCRegUnitMaskIterator::MCRegUnitMaskIterator(), llvm::MCSubRegIndexIterator::MCSubRegIndexIterator(), llvm::MCSubRegIterator::MCSubRegIterator(), llvm::MCSuperRegIterator::MCSuperRegIterator(), llvm::MachineInstr::modifiesRegister(), moveAndTeeForMultiUse(), moveForSingleUse(), MoveVPNOTBeforeFirstUser(), llvm::LegalizerHelper::narrowScalarInsert(), needToReserveScavengingSpillSlots(), nextReg(), llvm::CriticalAntiDepBreaker::Observe(), llvm::AggressiveAntiDepBreaker::Observe(), oneUseDominatesOtherUses(), llvm::PPCInstrInfo::onlyFoldImmediate(), llvm::VirtReg2IndexFunctor::operator()(), llvm::X86InstrInfo::optimizeLoadInstr(), llvm::SMSchedule::orderDependence(), llvm::TargetLowering::parametersInCSRMatch(), llvm::MIRParserImpl::parseCalleeSavedRegister(), llvm::GCNTargetMachine::parseMachineFunctionInfo(), llvm::parseNamedRegisterReference(), parseOperands(), parsePhysicalReg(), llvm::MIRParserImpl::parseRegisterInfo(), llvm::parseRegisterReference(), peekThroughBitcast(), llvm::PeelingModuloScheduleExpander::peelPrologAndEpilogs(), performCopyPropagation(), performSink(), llvm::rdf::PhysicalRegisterInfo::PhysicalRegisterInfo(), preservesValueOf(), llvm::VirtRegMap::print(), llvm::LiveIntervals::print(), llvm::MachineOperand::print(), printAsmMRegister(), llvm::AVRAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), printAsmVRegister(), printCFIRegister(), llvm::SIScheduleBlock::printDebug(), llvm::AArch64InstPrinter::printGPR64as32(), llvm::AArch64InstPrinter::printGPR64x8(), llvm::ARMInstPrinter::printGPRPairOperand(), llvm::AArch64InstPrinter::printGPRSeqPairsClassOperand(), llvm::ARMInstPrinter::printInst(), llvm::AArch64AppleInstPrinter::printInst(), llvm::GCNRPTracker::printLiveRegs(), llvm::printLivesAt(), llvm::AArch64InstPrinter::printMatrixTileList(), llvm::AArch64InstPrinter::printMRSSystemRegister(), llvm::AArch64InstPrinter::printMSRSystemRegister(), llvm::ARMInstPrinter::printMVEVectorList(), llvm::NVPTXInstPrinter::printOperand(), llvm::ARMInstPrinter::printOperand(), llvm::PPCInstPrinter::printOperand(), llvm::AArch64InstPrinter::printOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::AArch64InstPrinter::printPostIncOperand(), llvm::printReg(), llvm::printRegClassOrBank(), printRegClassOrBank(), printRegMIR(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::X86ATTInstPrinter::printSTiRegOperand(), llvm::X86IntelInstPrinter::printSTiRegOperand(), llvm::AArch64InstPrinter::printSVERegOp(), llvm::ARMInstPrinter::printT2SOOperand(), llvm::AArch64InstPrinter::printVectorList(), llvm::ARMInstPrinter::printVectorListTwo(), llvm::ARMInstPrinter::printVectorListTwoAllLanes(), llvm::ARMInstPrinter::printVectorListTwoSpaced(), llvm::ARMInstPrinter::printVectorListTwoSpacedAllLanes(), llvm::AArch64InstPrinter::printVRegOperand(), llvm::AArch64InstPrinter::printZPRasFPR(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::Win64EH::Instruction::PushNonVol(), llvm::MachineInstr::readsRegister(), llvm::MachineInstr::readsVirtualRegister(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::GCNUpwardRPTracker::recede(), llvm::RegPressureTracker::recede(), llvm::recomputeLivenessFlags(), llvm::MachineRegisterInfo::recomputeRegClass(), TransferTracker::recoverAsEntryValue(), TransferTracker::redefVar(), llvm::MachineRegisterInfo::reg_bundles(), llvm::MachineRegisterInfo::reg_instructions(), llvm::MachineRegisterInfo::reg_nodbg_bundles(), llvm::MachineRegisterInfo::reg_nodbg_instructions(), llvm::MachineRegisterInfo::reg_nodbg_operands(), llvm::MachineRegisterInfo::reg_operands(), llvm::registerDefinedBetween(), llvm::MachineInstr::registerDefIsDead(), llvm::AArch64RegisterInfo::regNeedsCFI(), regOverlapsSet(), llvm::RegsForValue::RegsForValue(), regToString(), rematerializeCheapDef(), llvm::LiveIntervals::removeAllRegUnitsForPhysReg(), llvm::LiveIntervals::removeInterval(), llvm::MachineBasicBlock::removeLiveIn(), removeMapRegEntry(), llvm::LiveIntervals::removePhysRegDefAt(), llvm::LivePhysRegs::removeReg(), llvm::LiveRegUnits::removeReg(), llvm::LiveVariables::removeVirtualRegisterDead(), llvm::LiveVariables::removeVirtualRegisterKilled(), llvm::LiveVariables::removeVirtualRegistersKilled(), llvm::RegBankSelect::RepairingPlacement::RepairingPlacement(), replaceFrameIndex(), llvm::LiveVariables::replaceKillInstruction(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), reservePrivateMemoryRegs(), llvm::R600RegisterInfo::reserveRegisterTuples(), llvm::SIMachineFunctionInfo::reserveWWMRegister(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZELFFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::M68kFrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), resultTests(), llvm::PeelingModuloScheduleExpander::rewriteUsesOf(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::ExecutionDomainFix::runOnMachineFunction(), llvm::Win64EH::Instruction::SaveNonVol(), llvm::Mips16RegisterInfo::saveScavengerRegister(), llvm::Win64EH::Instruction::SaveXMM(), scavengeFrameVirtualRegsInBlock(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::FastISel::selectBitCast(), llvm::FastISel::selectFreeze(), llvm::AVRDAGToDAGISel::SelectInlineAsmMemoryOperand(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectOperator(), llvm::FastISel::selectPatchpoint(), llvm::BitTracker::RegisterCell::self(), setAliasRegs(), llvm::WebAssemblyFunctionInfo::setBasePointerVreg(), llvm::setDirectAddressInInstr(), llvm::Win64EH::Instruction::SetFPReg(), llvm::WebAssemblyFunctionInfo::setFrameBaseVreg(), llvm::SIMachineFunctionInfo::setFrameOffsetReg(), llvm::VEMachineFunctionInfo::setGlobalBaseReg(), llvm::SparcMachineFunctionInfo::setGlobalBaseReg(), llvm::M68kMachineFunctionInfo::setGlobalBaseReg(), llvm::X86MachineFunctionInfo::setGlobalBaseReg(), llvm::LiveVariables::setPHIJoin(), llvm::MachineInstr::setPhysRegsDeadExcept(), llvm::MipsRegInfoRecord::SetPhysRegUsed(), llvm::SIMachineFunctionInfo::setPrivateSegmentWaveByteOffset(), llvm::MCOperand::setReg(), llvm::MachineOperand::setReg(), llvm::CombinerHelper::setRegBank(), llvm::MachineRegisterInfo::setRegBank(), llvm::MachineRegisterInfo::setRegClass(), llvm::MachineRegisterInfo::setRegClassOrRegBank(), llvm::AMDGPUPALMetadata::setRegister(), llvm::MachineInstr::setRegisterDefReadUndef(), setRegsToType(), llvm::RegScavenger::setRegUsed(), llvm::X86MachineFunctionInfo::setRestoreBasePointer(), llvm::SIMachineFunctionInfo::setScratchRSrcReg(), llvm::MipsFunctionInfo::setSRetReturnReg(), llvm::LanaiMachineFunctionInfo::setSRetReturnReg(), llvm::HexagonMachineFunctionInfo::setSRetReturnReg(), llvm::SparcMachineFunctionInfo::setSRetReturnReg(), llvm::MSP430MachineFunctionInfo::setSRetReturnReg(), llvm::M68kMachineFunctionInfo::setSRetReturnReg(), llvm::X86MachineFunctionInfo::setSRetReturnReg(), llvm::AArch64FunctionInfo::setSRetReturnReg(), llvm::Module::setStackProtectorGuardReg(), llvm::SIMachineFunctionInfo::setStackPtrOffsetReg(), llvm::SIMachineFunctionInfo::setTIDReg(), llvm::MIRParserImpl::setupRegisterInfo(), llvm::WebAssemblyFunctionInfo::setVarargBufferVreg(), llvm::TargetLoweringBase::shouldLocalize(), llvm::LiveIntervals::shrinkToUses(), SimplifyShortImmForm(), SimplifyShortMoveForm(), llvm::SIRegisterInfo::SIRegisterInfo(), llvm::SIScheduleBlockScheduler::SIScheduleBlockScheduler(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZELFFrameLowering::spillCalleeSavedRegisters(), llvm::X86FrameLowering::spillCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), spillVGPRtoAGPR(), llvm::AMDGPURegisterBankInfo::split64BitValueForMapping(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::AVRRegisterInfo::splitReg(), llvm::LiveIntervals::splitSeparateComponents(), llvm::CriticalAntiDepBreaker::StartBlock(), llvm::AggressiveAntiDepBreaker::StartBlock(), llvm::LivePhysRegs::stepForward(), stripValuesNotDefiningMask(), llvm::MCRegisterInfo::sub_and_superregs_inclusive(), llvm::MCRegisterInfo::subregs(), llvm::MCRegisterInfo::subregs_inclusive(), llvm::MachineOperand::substPhysReg(), llvm::MachineOperand::substVirtReg(), llvm::MCRegisterInfo::superregs(), llvm::MCRegisterInfo::superregs_inclusive(), swapAntiDependences(), swapRegAndNonRegOperand(), llvm::SystemZELFFrameLowering::SystemZELFFrameLowering(), llvm::SystemZXPLINKFrameLowering::SystemZXPLINKFrameLowering(), toCallerWindow(), toggleKills(), llvm::AMDGPUPALMetadata::toString(), TrackDefUses(), trySwapICmpOperands(), llvm::X86InstrInfo::unfoldMemoryOperand(), unstackifyVRegsUsedInSplitBB(), llvm::LiveIntervals::HMEditor::updateAllRanges(), llvm::updateDbgValueForSpill(), llvm::HexagonPacketizerList::updateOffset(), UpdateOperandRegClass(), updateOperandRegConstraints(), updatePhysDepsDownwards(), updatePhysDepsUpwards(), UpdatePredRedefs(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::WebAssemblyDebugValueManager::updateReg(), llvm::ARMBaseRegisterInfo::updateRegAllocHint(), llvm::FastISel::updateValueMap(), llvm::MachineRegisterInfo::use_bundles(), llvm::MachineRegisterInfo::use_instructions(), llvm::MachineRegisterInfo::use_nodbg_bundles(), llvm::MachineRegisterInfo::use_nodbg_instructions(), llvm::MachineRegisterInfo::use_nodbg_operands(), llvm::MachineRegisterInfo::use_operands(), usedAsAddr(), llvm::SIMachineFunctionInfo::usesAGPRs(), usesExtendedRegister(), llvm::Mips16InstrInfo::validImmediate(), llvm::RegisterBankInfo::InstructionMapping::verify(), llvm::SIInstrInfo::verifyInstruction(), VerifyLowRegs(), llvm::MachineRegisterInfo::verifyUseList(), and llvm::SelectionDAGBuilder::visitBitTestCase().

◆ sinking

Machine code sinking

Definition at line 265 of file MachineSink.cpp.

◆ SinkInstsIntoLoop

cl::opt<bool> SinkInstsIntoLoop("sink-insts-to-avoid-spills", cl::desc("Sink instructions into loops to avoid " "register spills"), cl::init(false), cl::Hidden)
static

◆ SinkIntoLoopLimit

cl::opt<unsigned> SinkIntoLoopLimit("machine-sink-loop-limit", cl::desc("The maximum number of instructions considered for loop sinking."), cl::init(50), cl::Hidden)
static

◆ SinkLoadBlocksThreshold

cl::opt<unsigned> SinkLoadBlocksThreshold("machine-sink-load-blocks-threshold", cl::desc("Do not try to find alias store for a load if the block number in " "the straight line is higher than this threshold."), cl::init(20), cl::Hidden)
static

◆ SinkLoadInstsPerBlockThreshold

cl::opt<unsigned> SinkLoadInstsPerBlockThreshold("machine-sink-load-instrs-threshold", cl::desc("Do not try to find alias store for a load if there is a in-path " "block whose instruction number is higher than this threshold."), cl::init(2000), cl::Hidden)
static

◆ SplitEdgeProbabilityThreshold

cl::opt<unsigned> SplitEdgeProbabilityThreshold("machine-sink-split-probability-threshold", cl::desc( "Percentage threshold for splitting single-instruction critical edge. " "If the branch threshold is higher than this threshold, we allow " "speculative execution of up to 1 instruction to avoid branching to " "splitted critical edge"), cl::init(40), cl::Hidden)
static

◆ SplitEdges

cl::opt<bool> SplitEdges("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden)
static

◆ TRI

unsigned const TargetRegisterInfo* TRI
Initial value:
{
LiveRegUnits LiveInRegUnits(*TRI)

Definition at line 1567 of file MachineSink.cpp.

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo(), llvm::LiveRegUnits::accumulateUsedDefed(), llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), llvm::SIMachineFunctionInfo::addDispatchID(), llvm::SIMachineFunctionInfo::addDispatchPtr(), llvm::ARMBaseInstrInfo::AddDReg(), addExclusiveRegPair(), llvm::SIMachineFunctionInfo::addFlatScratchInit(), llvm::SITargetLowering::AddIMGInit(), llvm::SIMachineFunctionInfo::addImplicitBufferPtr(), llvm::SIMachineFunctionInfo::addKernargSegmentPtr(), llvm::addLiveIns(), llvm::DwarfExpression::addMachineReg(), llvm::DwarfExpression::addMachineRegExpression(), llvm::SIMachineFunctionInfo::addPrivateSegmentBuffer(), llvm::SIMachineFunctionInfo::addQueuePtr(), llvm::LivePhysRegs::addReg(), llvm::LiveRegUnits::addReg(), addRegAndItsAliases(), llvm::LiveRegUnits::addRegMasked(), addRegsToSet(), addRegUnits(), llvm::PPCFrameLowering::addScavengingSpillSlot(), AddSubReg(), llvm::LiveVariables::addVirtualRegisterDead(), llvm::LiveVariables::addVirtualRegisterKilled(), AdjustBaseAndOffset(), llvm::GCNSubtarget::adjustSchedDependency(), llvm::RegPressureTracker::advance(), allocateHSAUserSGPRs(), llvm::SITargetLowering::allocateHSAUserSGPRs(), llvm::SIMachineFunctionInfo::allocateSGPRSpillToVGPR(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), llvm::X86InstrInfo::analyzeBranchPredicate(), llvm::AnalyzePhysRegInBundle(), AnyAliasLiveIn(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::AMDGPUCallLowering::areCalleeOutgoingArgsTailCallable(), areCFlagsAccessedBetweenInstrs(), llvm::LanaiInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), llvm::RISCVInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::PPCInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::ARMRegisterBankInfo::ARMRegisterBankInfo(), llvm::SystemZELFFrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::M68kFrameLowering::assignCalleeSavedSpillSlots(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), llvm::TargetFrameLowering::assignCalleeSavedSpillSlots(), llvm::LiveRegUnits::available(), llvm::CodeViewDebug::beginFunctionImpl(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), buildAnyextOrCopy(), buildCallOperands(), buildEpilogRestore(), buildGitPtr(), buildPrologSpill(), buildScratchExecCopy(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), llvm::LiveIntervalCalc::calculate(), llvm::calculateDbgEntityHistory(), llvm::LiveRangeEdit::calculateRegClassAndHint(), canBeFeederToNewValueJump(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), canCmpInstrBeRemoved(), canCompareBeNewValueJump(), canInstrSubstituteCmpInstr(), canRenameUpToDef(), CC_X86_64_VectorCall(), checkAndUpdateCCRKill(), checkAndUpdateCPSRKill(), checkAndUpdateEFLAGSKill(), CheckForLiveRegDef(), CheckForPhysRegDependency(), clearKillFlags(), llvm::CoalescerPair::CoalescerPair(), llvm::RegisterOperands::collect(), collectRegDefs(), llvm::HexagonBlockRanges::computeDeadMap(), computeIndirectRegAndOffset(), computeIndirectRegIndex(), llvm::computeLiveIns(), llvm::HexagonBlockRanges::computeLiveMap(), computeLiveOuts(), llvm::TargetSchedModel::computeOutputLatency(), llvm::MachineBasicBlock::computeRegisterLiveness(), llvm::TargetLoweringBase::computeRegisterProperties(), llvm::LiveInterval::computeSubRangeUndefs(), llvm::MachineInstrBuilder::constrainAllUses(), llvm::constrainOperandRegClass(), llvm::constrainSelectedInstRegOperands(), llvm::MIRPrinter::convert(), convertArgumentInfo(), llvm::MIRPrinter::convertCallSiteObjects(), llvm::MIRPrinter::convertStackObjects(), llvm::AArch64InstrInfo::copyGPRRegTuple(), copyHint(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), copyPhysSubRegs(), llvm::AllocationOrder::create(), llvm::createBURRListDAGScheduler(), llvm::createCopyConstrainDAGMutation(), llvm::MipsFunctionInfo::createEhDataRegsFI(), llvm::XCoreFunctionInfo::createEHSpillSlot(), llvm::XCoreFunctionInfo::createFPSpillSlot(), llvm::createHybridListDAGScheduler(), llvm::createILPListDAGScheduler(), llvm::MipsFunctionInfo::createISRRegFI(), llvm::createLoadClusterDAGMutation(), llvm::XCoreFunctionInfo::createLRSpillSlot(), llvm::ARMBaseInstrInfo::createMIROperandComment(), llvm::TargetInstrInfo::createMIROperandComment(), createPostIncLoadStore(), llvm::createSourceListDAGScheduler(), llvm::createStoreClusterDAGMutation(), createTuple(), llvm::RISCVTargetLowering::decomposeSubvectorInsertExtractToSubRegs(), llvm::MachineInstr::definesRegister(), llvm::MipsInstrInfo::describeLoadedValue(), llvm::AArch64InstrInfo::describeLoadedValue(), llvm::X86InstrInfo::describeLoadedValue(), llvm::TargetInstrInfo::describeLoadedValue(), describeMOVrrLoadedValue(), describeORRLoadedValue(), llvm::SIFrameLowering::determineCalleeSaves(), llvm::MipsSEFrameLowering::determineCalleeSaves(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSavesSGPR(), llvm::MachineRegisterInfo::disableCalleeSavedRegister(), llvm::AMDGPUCallLowering::doCallerAndCalleePassArgsTheSameWay(), doesModifyCalleeSavedReg(), llvm::RegisterPressure::dump(), llvm::RegisterBank::dump(), llvm::PressureDiff::dump(), llvm::SDep::dump(), dump_registers(), llvm::TargetRegisterInfo::dumpReg(), llvm::dumpRegSetPressure(), emitAlignedDPRCS2Restores(), emitAlignedDPRCS2Spills(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::DwarfDebug::emitDebugLocValue(), llvm::VETargetLowering::emitEHSjLjSetJmp(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::SIFrameLowering::emitEpilogue(), emitIndirectDst(), emitIndirectSrc(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), emitLoadM0FromVGPRLoop(), emitLoadSRsrcFromVGPRLoop(), llvm::SIFrameLowering::emitPrologue(), estimateRSStackSizeLimit(), llvm::MipsFrameLowering::estimateStackSize(), examineCFlagsUse(), llvm::execMayBeModifiedBeforeAnyUse(), llvm::execMayBeModifiedBeforeUse(), llvm::InstructionSelector::executeMatchTable(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::M68kInstrInfo::ExpandMOVX_RR(), expandNOVLXLoad(), expandNOVLXStore(), llvm::VEInstrInfo::expandPostRAPseudo(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::HexagonBlockRanges::expandToSubRegs(), expandXorFP(), llvm::finalizeBundle(), llvm::PPCInstrInfo::finalizeInsInstrs(), llvm::SITargetLowering::finalizeLowering(), FindAllMemoryUses(), llvm::findCMPToFoldIntoCBZ(), findDeadCallerSavedReg(), findHoistingInsertPosAndDeps(), findIncDecAfter(), findNextInsertLocation(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::MachineInstr::findRegisterUseOperand(), llvm::MachineInstr::findRegisterUseOperandIdx(), llvm::ARMTargetLowering::findRepresentativeClass(), llvm::X86TargetLowering::findRepresentativeClass(), llvm::TargetLoweringBase::findRepresentativeClass(), findScratchNonCalleeSaveRegister(), findSurvivorBackwards(), llvm::RegScavenger::FindUnusedReg(), findUseBetween(), findVCMPToFoldIntoVPST(), firstCommonClass(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldVGPRCopyIntoRegSequence(), forAllMIsUntilDef(), foreachUnit(), llvm::RegScavenger::forward(), llvm::MipsInstrInfo::genInstrWithNewOpc(), llvm::AArch64InstrInfo::getAddrModeFromMemoryOp(), llvm::MachineBasicBlock::getBeginClobberMask(), getBundledDefMI(), getBundledUseMI(), llvm::TargetFrameLowering::getCalleeSaves(), getCopyRegClasses(), getCorrespondingDRegAndLane(), llvm::PPCInstrInfo::getDefMIPostRA(), GetDSubRegs(), getDwarfRegNum(), llvm::MachineBasicBlock::getEndClobberMask(), llvm::PPCInstrInfo::getFMAPatterns(), getImplicitSPRUseForDPRUse(), llvm::X86RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), llvm::AVRRegisterInfo::getLargestLegalSuperClass(), LiveDebugValues::MLocTracker::getLocID(), getMaskForArgs(), getMax32BitSubRegister(), getMaxCalleeSavedReg(), llvm::RegPressureTracker::getMaxUpwardPressureDelta(), getMemcpyLoadsAndStores(), llvm::LanaiInstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandsWithOffsetWidth(), llvm::SIInstrInfo::getMemOperandsWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandsWithOffsetWidth(), llvm::TargetInstrInfo::getMemOperandWithOffset(), llvm::RegisterBankInfo::getMinimalPhysRegClass(), llvm::MipsFunctionInfo::getMoveF64ViaSpillFI(), getNumAllocatableRegsForConstraints(), llvm::GCNTTIImpl::getNumberOfRegisters(), llvm::MipsTargetLowering::getOpndList(), llvm::RISCVInstrInfo::getOutliningCandidateInfo(), llvm::ARMBaseInstrInfo::getOutliningCandidateInfo(), llvm::RISCVInstrInfo::getOutliningType(), llvm::ARMBaseInstrInfo::getOutliningType(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), llvm::X86InstrInfo::getPartialRegUpdateClearance(), llvm::MachineFrameInfo::getPristineRegs(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::RegisterBankInfo::getRegBank(), llvm::RegisterBankInfo::getRegBankFromConstraints(), llvm::TargetInstrInfo::getRegClass(), llvm::MachineInstr::getRegClassConstraint(), llvm::MachineInstr::getRegClassConstraintEffect(), llvm::MachineInstr::getRegClassConstraintEffectForVReg(), getRegClassesForCopy(), llvm::SITargetLowering::getRegClassFor(), llvm::BPFTargetLowering::getRegForInlineAsmConstraint(), llvm::SparcTargetLowering::getRegForInlineAsmConstraint(), llvm::LanaiTargetLowering::getRegForInlineAsmConstraint(), llvm::MSP430TargetLowering::getRegForInlineAsmConstraint(), llvm::M68kTargetLowering::getRegForInlineAsmConstraint(), llvm::VETargetLowering::getRegForInlineAsmConstraint(), llvm::HexagonTargetLowering::getRegForInlineAsmConstraint(), llvm::RISCVTargetLowering::getRegForInlineAsmConstraint(), llvm::SITargetLowering::getRegForInlineAsmConstraint(), llvm::SystemZTargetLowering::getRegForInlineAsmConstraint(), llvm::NVPTXTargetLowering::getRegForInlineAsmConstraint(), llvm::ARMTargetLowering::getRegForInlineAsmConstraint(), llvm::PPCTargetLowering::getRegForInlineAsmConstraint(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), getRegisterName(), getRegistersForValue(), GetRegistersForValue(), getRegisterSize(), llvm::RegScavenger::getRegsAvailable(), getRegTy(), llvm::WebAssemblyAsmPrinter::getRegType(), getRegUnits(), llvm::SIMachineFunctionInfo::getScavengeFI(), getSingleLiveInSuccBB(), llvm::RegisterBankInfo::getSizeInBits(), llvm::TargetInstrInfo::getStackSlotRange(), getSubRegForClass(), getSubRegForIndex(), getTag(), llvm::VirtRegMap::getTargetRegInfo(), getVGPRSpillLaneOrTempRegister(), llvm::LiveIntervals::handleMove(), llvm::LiveIntervals::handleMoveIntoNewBundle(), llvm::MipsFrameLowering::hasBP(), llvm::VEFrameLowering::hasBP(), llvm::RISCVFrameLowering::hasBP(), llvm::MipsFrameLowering::hasFP(), llvm::M68kFrameLowering::hasFP(), hasRAWHazard(), hasVectorOperands(), hasWriteToReadDep(), llvm::LiveIntervals::HMEditor::HMEditor(), hoistAndMergeSGPRInits(), llvm::LivePhysRegs::init(), llvm::LiveRegUnits::init(), llvm::LiveRegSet::init(), INITIALIZE_PASS(), initLiveRegs(), llvm::outliner::Candidate::initLRU(), llvm::VEInstrInfo::insertBranch(), insertCSRRestores(), insertCSRSaves(), llvm::X86InstrInfo::insertSelect(), instAccessReg(), instModifiesReg(), instReadsReg(), llvm::rdf::CopyPropagation::interpretAsCopy(), interpretValues(), isACalleeSavedRegister(), isCallerPreservedOrConstPhysReg(), llvm::AArch64InstrInfo::isCandidateToMergeOrPair(), llvm::CoalescerPair::isCoalescable(), llvm::MachineRegisterInfo::isConstantPhysReg(), isCopyFeedingInvariantStore(), IsCopyFromSGPR(), isCrossCopy(), isDefBetween(), isEFLAGSLive(), llvm::AMDGPUCallLowering::isEligibleForTailCallOptimization(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), TransferTracker::isEntryValueValue(), llvm::MachineOperand::isIdenticalTo(), llvm::GCNTTIImpl::isInlineAsmSourceOfDivergence(), isInvariantStore(), isLdStSafeToCluster(), llvm::TargetLoweringBase::isLegalRC(), llvm::MachineLoop::isLoopInvariant(), isLRAvailable(), isNonFoldablePartialRegisterLoad(), isNopCopy(), llvm::isNZCVTouchedInInstructionRange(), llvm::isOfRegClass(), IsOperandAMemoryOperand(), llvm::MachineRegisterInfo::isPhysRegModified(), llvm::MachineRegisterInfo::isPhysRegUsed(), llvm::ARMBaseInstrInfo::isProfitableToIfCvt(), llvm::AMDGPU::isRegIntersect(), isRegOtherThanSPAndFP(), llvm::MachineRegisterInfo::isReservedRegUnit(), IsSafeAndProfitableToMove(), llvm::TargetInstrInfo::isSchedulingBoundary(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::AMDGPU::isSGPR(), isSGPRToVGPRCopy(), isSubRegOf(), isUnsafeToMoveAcross(), isValidCopy(), llvm::HexagonInstrInfo::isValidOffset(), isValidRegDefOf(), isValidRegUseOf(), AMDGPURegBankCombinerHelper::isVgprRegBank(), isVGPRToSGPRCopy(), isVRegCompatibleReg(), llvm::MachineInstr::killsRegister(), llvm::MipsLegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::LivePhysRegs::LivePhysRegs(), llvm::LiveRegUnits::LiveRegUnits(), TransferTracker::loadInlocs(), loadM0FromVGPR(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::MipsInstrInfo::loadRegFromStackSlot(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlot(), loadRegPairFromStackSlot(), lookupCandidateBaseReg(), llvm::MipsCallLowering::lowerCall(), llvm::X86CallLowering::lowerCall(), llvm::ARMCallLowering::lowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::VETargetLowering::LowerCall(), llvm::AMDGPUCallLowering::lowerCall(), llvm::SITargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::FastISel::lowerCallTo(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::AMDGPUCallLowering::lowerFormalArgumentsKernel(), llvm::InlineAsmLowering::lowerInlineAsm(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::SITargetLowering::LowerReturn(), lowerRISCVVMachineInstrToMCInst(), lowerShiftReservedVGPR(), llvm::AMDGPUCallLowering::lowerTailCall(), matchSwap(), llvm::MipsRegInfoRecord::MipsRegInfoRecord(), llvm::MachineInstr::modifiesRegister(), llvm::rdf::operator<<(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::TargetLowering::ParseConstraints(), llvm::SITargetLowering::passSpecialInputs(), patchMatchingInput(), performCopyPropagation(), llvm::X86InstrInfo::preservesZeroValueInReg(), llvm::PhysicalRegisterUsageInfo::print(), llvm::RegisterBank::print(), llvm::LiveIntervalUnion::print(), llvm::MIPrinter::print(), llvm::MachineOperand::print(), llvm::RegisterBankInfo::OperandsMapper::print(), llvm::MachineFunction::print(), llvm::MachineBasicBlock::print(), llvm::MachineInstr::print(), llvm::AVRAsmPrinter::PrintAsmOperand(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), printCFI(), printCFIRegister(), printCustomRegMask(), llvm::GCNRPTracker::printLiveRegs(), PrintNodeInfo(), llvm::ARMAsmPrinter::printOperand(), llvm::printReg(), llvm::printRegClassOrBank(), printRegClassOrBank(), printRegMIR(), llvm::printRegUnit(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::MachineOperand::printSubRegIdx(), llvm::printVRegOrUnit(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::XCoreFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PSetIterator::PSetIterator(), llvm::MachineInstr::readsRegister(), llvm::TargetInstrInfo::reassociateOps(), llvm::RegPressureTracker::recede(), llvm::recomputeLivenessFlags(), reduceDbgValsForwardScan(), llvm::LiveInterval::refineSubRanges(), llvm::registerDefinedBetween(), llvm::MachineInstr::registerDefIsDead(), regOverlapsSet(), regsAreCompatible(), regToString(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), llvm::TargetInstrInfo::reMaterialize(), rematerializeCheapDef(), llvm::LiveIntervals::removeAllRegUnitsForPhysReg(), removeMapRegEntry(), llvm::LiveIntervals::removePhysRegDefAt(), llvm::LivePhysRegs::removeReg(), llvm::LiveRegUnits::removeReg(), llvm::RegBankSelect::RepairingPlacement::RepairingPlacement(), replaceFrameIndex(), llvm::PPCInstrInfo::replaceInstrOperandWithImm(), llvm::MachineRegisterInfo::replaceRegWith(), reportMismatch(), reservePrivateMemoryRegs(), llvm::SIMachineFunctionInfo::reserveVGPRforSGPRSpills(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::ARMFrameLowering::restoreCalleeSavedRegisters(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZELFFrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::M68kFrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), llvm::rewriteT2FrameIndex(), llvm::RISCVTargetLowering::RISCVTargetLowering(), llvm::rdf::CopyPropagation::run(), llvm::InstructionSelect::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::VirtRegMap::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSA(), scavengeFrameVirtualRegsInBlock(), llvm::RegScavenger::scavengeRegister(), llvm::RegScavenger::scavengeRegisterBackwards(), scavengeVReg(), selectCopy(), selectMergeValues(), llvm::FastISel::selectPatchpoint(), selectUnmergeValues(), llvm::FunctionLoweringInfo::set(), setAliasRegs(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::MachineInstr::setPhysRegsDeadExcept(), llvm::CoalescerPair::setRegisters(), llvm::MIRParserImpl::setupRegisterInfo(), shareSameRegisterFile(), llvm::PPCInstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldReduceRegisterPressure(), shouldUseFrameHelper(), SinkingPreventsImplicitNullCheck(), llvm::SITargetLowering::SITargetLowering(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::SystemZELFFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), spillVGPRtoAGPR(), llvm::MachineBasicBlock::SplitCriticalEdge(), storeRegPairToStackSlot(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::MipsInstrInfo::storeRegToStackSlot(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlot(), stripValuesNotDefiningMask(), llvm::MachineOperand::substPhysReg(), llvm::MachineOperand::substVirtReg(), TrackDefUses(), tryChangeVGPRtoSGPRinCopy(), tryConstantFoldOp(), llvm::tryFoldSPUpdateIntoPushPop(), tryToFindRegisterToRename(), tryToGetTargetInfo(), llvm::X86InstrInfo::unfoldMemoryOperand(), unsupportedBinOp(), llvm::LiveIntervals::HMEditor::updateAllRanges(), updateLiveIn(), updateOperand(), UpdateOperandRegClass(), updateOperandRegConstraints(), updatePhysDepsDownwards(), updatePhysDepsUpwards(), UpdatePredRedefs(), llvm::VirtRegMap::VirtRegMap(), and llvm::X86RegisterBankInfo::X86RegisterBankInfo().

◆ UseBlockFreqInfo

cl::opt<bool> UseBlockFreqInfo("machine-sink-bfi", cl::desc("Use block frequency info to find successors to sink"), cl::init(true), cl::Hidden)
static
TRI
unsigned const TargetRegisterInfo * TRI
Definition: MachineSink.cpp:1567
llvm::LiveRegUnits
A set of register units used to track register liveness.
Definition: LiveRegUnits.h:30