LLVM: lib/CodeGen/MachineSink.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
STATISTIC (NumSunk, "Number of machine instructions sunk")
STATISTIC (NumCycleSunk, "Number of machine instructions sunk into a cycle")
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
Machine code static false bool blockPrologueInterferes (const MachineBasicBlock *BB, MachineBasicBlock::const_iterator End, const MachineInstr &MI, const TargetRegisterInfo *TRI, const TargetInstrInfo *TII, const MachineRegisterInfo *MRI)
Return true if a target defined block prologue instruction interferes with a sink candidate.
static bool mayLoadFromGOTOrConstantPool (MachineInstr &MI)
Return true if this machine instruction loads from global offset table or constant pool.
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.
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.
static void performSink (MachineInstr &MI, MachineBasicBlock &SuccToSinkTo, MachineBasicBlock::iterator InsertPos, ArrayRef< MIRegs > DbgValuesToSink)
Sink an instruction and its associated debug instructions.
INITIALIZE_PASS (PostRAMachineSinking, "postra-machine-sink", "PostRA Machine Sink", false, false) static bool aliasWithRegsInLiveIn(MachineBasicBlock &MBB
LiveInRegUnits addLiveIns (MBB)
return !LiveInRegUnits available (Reg)
static MachineBasicBlock * getSingleLiveInSuccBB (MachineBasicBlock &CurBB, const SmallPtrSetImpl< MachineBasicBlock * > &SinkableBBs, unsigned Reg, const TargetRegisterInfo *TRI)
static MachineBasicBlock * getSingleLiveInSuccBB (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)
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 > SinkInstsIntoCycle ("sink-insts-to-avoid-spills", cl::desc("Sink instructions into cycles to avoid " "register spills"), cl::init(false), cl::Hidden)
static cl::opt< unsigned > SinkIntoCycleLimit ("machine-sink-cycle-limit", cl::desc("The maximum number of instructions considered for cycle sinking."), cl::init(50), cl::Hidden)
DEBUG_TYPE
Machine code sinking
Machine code false
unsigned Reg
unsigned const TargetRegisterInfo * TRI

DEBUG_TYPE

#define DEBUG_TYPE "machine-sink"

MIRegs

addLiveIns()

LiveInRegUnits addLiveIns ( MBB )

attemptDebugCopyProp()

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 1401 of file MachineSink.cpp.

References llvm::MachineInstr::getDebugOperandsForReg(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineInstr::getMF(), 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 )

blockPrologueInterferes()

Return true if a target defined block prologue instruction interferes with a sink candidate.

Definition at line 299 of file MachineSink.cpp.

References End, MI, MRI, Reg, TII, and TRI.

clearKillFlags()

getSingleLiveInSuccBB() [1/2]

getSingleLiveInSuccBB() [2/2]

hasRegisterDependency()

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

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

Definition at line 662 of file MachineSink.cpp.

References assert(), and MI.

performSink()

Sink an instruction and its associated debug instructions.

Definition at line 1453 of file MachineSink.cpp.

References attemptDebugCopyProp(), llvm::MachineFunction::CloneMachineInstr(), llvm::MachineBasicBlock::empty(), llvm::MachineBasicBlock::end(), llvm::DILocation::getMergedLocation(), llvm::MachineInstr::getMF(), llvm::MachineInstr::hasDebugOperandForReg(), llvm::MachineBasicBlock::insert(), MI, Reg, llvm::MachineInstr::setDebugValueUndef(), and llvm::MachineBasicBlock::splice().

SinkingPreventsImplicitNullCheck()

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 1356 of file MachineSink.cpp.

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

STATISTIC() [1/5]

STATISTIC ( NumCoalesces ,
"Number of copies coalesced"
)

STATISTIC() [2/5]

STATISTIC ( NumCycleSunk ,
"Number of machine instructions sunk into a cycle"
)

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

DEBUG_TYPE

false

Reg

Definition at line 1944 of file MachineSink.cpp.

Referenced by llvm::LiveRegUnits::accumulateUsedDefed(), llvm::X86MachineFunctionInfo::addCandidateForPush2Pop2(), llvm::addDirectMem(), llvm::Loc::EntryValue::addExpr(), llvm::MachineRegisterInfo::addLiveIn(), llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), llvm::PPCFunctionInfo::addMustSaveCR(), llvm::LivePhysRegs::addReg(), llvm::LiveRegUnits::addReg(), llvm::MCInstBuilder::addReg(), llvm::M68k::addRegIndirectWithDisp(), llvm::LiveRegUnits::addRegMasked(), llvm::addRegOffset(), llvm::LoongArchMachineFunctionInfo::addSExt32Register(), llvm::SIMachineFunctionInfo::addToPrologEpilogSGPRSpills(), llvm::RegPressureTracker::advance(), llvm::CCState::AllocateReg(), llvm::CCState::AllocateStack(), llvm::analyzeArguments(), llvm::analyzeReturnValues(), llvm::LiveRegSet::appendTo(), llvm::RegScavenger::assignRegToScavengingIndex(), attemptDebugCopyProp(), llvm::LiveRegUnits::available(), llvm::MIPatternMatch::bind_helper< const ConstantFP * >::bind(), llvm::MIPatternMatch::bind_helper< LLT >::bind(), llvm::MIPatternMatch::bind_helper< MachineInstr * >::bind(), blockPrologueInterferes(), llvm::buildBuiltinVariableLoad(), llvm::buildEnqueueKernel(), llvm::buildOpDecorate(), llvm::buildOpSpirvDecorations(), llvm::RegPressureTracker::bumpDeadDefs(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), llvm::CC_CSKY_ABIV2_SOFT_64(), llvm::CC_M68k_Any_AssignToReg(), llvm::CC_SystemZ_I128Indirect(), llvm::SIMachineFunctionInfo::checkFlag(), llvm::jitlink::aarch32::checkRegister(), llvm::LivePhysRegs::contains(), llvm::MCRegisterClass::contains(), llvm::LiveRegSet::contains(), llvm::TargetRegisterClass::contains(), convertFPR32ToFPR64(), convertFPR64ToFPR16(), convertFPR64ToFPR32(), llvm::CCValAssign::convertToReg(), convertVRToVRMx(), llvm::LiveIntervals::createAndComputeVirtRegInterval(), llvm::LiveIntervals::createEmptyInterval(), llvm::AMDGPUTargetLowering::CreateLiveInRegister(), llvm::AMDGPUTargetLowering::CreateLiveInRegisterRaw(), llvm::MCOperand::createReg(), llvm::MachineOperand::CreateReg(), llvm::mca::MCAOperand::createReg(), llvm::createVirtualRegister(), llvm::DbgCallSiteParam::DbgCallSiteParam(), llvm::CCState::DeallocateReg(), llvm::ShapeT::deduceImm(), llvm::MachineRegisterInfo::def_bundles(), llvm::MachineRegisterInfo::def_instructions(), llvm::MachineRegisterInfo::def_operands(), llvm::MachineInstr::definesRegister(), llvm::RegisterOperands::detectDeadDefs(), llvm::Loc::EntryValue::EntryValue(), llvm::SIScheduleDAGMI::fillVgprSgprCost(), llvm::MachineFunction::finalizeDebugInstrRefs(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MachineInstr::findRegisterUseOperand(), llvm::LegalizationArtifactCombiner::ArtifactValueFinder::findUnmergeThatDefinesReg(), findUseBetween(), llvm::MCRegisterInfo::get(), llvm::rdf::PhysicalRegisterInfo::getAliasSet(), llvm::getBRegFromDReg(), llvm::RAGreedy::ExtraRegInfo::getCascade(), llvm::RAGreedy::ExtraRegInfo::getCascadeOrCurrentNext(), llvm::getConstFromIntrinsic(), llvm::SelectionDAG::getCopyFromReg(), llvm::SelectionDAG::getCopyToReg(), llvm::getCRFromCRBit(), llvm::CCValAssign::getCustomReg(), llvm::MachineInstr::getDebugOperandsForReg(), llvm::getDRegFromBReg(), llvm::MipsFunctionInfo::getEhDataRegFI(), llvm::MCRegisterInfo::getEncodingValue(), llvm::SIRegisterInfo::getHWRegIndex(), llvm::LiveIntervals::getInterval(), llvm::MipsFunctionInfo::getISRRegFI(), llvm::getLanaiRegisterNumbering(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), llvm::getLiveRegMap(), LiveDebugValues::MLocTracker::getLocID(), llvm::TargetRegisterInfo::getMatchingSuperReg(), llvm::AMDGPU::getMCReg(), llvm::getMSARegFromFReg(), getNextRegister(), llvm::MachineRegisterInfo::getOneDef(), llvm::getOpcodeDef(), llvm::RAGreedy::ExtraRegInfo::getOrAssignNewCascade(), llvm::LiveIntervals::getOrCreateEmptyInterval(), llvm::RAGreedy::ExtraRegInfo::getOrInitStage(), llvm::AVRInstPrinter::getPrettyRegisterName(), llvm::SIMachineFunctionInfo::getPrologEpilogSGPRSaveRestoreInfo(), llvm::rdf::PhysicalRegisterInfo::getRefForUnit(), llvm::RegisterSDNode::getReg(), llvm::CCValAssign::getReg(), llvm::SystemZMC::getRegAsGR32(), llvm::SystemZMC::getRegAsGR64(), llvm::SystemZMC::getRegAsGRH32(), llvm::TargetRegisterInfo::getRegAsmName(), llvm::SystemZMC::getRegAsVR128(), llvm::MachineRegisterInfo::getRegBankOrNull(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::MachineRegisterInfo::getRegClassOrRegBank(), llvm::SPIRV::ModuleAnalysisInfo::getRegisterAlias(), llvm::AVRTargetLowering::getRegisterByName(), llvm::AVRRegisterInfo::getReservedRegs(), llvm::SIMachineFunctionInfo::getScratchSGPRCopyDstReg(), llvm::X86::getSegmentOverridePrefixForReg(), getSingleLiveInSuccBB(), llvm::RAGreedy::ExtraRegInfo::getStage(), llvm::TargetRegisterInfo::getSubReg(), llvm::MachineRegisterInfo::getType(), llvm::MachineRegisterInfo::getVRegAttrs(), llvm::getVRegDef(), llvm::MachineRegisterInfo::getVRegName(), llvm::WebAssembly::getWARegStackId(), llvm::getWRegFromXReg(), llvm::getXRegFromWReg(), llvm::BitTracker::has(), llvm::MachineInstr::hasDebugOperandForReg(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), llvm::LiveIntervals::hasInterval(), llvm::SIMachineFunctionInfo::hasPrologEpilogSGPRSpillEntry(), llvm::SPIRV::ModuleAnalysisInfo::hasRegisterAlias(), hasRegisterDependency(), llvm::TargetRegisterInfo::hasRegUnit(), insertNoDuplicates(), llvm::MachineRegisterInfo::insertVRegByName(), llvm::FunctionLoweringInfo::InvalidatePHILiveOutRegInfo(), llvm::X86II::is32ExtendedReg(), llvm::CCState::isAllocated(), llvm::outliner::Candidate::isAnyUnavailableAcrossOrOutOfSeq(), llvm::X86II::isApxExtendedReg(), llvm::isARMLowRegister(), llvm::outliner::Candidate::isAvailableAcrossAndOutOfSeq(), llvm::outliner::Candidate::isAvailableInsideSeq(), llvm::isCalleeSavedRegister(), llvm::X86MachineFunctionInfo::isCandidateForPush2Pop2(), llvm::rdf::TargetOperandInfo::isFixedReg(), llvm::AMDGPU::isHi16Reg(), llvm::SystemZ::isHighReg(), llvm::AllocationOrder::isHint(), llvm::AMDGPU::isInlineValue(), llvm::PhiLoweringHelper::isLaneMaskReg(), llvm::LiveVariables::isLiveIn(), llvm::PPCRegisterInfo::isNonallocatableRegisterCalleeSave(), llvm::LoongArchMachineFunctionInfo::isSExt32Register(), llvm::AMDGPU::isSGPR(), llvm::SIRegisterInfo::isSGPRPhysReg(), llvm::PPCInstrInfo::isSignExtended(), llvm::SIRegisterInfo::isVectorRegister(), llvm::PPC::isVFRegister(), llvm::PPC::isVRRegister(), llvm::SIMachineFunctionInfo::isWWMReg(), llvm::X86II::isX86_64ExtendedReg(), llvm::X86II::isX86_64NonExtLowByteReg(), llvm::X86II::isXMMReg(), llvm::X86II::isYMMReg(), llvm::PPCInstrInfo::isZeroExtended(), llvm::X86II::isZMMReg(), llvm::MachineInstr::killsRegister(), llvm::BitTracker::lookup(), llvm::rdf::DataFlowGraph::makeRegRef(), llvm::SPIRV::mapBuiltinToOpcode(), llvm::yaml::MappingTraits< VirtualRegisterDefinition >::mapping(), llvm::MIPatternMatch::OneUse_match< SubPatternT >::match(), llvm::MIPatternMatch::OneNonDBGUse_match< SubPatternT >::match(), llvm::MIPatternMatch::ConstantMatch< ConstT >::match(), llvm::MIPatternMatch::ICstOrSplatMatch< ConstT >::match(), llvm::MIPatternMatch::GCstAndRegMatch::match(), llvm::MIPatternMatch::GFCstAndRegMatch::match(), llvm::MIPatternMatch::GFCstOrSplatGFCstMatch::match(), llvm::MIPatternMatch::SpecificConstantMatch::match(), llvm::MIPatternMatch::SpecificConstantSplatMatch::match(), llvm::MIPatternMatch::SpecificConstantOrSplatMatch::match(), llvm::MIPatternMatch::SpecificRegisterMatch::match(), llvm::MIPatternMatch::ImplicitDefMatch::match(), llvm::MIPatternMatch::CheckType::match(), llvm::MIPatternMatch::matchConstant(), llvm::MIPatternMatch::matchConstantSplat(), llvm::MCRegAliasIterator::MCRegAliasIterator(), llvm::MCRegUnitIterator::MCRegUnitIterator(), llvm::MCRegUnitMaskIterator::MCRegUnitMaskIterator(), llvm::MCSubRegIndexIterator::MCSubRegIndexIterator(), llvm::MCSubRegIterator::MCSubRegIterator(), llvm::MCSuperRegIterator::MCSuperRegIterator(), llvm::MachineInstr::modifiesRegister(), nextReg(), llvm::MachineRegisterInfo::noteNewVirtualRegister(), llvm::VirtReg2IndexFunctor::operator()(), llvm::MCRegisterInfo::operator, performSink(), llvm::rdf::PhysicalRegisterInfo::PhysicalRegisterInfo(), llvm::AVRAsmPrinter::PrintAsmOperand(), llvm::Win64EH::Instruction::PushNonVol(), llvm::MachineInstr::readsRegister(), llvm::MachineInstr::readsVirtualRegister(), llvm::RegPressureTracker::recede(), 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::MachineInstr::registerDefIsDead(), llvm::MCRegisterInfo::regunits(), llvm::LiveIntervals::removeAllRegUnitsForPhysReg(), llvm::LiveIntervals::removeInterval(), llvm::LivePhysRegs::removeReg(), llvm::LiveRegUnits::removeReg(), llvm::LiveVariables::removeVirtualRegisterDead(), llvm::LiveVariables::removeVirtualRegisterKilled(), llvm::SIMachineFunctionInfo::reserveWWMRegister(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::Ret_CSKY_ABIV2_SOFT_64(), llvm::Win64EH::Instruction::SaveNonVol(), llvm::Win64EH::Instruction::SaveXMM(), llvm::BitTracker::RegisterCell::self(), llvm::SystemZMachineFunctionInfo::setADAVirtualRegister(), llvm::WebAssemblyFunctionInfo::setBasePointerVreg(), llvm::RAGreedy::ExtraRegInfo::setCascade(), llvm::setDirectAddressInInstr(), llvm::SIMachineFunctionInfo::setFlag(), llvm::Win64EH::Instruction::SetFPReg(), llvm::WebAssemblyFunctionInfo::setFrameBaseVreg(), llvm::SIMachineFunctionInfo::setFrameOffsetReg(), llvm::CSKYMachineFunctionInfo::setGlobalBaseReg(), llvm::SparcMachineFunctionInfo::setGlobalBaseReg(), llvm::VEMachineFunctionInfo::setGlobalBaseReg(), llvm::X86MachineFunctionInfo::setGlobalBaseReg(), llvm::M68kMachineFunctionInfo::setGlobalBaseReg(), llvm::SIMachineFunctionInfo::setLongBranchReservedReg(), llvm::AArch64FunctionInfo::setPredicateRegForFillSpill(), llvm::SIMachineFunctionInfo::setPrivateSegmentWaveByteOffset(), llvm::AArch64FunctionInfo::setPStateSMReg(), llvm::MCOperand::setReg(), llvm::setRegClassIfNull(), llvm::MachineRegisterInfo::setRegClassOrRegBank(), llvm::setRegClassType(), llvm::SPIRV::ModuleAnalysisInfo::setRegisterAlias(), llvm::SIMachineFunctionInfo::setScratchRSrcReg(), llvm::SIMachineFunctionInfo::setSGPRForEXECCopy(), llvm::AArch64FunctionInfo::setSMESaveBufferAddr(), llvm::LanaiMachineFunctionInfo::setSRetReturnReg(), llvm::MSP430MachineFunctionInfo::setSRetReturnReg(), llvm::SparcMachineFunctionInfo::setSRetReturnReg(), llvm::X86MachineFunctionInfo::setSRetReturnReg(), llvm::AArch64FunctionInfo::setSRetReturnReg(), llvm::HexagonMachineFunctionInfo::setSRetReturnReg(), llvm::M68kMachineFunctionInfo::setSRetReturnReg(), llvm::MipsFunctionInfo::setSRetReturnReg(), llvm::SIMachineFunctionInfo::setStackPtrOffsetReg(), llvm::RAGreedy::ExtraRegInfo::setStage(), llvm::WebAssemblyFunctionInfo::setVarargBufferVreg(), llvm::MachineFunction::setVariableDbgInfo(), llvm::RegAllocBase::shouldAllocateRegister(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::AVRRegisterInfo::splitReg(), llvm::MCRegisterInfo::sub_and_superregs_inclusive(), llvm::MCRegisterInfo::subregs(), llvm::MCRegisterInfo::subregs_inclusive(), llvm::MCRegisterInfo::superregs(), llvm::MCRegisterInfo::superregs_inclusive(), llvm::SwingSchedulerDDGEdge::SwingSchedulerDDGEdge(), 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(), llvm::VirtRegAuxInfo::weightCalcHelper(), llvm::jitlink::aarch64::writeMovRegImm64Seq(), and llvm::jitlink::aarch32::writeRegister().

sinking

SinkInstsIntoCycle

SinkIntoCycleLimit

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) ( "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) ( "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) ( "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) ( "machine-sink-split" , cl::desc("Split critical edges during machine sinking") , cl::init(true) , cl::Hidden ) static

TRI

Initial value:

{

unsigned const TargetRegisterInfo * TRI

A set of register units used to track register liveness.

Definition at line 1945 of file MachineSink.cpp.

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo(), llvm::AArch64Subtarget::AArch64Subtarget(), llvm::LiveRegUnits::accumulateUsedDefed(), llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), llvm::SIMachineFunctionInfo::addDispatchID(), llvm::SIMachineFunctionInfo::addDispatchPtr(), llvm::ARMBaseInstrInfo::AddDReg(), addExclusiveRegPair(), llvm::SIMachineFunctionInfo::addFlatScratchInit(), llvm::SIMachineFunctionInfo::addImplicitBufferPtr(), llvm::SIMachineFunctionInfo::addKernargSegmentPtr(), llvm::addLiveIns(), llvm::DwarfExpression::addMachineReg(), llvm::DwarfExpression::addMachineRegExpression(), llvm::SITargetLowering::AddMemOpInit(), llvm::SIMachineFunctionInfo::addPreloadedKernArg(), 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::SITargetLowering::AdjustInstrPostInstrSelection(), llvm::GCNSubtarget::adjustSchedDependency(), llvm::RegPressureTracker::advance(), llvm::SITargetLowering::allocateHSAUserSGPRs(), allocateHSAUserSGPRs(), llvm::SITargetLowering::allocatePreloadKernArgSGPRs(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), llvm::LiveRangeEdit::allUsesAvailableAt(), llvm::X86InstrInfo::analyzeBranchPredicate(), analyzeCandidate(), analyzeCompressibleUses(), llvm::AArch64InstrInfo::analyzeLoopForPipelining(), llvm::AnalyzePhysRegInBundle(), llvm::AnalyzeVirtRegLanesInBundle(), AnyAliasLiveIn(), appendScalableVectorExpression(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::RISCVVectorMaskDAGMutation::apply(), applyBitsNotInRegMaskToRegUnitsMask(), llvm::AMDGPUCallLowering::areCalleeOutgoingArgsTailCallable(), areCFlagsAccessedBetweenInstrs(), llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), llvm::LanaiInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::PPCInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::RISCVInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::ARMRegisterBankInfo::ARMRegisterBankInfo(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::M68kFrameLowering::assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZELFFrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::TargetFrameLowering::assignCalleeSavedSpillSlots(), llvm::LiveRegUnits::available(), llvm::CodeViewDebug::beginFunctionImpl(), blockPrologueInterferes(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), buildAnyextOrCopy(), buildCallOperands(), llvm::AArch64InstrInfo::buildClearRegister(), llvm::X86InstrInfo::buildClearRegister(), buildEpilogRestore(), buildGitPtr(), buildPrologSpill(), buildScratchExecCopy(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::GCNDownwardRPTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), llvm::LiveIntervalCalc::calculate(), llvm::calculateDbgEntityHistory(), llvm::LiveRangeEdit::calculateRegClassAndHint(), canBeFeederToNewValueJump(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), canCmpInstrBeRemoved(), canCompareBeNewValueJump(), canInstrSubstituteCmpInstr(), canRenameMOP(), canRenameUntilSecondLoad(), canRenameUpToDef(), llvm::AArch64FrameLowering::canUseAsPrologue(), CC_X86_64_VectorCall(), llvm::AArch64TargetLowering::changeStreamingMode(), checkAndUpdateCCRKill(), checkAndUpdateCPSRKill(), checkAndUpdateEFLAGSKill(), CheckForLiveRegDef(), CheckForPhysRegDependency(), llvm::SITargetLowering::checkForPhysRegDependency(), llvm::checkVOPDRegConstraints(), clearKillFlags(), cloneInstr(), llvm::CoalescerPair::CoalescerPair(), llvm::RegisterOperands::collect(), collectRegDefs(), collectVirtualRegUses(), computeCalleeSaveRegisterPairs(), llvm::HexagonBlockRanges::computeDeadMap(), computeFPBPAlignmentGap(), 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(), consumesDstSelForwardingOperand(), llvm::MIRPrinter::convert(), convertArgumentInfo(), llvm::MIRPrinter::convertCallSiteObjects(), llvm::MIRPrinter::convertEntryValueObjects(), llvm::MIRPrinter::convertStackObjects(), llvm::AArch64InstrInfo::copyGPRRegTuple(), llvm::VirtRegAuxInfo::copyHint(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::VEInstrInfo::copyPhysReg(), llvm::RISCVInstrInfo::copyPhysReg(), llvm::AVRInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), llvm::RISCVInstrInfo::copyPhysRegVector(), copyPhysSubRegs(), llvm::AllocationOrder::create(), llvm::createBURRListDAGScheduler(), llvm::createCFAOffset(), llvm::createCopyConstrainDAGMutation(), llvm::createDefCFA(), createDefCFAExpression(), createDefCFAOffset(), llvm::MipsFunctionInfo::createEhDataRegsFI(), llvm::XCoreFunctionInfo::createEHSpillSlot(), llvm::XCoreFunctionInfo::createFPSpillSlot(), llvm::createHybridListDAGScheduler(), llvm::createILPListDAGScheduler(), llvm::MipsFunctionInfo::createISRRegFI(), llvm::createLoadClusterDAGMutation(), llvm::XCoreFunctionInfo::createLRSpillSlot(), llvm::TargetInstrInfo::createMIROperandComment(), llvm::ARMBaseInstrInfo::createMIROperandComment(), llvm::RISCVInstrInfo::createMIROperandComment(), createPostIncLoadStore(), llvm::createRISCVVectorMaskDAGMutation(), llvm::createSourceListDAGScheduler(), llvm::createStoreClusterDAGMutation(), createTuple(), llvm::RISCVTargetLowering::decomposeSubvectorInsertExtractToSubRegs(), llvm::MachineInstr::definesRegister(), llvm::TargetInstrInfo::describeLoadedValue(), llvm::AArch64InstrInfo::describeLoadedValue(), llvm::MipsInstrInfo::describeLoadedValue(), llvm::X86InstrInfo::describeLoadedValue(), describeMOVrrLoadedValue(), describeORRLoadedValue(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::MipsSEFrameLowering::determineCalleeSaves(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSavesSGPR(), llvm::SIFrameLowering::determinePrologEpilogSGPRSaves(), llvm::MachineRegisterInfo::disableCalleeSavedRegister(), llvm::AMDGPUCallLowering::doCallerAndCalleePassArgsTheSameWay(), doesModifyCalleeSavedReg(), llvm::PressureDiff::dump(), llvm::RegisterPressure::dump(), llvm::RegisterBank::dump(), llvm::SDep::dump(), dump_registers(), llvm::TargetRegisterInfo::dumpReg(), llvm::dumpRegSetPressure(), llvm::VERegisterInfo::eliminateFrameIndex(), emitAlignedDPRCS2Restores(), emitAlignedDPRCS2Spills(), emitCalleeSavedRestores(), llvm::SIFrameLowering::emitCSRSpillRestores(), llvm::SIFrameLowering::emitCSRSpillStores(), llvm::DwarfDebug::emitDebugLocValue(), llvm::LiveDebugVariables::LDVImpl::emitDebugValues(), emitDefineCFAWithFP(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), llvm::SystemZTargetLowering::emitEHSjLjSetJmp(), llvm::VETargetLowering::emitEHSjLjSetJmp(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::SIFrameLowering::emitEpilogue(), emitFrameOffsetAdj(), llvm::AArch64TargetLowering::EmitGetSMESaveSize(), emitIndirectDst(), emitIndirectSrc(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), emitLoadM0FromVGPRLoop(), emitLoadScalarOpsFromVGPRLoop(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::CSKYFrameLowering::emitPrologue(), emitSCSPrologue(), emitVFROUND_NOEXCEPT_MASK(), emitVGSaveRestore(), estimateRSStackSizeLimit(), llvm::MipsFrameLowering::estimateStackSize(), llvm::examineCFlagsUse(), llvm::execMayBeModifiedBeforeAnyUse(), llvm::execMayBeModifiedBeforeUse(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::M68kInstrInfo::ExpandMOVX_RR(), expandNOVLXLoad(), expandNOVLXStore(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::VEInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::HexagonBlockRanges::expandToSubRegs(), expandXorFP(), llvm::finalizeBundle(), llvm::PPCInstrInfo::finalizeInsInstrs(), llvm::SITargetLowering::finalizeLowering(), FindAllMemoryUses(), llvm::findCMPToFoldIntoCBZ(), findDeadCallerSavedReg(), findHoistingInsertPosAndDeps(), findIncDecAfter(), findNextInsertLocation(), findRedundantFlagInstr(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::MachineInstr::findRegisterUseOperand(), llvm::MachineInstr::findRegisterUseOperandIdx(), findRenameRegForSameLdStRegPair(), llvm::TargetLoweringBase::findRepresentativeClass(), llvm::ARMTargetLowering::findRepresentativeClass(), llvm::X86TargetLowering::findRepresentativeClass(), findScratchNonCalleeSaveRegister(), findSurvivorBackwards(), findUseBetween(), findVCMPToFoldIntoVPST(), firstCommonClass(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldVGPRCopyIntoRegSequence(), forAllMIsUntilDef(), foreachUnit(), llvm::MipsInstrInfo::genInstrWithNewOpc(), llvm::AArch64InstrInfo::getAddrModeFromMemoryOp(), llvm::MachineBasicBlock::getBeginClobberMask(), getBundledDefMI(), getBundledUseMI(), llvm::TargetFrameLowering::getCalleeSaves(), getCommonMinimalPhysRegClass(), getCopyRegClasses(), getCorrespondingDRegAndLane(), GetCostForDef(), llvm::PPCInstrInfo::getDefMIPostRA(), GetDSubRegs(), getDwarfRegNum(), llvm::MachineBasicBlock::getEndClobberMask(), llvm::PPCInstrInfo::getFMAPatterns(), getImplicitSPRUseForDPRUse(), llvm::AArch64RegisterBankInfo::getInstrAlternativeMappings(), llvm::X86RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::PPCRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::X86RegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), llvm::AVRRegisterInfo::getLargestLegalSuperClass(), llvm::RegisterClassInfo::getLastCalleeSavedAlias(), getLoadParameters(), getMaskForArgs(), getMax32BitSubRegister(), getMaxCalleeSavedReg(), llvm::RegPressureTracker::getMaxUpwardPressureDelta(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), llvm::SIInstrInfo::getMemOperandsWithOffsetWidth(), llvm::LanaiInstrInfo::getMemOperandsWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandsWithOffsetWidth(), llvm::RISCVInstrInfo::getMemOperandsWithOffsetWidth(), llvm::TargetInstrInfo::getMemOperandWithOffset(), getMemsetStores(), getMinimalPhysRegClass(), llvm::RegisterBankInfo::getMinimalPhysRegClass(), llvm::MipsFunctionInfo::getMoveF64ViaSpillFI(), getOperandSize(), llvm::MipsTargetLowering::getOpndList(), llvm::ARMBaseInstrInfo::getOutliningCandidateInfo(), llvm::RISCVInstrInfo::getOutliningTypeImpl(), llvm::ARMBaseInstrInfo::getOutliningTypeImpl(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), llvm::X86InstrInfo::getPartialRegUpdateClearance(), llvm::MachineFrameInfo::getPristineRegs(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::X86RegisterInfo::getRegAllocationHints(), llvm::RegisterBankInfo::getRegBank(), llvm::RegisterBankInfo::getRegBankFromConstraints(), llvm::TargetInstrInfo::getRegClass(), llvm::X86InstrInfo::getRegClass(), llvm::MachineInstr::getRegClassConstraint(), llvm::MachineInstr::getRegClassConstraintEffect(), llvm::MachineInstr::getRegClassConstraintEffectForVReg(), getRegClassesForCopy(), llvm::SITargetLowering::getRegClassFor(), llvm::SITargetLowering::getRegForInlineAsmConstraint(), llvm::ARMTargetLowering::getRegForInlineAsmConstraint(), llvm::BPFTargetLowering::getRegForInlineAsmConstraint(), llvm::HexagonTargetLowering::getRegForInlineAsmConstraint(), llvm::LanaiTargetLowering::getRegForInlineAsmConstraint(), llvm::M68kTargetLowering::getRegForInlineAsmConstraint(), llvm::MSP430TargetLowering::getRegForInlineAsmConstraint(), llvm::NVPTXTargetLowering::getRegForInlineAsmConstraint(), llvm::PPCTargetLowering::getRegForInlineAsmConstraint(), llvm::RISCVTargetLowering::getRegForInlineAsmConstraint(), llvm::SparcTargetLowering::getRegForInlineAsmConstraint(), llvm::SystemZTargetLowering::getRegForInlineAsmConstraint(), llvm::VETargetLowering::getRegForInlineAsmConstraint(), llvm::X86TargetLowering::getRegForInlineAsmConstraint(), llvm::XtensaTargetLowering::getRegForInlineAsmConstraint(), llvm::SparcTargetLowering::getRegisterByName(), getRegisterName(), getRegistersForValue(), getRegisterSize(), getRegOpRC(), getRegTy(), llvm::WebAssemblyAsmPrinter::getRegType(), getRVVBaseRegister(), llvm::SIMachineFunctionInfo::getScavengeFI(), getSingleLiveInSuccBB(), llvm::RegisterBankInfo::getSizeInBits(), llvm::TargetInstrInfo::getStackSlotRange(), getSubRegForClass(), getTag(), llvm::VirtRegMap::getTargetRegInfo(), getVectorRegSpillRestoreOpcode(), getVectorRegSpillSaveOpcode(), getVGPRSpillLaneOrTempRegister(), llvm::PerTargetMIParsingState::getVRegFlagValue(), llvm::LiveIntervals::handleMove(), llvm::LiveIntervals::handleMoveIntoNewBundle(), llvm::LoongArchFrameLowering::hasBP(), llvm::MipsFrameLowering::hasBP(), llvm::RISCVFrameLowering::hasBP(), llvm::VEFrameLowering::hasBP(), llvm::M68kFrameLowering::hasFPImpl(), llvm::MipsFrameLowering::hasFPImpl(), llvm::hash_value(), hasRAWHazard(), hasWriteToReadDep(), llvm::LiveIntervals::HMEditor::HMEditor(), hoistAndMergeSGPRInits(), llvm::GCNRegPressure::inc(), llvm::LiveRegSet::init(), llvm::LivePhysRegs::init(), llvm::LiveRegUnits::init(), INITIALIZE_PASS(), initLiveUnits(), llvm::VEInstrInfo::insertBranch(), llvm::AArch64TargetLowering::insertCopiesSplitCSR(), llvm::SITargetLowering::insertCopiesSplitCSR(), insertCSRRestores(), insertCSRSaves(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::LoongArchInstrInfo::insertIndirectBranch(), llvm::RISCVInstrInfo::insertIndirectBranch(), llvm::X86InstrInfo::insertSelect(), InstReorderLimit(), llvm::rdf::CopyPropagation::interpretAsCopy(), interpretValues(), invalidateRegisterPairing(), invalidateWindowsRegisterPairing(), isACalleeSavedRegister(), isAGPRCopy(), isAnyArgRegReserved(), llvm::outliner::Candidate::isAnyUnavailableAcrossOrOutOfSeq(), llvm::X86RegisterInfo::isArgumentRegister(), llvm::outliner::Candidate::isAvailableAcrossAndOutOfSeq(), llvm::outliner::Candidate::isAvailableInsideSeq(), isCallerPreservedOrConstPhysReg(), llvm::AArch64InstrInfo::isCandidateToMergeOrPair(), llvm::CoalescerPair::isCoalescable(), llvm::MachineRegisterInfo::isConstantPhysReg(), isConvertibleToVMV_V_V(), isCopyFeedingInvariantStore(), IsCopyFromSGPR(), isCrossCopy(), llvm::isCycleInvariant(), isDefBetween(), isEFLAGSLive(), llvm::AMDGPUCallLowering::isEligibleForTailCallOptimization(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), isFIPlusImmOrVGPR(), llvm::X86RegisterInfo::isFixedRegister(), isFPBPAccess(), llvm::MachineOperand::isIdenticalTo(), llvm::GCNTTIImpl::isInlineAsmSourceOfDivergence(), isInvariantStore(), isLdStSafeToCluster(), llvm::TargetLoweringBase::isLegalRC(), llvm::MachineLoop::isLoopInvariant(), isLRAvailable(), isMIModifiesReg(), isMIReadsReg(), isNonFoldablePartialRegisterLoad(), isNopCopy(), llvm::isNZCVTouchedInInstructionRange(), llvm::isOfRegClass(), IsOperandAMemoryOperand(), llvm::MachineRegisterInfo::isPhysRegModified(), llvm::MachineRegisterInfo::isPhysRegUsed(), llvm::ARMBaseInstrInfo::isProfitableToIfCvt(), isRegOtherThanSPAndFP(), llvm::MachineRegisterInfo::isReservedRegUnit(), IsSafeAndProfitableToMove(), llvm::TargetInstrInfo::isSchedulingBoundary(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::AMDGPU::isSGPR(), isSGPRToVGPRCopy(), isSubRegOf(), isSVERegOp(), isUnsafeToMoveAcross(), llvm::HexagonInstrInfo::isValidOffset(), isValidRegDefOf(), isValidRegUseOf(), isVCmpXWritesExec(), isVGPRToSGPRCopy(), isVRegCompatibleReg(), llvm::MachineInstr::killsRegister(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::LivePhysRegs::LivePhysRegs(), llvm::LiveRegUnits::LiveRegUnits(), loadM0FromVGPR(), loadMBUFScalarOperandsFromVGPR(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::MipsInstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::SIInstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadRegFromStackSlot(), loadRegPairFromStackSlot(), lookupCandidateBaseReg(), llvm::SITargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::XtensaTargetLowering::LowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::AMDGPUCallLowering::lowerCall(), llvm::ARMCallLowering::lowerCall(), llvm::M68kCallLowering::lowerCall(), llvm::MipsCallLowering::lowerCall(), llvm::RISCVCallLowering::lowerCall(), llvm::X86CallLowering::lowerCall(), llvm::LoongArchTargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::VETargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::TargetInstrInfo::lowerCopy(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::AMDGPUCallLowering::lowerFormalArgumentsKernel(), llvm::InlineAsmLowering::lowerInlineAsm(), llvm::SITargetLowering::LowerReturn(), lowerRISCVVMachineInstrToMCInst(), llvm::AMDGPUCallLowering::lowerTailCall(), llvm::RISCVRegisterInfo::lowerVRELOAD(), llvm::RISCVRegisterInfo::lowerVSPILL(), lowerWaveReduce(), llvm::GenericUniformityAnalysisImpl< ContextT >::markDefsDivergent(), llvm::MipsRegInfoRecord::MipsRegInfoRecord(), llvm::MachineInstr::modifiesRegister(), onlyAllocateTileRegisters(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::TargetLowering::ParseConstraints(), llvm::SITargetLowering::passSpecialInputs(), patchMatchingInput(), performCopyPropagation(), llvm::X86InstrInfo::preservesZeroValueInReg(), llvm::print(), llvm::MIPrinter::print(), llvm::LiveDebugVariables::LDVImpl::print(), llvm::RegisterBankInfo::OperandsMapper::print(), llvm::RegisterBank::print(), llvm::PhysicalRegisterUsageInfo::print(), llvm::MachineFunction::print(), llvm::LiveIntervalUnion::print(), llvm::MachineOperand::print(), llvm::MachineInstr::print(), llvm::MachineBasicBlock::print(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::AVRAsmPrinter::PrintAsmOperand(), printCFI(), printCFIRegister(), printCustomRegMask(), PrintNodeInfo(), llvm::ARMAsmPrinter::printOperand(), llvm::printReg(), llvm::printRegClassOrBank(), printRegClassOrBank(), printRegFlags(), printRegMIR(), llvm::printRegUnit(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::MachineOperand::printSubRegIdx(), llvm::printVRegOrUnit(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::XCoreFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SIFrameLowering::processFunctionBeforeFrameIndicesReplaced(), llvm::PrologEpilogSGPRSpillBuilder::PrologEpilogSGPRSpillBuilder(), llvm::PPCInstrInfo::promoteInstr32To64ForElimEXTSW(), llvm::PSetIterator::PSetIterator(), llvm::MachineInstr::readsRegister(), llvm::TargetInstrInfo::reassociateOps(), llvm::RegPressureTracker::recede(), llvm::recomputeLivenessFlags(), llvm::MachineRegisterInfo::recomputeRegClass(), reduceDbgValsForwardScan(), llvm::LiveInterval::refineSubRanges(), llvm::registerDefinedBetween(), llvm::MachineInstr::registerDefIsDead(), regMaskFromTemplate(), regToString(), llvm::TargetInstrInfo::reMaterialize(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), llvm::LiveIntervals::removeAllRegUnitsForPhysReg(), llvm::LiveIntervals::removePhysRegDefAt(), llvm::LivePhysRegs::removeReg(), llvm::LiveRegUnits::removeReg(), llvm::LiveIntervals::repairIntervalsInRange(), replaceFrameIndex(), llvm::PPCInstrInfo::replaceInstrOperandWithImm(), llvm::MachineRegisterInfo::replaceRegWith(), llvm::reportMismatch(), llvm::R600InstrInfo::reserveIndirectRegisters(), reservePrivateMemoryRegs(), llvm::MachineRegisterInfo::reserveReg(), llvm::AArch64FrameLowering::resetCFIToInitialState(), resetRegMaskBit(), llvm::SystemZELFFrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::restoreCalleeSavedRegisters(), llvm::AArch64FrameLowering::restoreCalleeSavedRegisters(), llvm::ARMFrameLowering::restoreCalleeSavedRegisters(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::CSKYFrameLowering::restoreCalleeSavedRegisters(), llvm::M68kFrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::XtensaFrameLowering::restoreCalleeSavedRegisters(), llvm::rewriteT2FrameIndex(), llvm::RISCVTargetLowering::RISCVTargetLowering(), llvm::RISCVVectorMaskDAGMutation::RISCVVectorMaskDAGMutation(), llvm::rdf::CopyPropagation::run(), llvm::SelectionDAGISel::runOnMachineFunction(), RemoveLoadsIntoFakeUses::runOnMachineFunction(), llvm::GCNRegPressurePrinter::runOnMachineFunction(), llvm::LiveDebugVariables::LDVImpl::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSAImpl(), scavengeFrameVirtualRegsInBlock(), scavengeVReg(), llvm::RISCVDAGToDAGISel::Select(), selectCopy(), llvm::InstructionSelect::selectMachineFunction(), selectMergeValues(), selectUnmergeValues(), llvm::FunctionLoweringInfo::set(), setAliasRegs(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::MachineInstr::setPhysRegsDeadExcept(), llvm::CoalescerPair::setRegisters(), llvm::MIRParserImpl::setupRegisterInfo(), sgprPairNumber(), shareSameRegisterFile(), llvm::SIMachineFunctionInfo::shiftWwmVGPRsToLowestRange(), llvm::PPCInstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldReduceRegisterPressure(), shouldUseFrameHelper(), llvm::yaml::SIMachineFunctionInfo::SIMachineFunctionInfo(), SinkingPreventsImplicitNullCheck(), llvm::SITargetLowering::SITargetLowering(), llvm::SystemZELFFrameLowering::spillCalleeSavedRegisters(), llvm::SystemZXPLINKFrameLowering::spillCalleeSavedRegisters(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::ARMFrameLowering::spillCalleeSavedRegisters(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::CSKYFrameLowering::spillCalleeSavedRegisters(), llvm::LoongArchFrameLowering::spillCalleeSavedRegisters(), llvm::M68kFrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::XtensaFrameLowering::spillCalleeSavedRegisters(), spillVGPRtoAGPR(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::stableHashValue(), STATISTIC(), storeRegPairToStackSlot(), llvm::MipsSEInstrInfo::storeRegToStack(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::MipsInstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SIInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), stripValuesNotDefiningMask(), llvm::MachineOperand::substPhysReg(), llvm::MachineOperand::substVirtReg(), TrackDefUses(), transferImplicitOperands(), tryChangeVGPRtoSGPRinCopy(), llvm::tryFoldSPUpdateIntoPushPop(), llvm::tryPressure(), tryToFindRegisterToRename(), tryToGetTargetInfo(), llvm::X86InstrInfo::unfoldMemoryOperand(), unsupportedBinOp(), llvm::LiveIntervals::HMEditor::updateAllRanges(), updateLiveIn(), UpdateOperandRegClass(), updateOperandRegConstraints(), updatePhysDepsDownwards(), updatePhysDepsUpwards(), UpdatePredRedefs(), llvm::RegisterBank::verify(), llvm::RegisterBankInfo::verify(), llvm::VirtRegAuxInfo::weightCalcHelper(), and llvm::X86RegisterBankInfo::X86RegisterBankInfo().

UseBlockFreqInfo