LLVM  8.0.0svn
Macros | Functions | Variables
MachineSink.cpp File Reference
#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/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/DebugInfoMetadata.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"
 

Functions

 STATISTIC (NumSunk, "Number of machine instructions sunk")
 
 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 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 void performSink (MachineInstr &MI, MachineBasicBlock &SuccToSinkTo, MachineBasicBlock::iterator InsertPos)
 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)
 

Variables

static cl::opt< boolSplitEdges ("machine-sink-split", cl::desc("Split critical edges during machine sinking"), cl::init(true), cl::Hidden)
 
static cl::opt< boolUseBlockFreqInfo ("machine-sink-bfi", cl::desc("Use block frequency info to find successors to sink"), cl::init(true), cl::Hidden)
 
static cl::opt< unsignedSplitEdgeProbabilityThreshold ("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)
 
 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 56 of file MachineSink.cpp.

Function Documentation

◆ addLiveIns()

LiveInRegUnits addLiveIns ( MBB  )

◆ available()

return !LiveInRegUnits available ( Reg  )

◆ clearKillFlags()

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

◆ getSingleLiveInSuccBB() [1/2]

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

Definition at line 975 of file MachineSink.cpp.

References SI, and llvm::MachineBasicBlock::successors().

Referenced by getSingleLiveInSuccBB(), and hasRegisterDependency().

◆ getSingleLiveInSuccBB() [2/2]

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

Definition at line 1002 of file MachineSink.cpp.

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

◆ performSink()

static void performSink ( MachineInstr MI,
MachineBasicBlock SuccToSinkTo,
MachineBasicBlock::iterator  InsertPos 
)
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 700 of file MachineSink.cpp.

References llvm::TargetInstrInfo::analyzeBranchPredicate(), llvm::TargetInstrInfo::getMemOpBaseRegImmOfs(), llvm::MachineInstr::getParent(), llvm::MachineInstr::isPredicable(), llvm::MachineInstr::mayLoad(), llvm::LLVMContext::MD_make_implicit, llvm::MachineBasicBlock::pred_begin(), llvm::PPC::PRED_EQ, llvm::PPC::PRED_NE, and llvm::MachineBasicBlock::pred_size().

Referenced by performSink().

◆ STATISTIC() [1/4]

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

◆ STATISTIC() [2/4]

STATISTIC ( NumSplit  ,
"Number of critical edges split  
)

◆ STATISTIC() [3/4]

STATISTIC ( NumCoalesces  ,
"Number of copies coalesced"   
)

◆ STATISTIC() [4/4]

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

◆ updateLiveIn()

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

Variable Documentation

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 191 of file MachineSink.cpp.

◆ false

Machine code false

Definition at line 191 of file MachineSink.cpp.

◆ Reg

unsigned Reg

Definition at line 967 of file MachineSink.cpp.

Referenced by llvm::AArch64CallLowering::AArch64CallLowering(), llvm::LiveRegUnits::accumulate(), llvm::LiveRegUnits::accumulateUsedDefed(), addEpilogOnlyR10(), addExclusiveRegPair(), llvm::RegsForValue::AddInlineAsmOperands(), llvm::LiveIntervals::addKillFlags(), llvm::MachineBasicBlock::addLiveIn(), llvm::addLiveIns(), llvm::FunctionLoweringInfo::AddLiveOutRegInfo(), llvm::DwarfExpression::addMachineReg(), llvm::DwarfExpression::addMachineRegExpression(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), addRegsToSet(), addSaveRestoreRegs(), llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), llvm::LivePhysRegs::addUses(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::X86RegisterInfo::adjustStackMapLiveOutMask(), llvm::MipsSEInstrInfo::adjustStackPtr(), llvm::RegPressureTracker::advance(), llvm::GCNDownwardRPTracker::advanceToNext(), llvm::RegAllocBase::allocatePhysRegs(), llvm::CCState::AllocateReg(), allocateSGPR32InputImpl(), allocateSpecialEntryInputVGPRs(), allocateSystemSGPRs(), allocateVGPR32Input(), allPhiOperandsUndefined(), llvm::AMDGPUInstructionSelector::AMDGPUInstructionSelector(), llvm::CCState::AnalyzeArguments(), AnalyzeArguments(), llvm::analyzeArguments(), AnalyzeReturnValues(), llvm::analyzeStandardArguments(), llvm::MachineOperandIteratorBase::analyzeVirtReg(), AnyAliasLiveIn(), llvm::RegisterBankInfo::applyDefaultMapping(), areCandidatesToMergeOrPair(), assignCalleeSavedSpillSlots(), AssignProtectedObjSet(), llvm::LivePhysRegs::available(), llvm::AVROperand::AVROperand(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::X86InstrInfo::breakPartialRegDependency(), llvm::MachineIRBuilderBase::buildMerge(), llvm::BuildMI(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::MachineIRBuilderBase::buildUnmerge(), llvm::RegPressureTracker::bumpDeadDefs(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), llvm::ARM::WinEH::RuntimeFunction::C(), llvm::LiveRangeCalc::calculate(), llvm::SIInstrInfo::calculateLDSSpillAddress(), calculateSetFPREG(), llvm::calculateSpillWeightsAndHints(), CallingConvSupported(), canBeFeederToNewValueJump(), canUseSiblingCall(), llvm::CC_ARM_AAPCS_Custom_Aggregate(), CC_Lanai32_VarArg(), CC_MipsO32(), CC_MipsO32_FP64(), CC_RISCV(), CC_RISCVAssign2XLen(), CC_Sparc64_Full(), CC_Sparc64_Half(), CC_Sparc_Assign_Ret_Split_64(), CC_Sparc_Assign_Split_64(), llvm::CC_SystemZ_I128Indirect(), llvm::CC_X86_32_MCUInReg(), llvm::CC_X86_32_RegCall_Assign2Regs(), llvm::CC_X86_32_VectorCall(), llvm::CC_X86_64_VectorCall(), llvm::CC_X86_VectorCallAssignRegister(), llvm::AArch64TargetLowering::CCAssignFnForReturn(), llvm::ARMTargetLowering::CCAssignFnForReturn(), llvm::TargetRegisterInfo::checkAllSuperRegsMarked(), CheckBaseRegAndIndexRegAndScale(), CheckForPhysRegDependency(), checkScale(), llvm::MachineInstr::clearRegisterDeads(), llvm::X86_MC::X86MCInstrAnalysis::clearsSuperRegisters(), llvm::MachineRegisterInfo::clearVirtRegs(), CloneDebugValues(), llvm::MachineRegisterInfo::cloneVirtualRegister(), collectVirtualRegUses(), llvm::ScheduleDAGMILive::collectVRegUses(), computeBranchTargetAndInversion(), computeBytesPoppedByCalleeForSRet(), ComputeCommonTailLength(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::ScheduleDAGSDNodes::computeOperandLatency(), llvm::TargetSchedModel::computeOutputLatency(), llvm::constrainOperandRegClass(), llvm::constrainRegToClass(), llvm::constrainSelectedInstRegOperands(), llvm::LivePhysRegs::contains(), ContainsReg(), llvm::MIRPrinter::convert(), convertFPR32ToFPR64(), llvm::MIRPrinter::convertStackObjects(), llvm::ARMBaseInstrInfo::convertToThreeAddress(), copyBytesForDefRange(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), createAArch64MCAsmInfo(), createARMMCAsmInfo(), llvm::createBreakFalseDeps(), llvm::LiveRangeCalc::createDeadDefs(), llvm::LiveIntervals::createEmptyInterval(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), llvm::createGreedyRegisterAllocator(), llvm::createHexagonHardwareLoops(), llvm::MachineRegisterInfo::createIncompleteVirtualRegister(), llvm::createLanaiDelaySlotFillerPass(), createPHIsForSelects(), createPPCMCAsmInfo(), llvm::createR600ISelDag(), llvm::MCOperand::createReg(), llvm::createRegUsageInfoCollector(), createSegmentsForValues(), llvm::createSIFixWWMLivenessPass(), llvm::createSILowerI1CopiesPass(), llvm::createSIWholeQuadModePass(), llvm::createSparcDelaySlotFillerPass(), createSparcMCAsmInfo(), createSparcV9MCAsmInfo(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::createX86RetpolineThunksPass(), llvm::createXCoreFrameToArgsOffsetEliminationPass(), llvm::createXCoreISelDag(), CriticalPathStep(), DecodeACC64DSPRegisterClass(), DecodeAFGR64RegisterClass(), DecodeCCRRegisterClass(), DecodeCOP0RegisterClass(), DecodeCOP2RegisterClass(), DecodeCPRegsRegisterClass(), DecodeDFPRegsRegisterClass(), DecodeFCCRegisterClass(), DecodeFGR32RegisterClass(), DecodeFGR64RegisterClass(), DecodeFGRCCRegisterClass(), DecodeFMem(), DecodeFMem2(), DecodeFMem3(), DecodeFMemCop2MMR6(), DecodeFMemCop2R6(), DecodeFMemMMR2(), DecodeFPR32CRegisterClass(), DecodeFPR32RegisterClass(), DecodeFPR64CRegisterClass(), DecodeFPR64RegisterClass(), DecodeFPRegsRegisterClass(), DecodeGPR32RegisterClass(), DecodeGPR64RegisterClass(), DecodeGPRCRegisterClass(), DecodeGPRMM16MovePRegisterClass(), DecodeGPRMM16RegisterClass(), DecodeGPRMM16ZeroRegisterClass(), DecodeGPRRegisterClass(), DecodeGRRegsRegisterClass(), DecodeHI32DSPRegisterClass(), DecodeI64RegsRegisterClass(), DecodeIntRegsRegisterClass(), DecodeLO32DSPRegisterClass(), DecodeLoadByte15(), DecodeMem(), DecodeMemEVA(), DecodeMemMMGPImm7Lsl2(), DecodeMemMMImm12(), DecodeMemMMImm16(), DecodeMemMMImm4(), DecodeMemMMImm9(), DecodeMemMMSPImm5Lsl2(), DecodeMSA128BRegisterClass(), DecodeMSA128DRegisterClass(), DecodeMSA128HRegisterClass(), DecodeMSA128Mem(), DecodeMSA128WRegisterClass(), DecodeMSACtrlRegisterClass(), DecodeQFPRegsRegisterClass(), DecodeRRegsRegisterClass(), definesFullReg(), DeleteTriviallyDeadInstructions(), llvm::RegisterOperands::detectDeadDefs(), llvm::SystemZFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::HexagonFrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), determineLastCalleeSave(), llvm::LiveRangeEdit::didRematerialize(), doCandidateWalk(), llvm::SplitEditor::dump(), llvm::LanaiRegisterInfo::eliminateFrameIndex(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), emitAligningInstructions(), llvm::AArch64FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::InstrEmitter::EmitDbgLabel(), emitDebugValueComment(), emitEncodingByte(), llvm::SIFrameLowering::emitEpilogue(), emitIncrement(), llvm::MipsELFStreamer::EmitInstruction(), llvm::X86AsmPrinter::EmitInstruction(), emitPostSt(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::SystemZFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), emitRegUpdate(), llvm::X86FrameLowering::emitSPUpdate(), llvm::MipsAsmPrinter::EmitStartOfAsmFile(), EnsureStackAlignment(), llvm::RegScavenger::enterBasicBlockEnd(), llvm::MachineInstr::eraseFromParentAndMarkDBGValuesForRemoval(), eraseGPOpnd(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::HexagonEvaluator::evaluate(), Expand2AddrUndef(), expandLoadStackGuard(), expandMOV32r1(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::PPCInstrInfo::expandPostRAPseudo(), llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), llvm::f64AssignAAPCS(), llvm::f64AssignAPCS(), llvm::f64RetAssign(), llvm::FastISel::fastEmitZExtFromI1(), llvm::finalizeBundle(), findDeadCallerSavedReg(), findFirstFreeSGPR(), findHoistingInsertPosAndDeps(), findNextInsertLocation(), findPrivateSegmentWaveByteOffsetRegIndex(), llvm::MachineInstr::findRegisterDefOperandIdx(), findScratchNonCalleeSaveRegister(), findStartOfTree(), findSurvivorBackwards(), findTemporariesForLR(), llvm::RegScavenger::FindUnusedReg(), llvm::SplitEditor::finish(), llvm::ScheduleDAGInstrs::fixupKills(), flagsNeedToBePreservedBeforeTheTerminators(), llvm::SystemZInstrInfo::FoldImmediate(), llvm::SIInstrInfo::FoldImmediate(), llvm::ARMBaseInstrInfo::FoldImmediate(), llvm::PPCInstrInfo::FoldImmediate(), foldImmediates(), foldMaskedShiftToBEXTR(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), forceReg(), llvm::TargetInstrInfo::genAlternativeCodeSequence(), llvm::ARMAsmBackendDarwin::generateCompactUnwindEncoding(), llvm::MCRegisterInfo::get(), GetAEABIUnwindPersonalityName(), getAllSGPRs(), llvm::RegBankSelect::getAnalysisUsage(), getARClassRegisterMask(), llvm::ARMBaseRegisterInfo::getBaseRegister(), llvm::getBRegFromDReg(), getComparePred(), llvm::SelectionDAG::getCopyToReg(), llvm::getCRFromCRBit(), llvm::SelectionDAGBuilder::getCurDebugLoc(), llvm::RegScavenger::getCurrentPosition(), getDataDeps(), llvm::MachineIRBuilderBase::getDebugLoc(), getDepthOfOptCmov(), llvm::MachineIRBuilderBase::getDestFromArg(), llvm::getDRegFromBReg(), getDwarfRegNum(), llvm::MipsFunctionInfo::getEhDataRegFI(), llvm::SystemZMC::getFirstReg(), getFrameIndexOperandNum(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::AggressiveAntiDepState::GetGroupRegs(), llvm::BPFTargetLowering::getHasJmpExt(), llvm::R600InstrInfo::getIndirectIndexBegin(), llvm::RegisterBankInfo::getInstrMappingImpl(), getInstrVecReg(), llvm::LiveIntervals::getInterval(), llvm::MipsFunctionInfo::getISRRegFI(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), llvm::LegalizerHelper::getLegalizerInfo(), getLit64Encoding(), getLiveLanesAt(), llvm::FunctionLoweringInfo::GetLiveOutRegInfo(), getLoadStoreOffsetAlign(), getLSMultipleTransferSize(), llvm::HexagonMCCodeEmitter::getMachineOpValue(), llvm::MipsMCCodeEmitter::getMachineOpValue(), getMax32BitSubRegister(), getMaxCalleeSavedReg(), llvm::RegisterBankInfo::getMinimalPhysRegClass(), getMopState(), getNextRegister(), getNextVectorRegister(), llvm::GCNRegPressure::getOccupancy(), getOffsetFromIndices(), llvm::PPCInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::getOperandLatency(), getOpIdxForMO(), llvm::SIInstrInfo::getOpRegClass(), getOrExecSource(), llvm::X86InstrInfo::getPartialRegUpdateClearance(), getPHIDeps(), getPHIDestReg(), llvm::ARMBaseInstrInfo::getPredicate(), getPrefixes(), getReassignedChan(), llvm::BitTracker::MachineEvaluator::getRef(), llvm::RegisterSDNode::getReg(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::ARMBaseRegisterInfo::getRegAllocationHints(), llvm::TargetRegisterInfo::getRegAllocationHints(), llvm::RegisterBankInfo::getRegBank(), llvm::MachineRegisterInfo::getRegBankOrNull(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineInstr::getRegClassConstraintEffectForVReg(), getRegClassForUnfoldedLoad(), llvm::MachineRegisterInfo::getRegClassOrNull(), llvm::MachineRegisterInfo::getRegClassOrRegBank(), llvm::FastISel::getRegForValue(), llvm::MachineIRBuilderBase::getRegFromArg(), llvm::LanaiTargetLowering::getRegisterByName(), llvm::SparcTargetLowering::getRegisterByName(), llvm::AVRTargetLowering::getRegisterByName(), llvm::HexagonTargetLowering::getRegisterByName(), llvm::SITargetLowering::getRegisterByName(), llvm::MipsTargetLowering::getRegisterByName(), llvm::PPCTargetLowering::getRegisterByName(), llvm::X86TargetLowering::getRegisterByName(), llvm::ARCInstrInfo::getRegisterInfo(), llvm::XCoreInstrInfo::getRegisterInfo(), llvm::MipsMCCodeEmitter::getRegisterListOpValue(), llvm::PPCInstrInfo::getRegNumForOperand(), llvm::AggressiveAntiDepState::GetRegRefs(), llvm::SystemZFrameLowering::getRegSpillOffset(), getRegsUsedByPHIs(), llvm::ExecutionDomainFix::getRequiredProperties(), llvm::WebAssemblyRegisterInfo::getReservedRegs(), llvm::MipsRegisterInfo::getReservedRegs(), llvm::ARMBaseRegisterInfo::getReservedRegs(), getRetpolineSymbol(), getSingleDef(), llvm::PhysRegSUOper::getSparseSetIndex(), getSpecialRegForName(), llvm::R600InstrInfo::getSrcs(), llvm::MCRegisterInfo::getSubReg(), llvm::MCRegisterInfo::getSubRegIndex(), llvm::SelectionDAG::getTargetConstantPool(), llvm::BPFTargetLowering::getTargetNodeName(), getTOCEntry(), llvm::MipsTargetLowering::getTypeForExtReturn(), getUnconditionalBrDisp(), getUnderlyingArgReg(), getUnderlyingObjects(), llvm::ARMInstrInfo::getUnindexedOpcode(), getv64i1Argument(), GetVRegRenameMap(), llvm::getWRegFromXReg(), llvm::getXRegFromWReg(), llvm::MipsCallLowering::MipsHandler::handle(), llvm::CallLowering::handleAssignments(), llvm::CCState::HandleByVal(), handleNormalInst(), llvm::LiveVariables::HandleVirtRegDef(), hasAnyNonFlatUseOfReg(), HasArgumentDef(), HasConditionalBranch(), llvm::MCInstrDesc::hasImplicitUseOfPhysReg(), llvm::LiveIntervals::hasInterval(), hasPressureSet(), llvm::MachineInstr::hasRegisterImplicitUseOperand(), HasSecRelSymbolRef(), llvm::FastISel::hasTrivialKill(), llvm::HexagonAsmPrinter::HexagonProcessInstruction(), hoistAndMergeSGPRInits(), llvm::RegAllocBase::init(), INITIALIZE_PASS(), llvm::AArch64_MC::initLLVMToCVRegMapping(), llvm::X86_MC::initLLVMToSEHAndCVRegMapping(), llvm::WebAssemblyFunctionInfo::initWARegs(), llvm::HexagonMCInstrInfo::inRange(), llvm::HexagonFrameLowering::insertCFIInstructions(), insertCSRRestores(), insertCSRSaves(), llvm::SIInstrInfo::insertEQ(), InsertFPConstInst(), InsertFPImmInst(), InsertLDR_STR(), llvm::SIInstrInfo::insertNE(), llvm::AArch64InstrInfo::insertOutlinedCall(), InsertSPConstInst(), InsertSPImmInst(), llvm::MachineRegisterInfo::insertVRegByName(), InstructionStoresToFI(), llvm::FunctionLoweringInfo::InvalidatePHILiveOutRegInfo(), llvm::WebAssembly::isChild(), llvm::MachineInstr::isConstantValuePHI(), isCopyFeedingInvariantStore(), llvm::IsCPSRDead< MCInst >(), isCrossCopy(), isDbgValueDescribedByReg(), isDefBetween(), isEAXLiveIn(), isEFLAGSLive(), isEqual(), llvm::AArch64InstrInfo::isExynosResetFast(), llvm::rdf::TargetOperandInfo::isFixedReg(), llvm::AMDGPUTargetLowering::isFsqrtCheap(), isFullCopyOf(), isHighLatencyCPSR(), isImmU16(), isImplicitlyDef(), isImplicitOperandIn(), isInstrUniform(), isInvariantStore(), llvm::AMDGPU::isKernel(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::SelectionDAGISel::IsLegalToFold(), llvm::MachineBasicBlock::isLiveIn(), llvm::LanaiInstrInfo::isLoadFromStackSlotPostFE(), llvm::ARMBaseInstrInfo::isLoadFromStackSlotPostFE(), llvm::X86InstrInfo::isLoadFromStackSlotPostFE(), isMergeableLdStUpdate(), isOperandOf(), llvm::R600InstrInfo::isPredicated(), llvm::ARMBaseInstrInfo::isProfitableToIfCvt(), llvm::isPushOpcode(), isRematerializable(), llvm::AArch64RegisterInfo::isReservedReg(), llvm::MachineRegisterInfo::isReservedRegUnit(), IsSafeAndProfitableToMove(), IsSafeToMove(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), IsSmallMemAccess(), isSortedByValueNo(), isSSA(), llvm::X86InstrInfo::isStoreToStackSlotPostFE(), llvm::X86InstrInfo::isSubregFoldable(), isSupportedType(), llvm::isTriviallyDead(), isTwoAddrUse(), llvm::SITargetLowering::isTypeDesirableForOp(), llvm::MachineRegisterInfo::isUpdatedCSRsInitialized(), llvm::AggressiveAntiDepState::LeaveGroup(), llvm::TargetRegisterInfo::legalclasstypes_end(), llvm::LegalizerHelper::legalizeInstrStep(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::Mips16InstrInfo::loadImmediate(), llvm::MipsSEInstrInfo::loadRegFromStack(), llvm::ARMCallLowering::lowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), LowerCMP_SWAP(), llvm::PPCRegisterInfo::lowerCRBitRestore(), llvm::PPCRegisterInfo::lowerCRBitSpilling(), llvm::PPCRegisterInfo::lowerCRRestore(), llvm::PPCRegisterInfo::lowerCRSpilling(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), lowerFCOPYSIGN64(), llvm::ARMCallLowering::lowerFormalArguments(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::R600TargetLowering::LowerFormalArguments(), llvm::Nios2TargetLowering::LowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::HexagonTargetLowering::LowerINLINEASM(), llvm::BPFTargetLowering::LowerOperation(), llvm::RISCVTargetLowering::LowerOperation(), llvm::AArch64CallLowering::lowerReturn(), llvm::SystemZTargetLowering::LowerReturn(), llvm::SparcTargetLowering::LowerReturn_32(), llvm::LanaiTargetLowering::LowerRETURNADDR(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::SelectionDAGBuilder::LowerStatepoint(), LowerToTLSExecModel(), LowerVASTART(), LowerVectorINT_TO_FP(), llvm::PPCRegisterInfo::lowerVRSAVERestore(), llvm::PPCRegisterInfo::lowerVRSAVESpilling(), makeCombineInst(), mapWasmLandingPadIndex(), MatchCoprocessorOperandName(), MatchingStackOffset(), matchPair(), matchSVEPredicateVectorRegName(), mayCombineMisaligned(), MaySpeculate(), mayTailCallThisCC(), mayUsePostIncMode(), mergeOperations(), llvm::MipsRegInfoRecord::MipsRegInfoRecord(), MoveAndTeeForMultiUse(), llvm::SIInstrInfo::moveToVALU(), needToReserveScavengingSpillSlots(), llvm::AllocationOrder::next(), nextReg(), llvm::CriticalAntiDepBreaker::Observe(), llvm::AggressiveAntiDepBreaker::Observe(), llvm::BitTracker::RegisterCell::operator!=(), llvm::VirtReg2IndexFunctor::operator()(), llvm::pdb::operator<<(), llvm::BitTracker::BitRef::operator==(), llvm::X86InstrInfo::optimizeLoadInstr(), llvm::TargetLowering::parametersInCSRMatch(), llvm::MIRParserImpl::parseCalleeSavedRegister(), parseOperands(), llvm::MIRParserImpl::parseRegisterInfo(), Passv64i1ArgInRegs(), llvm::R600TargetLowering::PerformDAGCombine(), phiHasBreakDef(), phiHasVGPROperands(), llvm::rdf::PhysicalRegisterInfo::PhysicalRegisterInfo(), preservesValueOf(), llvm::VirtRegMap::print(), llvm::LiveIntervals::print(), printAsmMRegister(), llvm::AVRAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::SIScheduleBlock::printDebug(), printExtendedName(), llvm::AArch64InstPrinter::printGPR64as32(), llvm::ARMInstPrinter::printGPRPairOperand(), llvm::AArch64InstPrinter::printGPRSeqPairsClassOperand(), llvm::ARMInstPrinter::printInst(), llvm::AArch64AppleInstPrinter::printInst(), llvm::printLivesAt(), llvm::AArch64InstPrinter::printMRSSystemRegister(), llvm::AArch64InstPrinter::printMSRSystemRegister(), llvm::NVPTXInstPrinter::printOperand(), llvm::ARMInstPrinter::printOperand(), llvm::PPCInstPrinter::printOperand(), llvm::AArch64InstPrinter::printOperand(), llvm::ARMAsmPrinter::printOperand(), printOperand(), llvm::AArch64InstPrinter::printPostIncOperand(), llvm::printReg(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), 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::PPCFrameLowering::processFunctionBeforeFrameFinalized(), ProcessSourceNode(), pushDepHeight(), llvm::MachineInstr::readsVirtualRegister(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::RegPressureTracker::recede(), llvm::GCNHazardRecognizer::RecedeCycle(), llvm::recomputeLivenessFlags(), recoverFramePointer(), RefineErrorLoc(), llvm::R600SchedStrategy::releaseBottomNode(), llvm::LivePhysRegs::removeDefs(), removeExternalCFGEdges(), llvm::LiveIntervals::removeInterval(), llvm::LiveVariables::VarInfo::removeKill(), llvm::MachineBasicBlock::removeLiveIn(), ReplaceFrameIndex(), llvm::PPCInstrInfo::replaceInstrWithLI(), llvm::ARMTargetLowering::ReplaceNodeResults(), llvm::PPCRegisterInfo::requiresVirtualBaseRegisters(), llvm::StackMaps::reset(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::AVRFrameLowering::restoreCalleeSavedRegisters(), llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters(), llvm::SystemZFrameLowering::restoreCalleeSavedRegisters(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), llvm::X86FrameLowering::restoreCalleeSavedRegisters(), llvm::PPCFrameLowering::restoreCalleeSavedRegisters(), resultTests(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::Localizer::runOnMachineFunction(), llvm::ExecutionDomainFix::runOnMachineFunction(), llvm::LiveVariables::runOnMachineFunction(), llvm::RegScavenger::scavengeRegisterBackwards(), llvm::FastISel::selectBitCast(), llvm::FastISel::selectGetElementPtr(), llvm::AVRDAGToDAGISel::SelectInlineAsmMemoryOperand(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectOperator(), llvm::FastISel::selectPatchpoint(), llvm::WebAssemblyFunctionInfo::setBasePointerVreg(), llvm::MachineRegisterInfo::setCalleeSavedRegs(), llvm::SparcMachineFunctionInfo::setGlobalBaseReg(), llvm::Nios2FunctionInfo::setGlobalBaseReg(), llvm::X86MachineFunctionInfo::setGlobalBaseReg(), llvm::SystemZMachineFunctionInfo::setHighSavedGPR(), llvm::SystemZMachineFunctionInfo::setLowSavedGPR(), llvm::UnwindOpcodeAssembler::setPersonality(), llvm::MCOperand::setReg(), llvm::MachineRegisterInfo::setRegBank(), llvm::MachineRegisterInfo::setRegClass(), llvm::MachineRegisterInfo::setRegClassOrRegBank(), setRequiredFeatureString(), llvm::X86MachineFunctionInfo::setRestoreBasePointer(), llvm::SIMachineFunctionInfo::setScratchRSrcReg(), llvm::SIMachineFunctionInfo::setScratchWaveOffsetReg(), llvm::MipsFunctionInfo::setSRetReturnReg(), llvm::HexagonMachineFunctionInfo::setSRetReturnReg(), llvm::LanaiMachineFunctionInfo::setSRetReturnReg(), llvm::SparcMachineFunctionInfo::setSRetReturnReg(), llvm::MSP430MachineFunctionInfo::setSRetReturnReg(), llvm::Nios2FunctionInfo::setSRetReturnReg(), llvm::X86MachineFunctionInfo::setSRetReturnReg(), llvm::SIMachineFunctionInfo::setStackPtrOffsetReg(), llvm::SIMachineFunctionInfo::setTIDReg(), llvm::MIRParserImpl::setupRegisterInfo(), llvm::WebAssemblyFunctionInfo::setVarargBufferVreg(), SimplifyShortImmForm(), SimplifyShortMoveForm(), llvm::SIScheduleBlockScheduler::SIScheduleBlockScheduler(), llvm::AVRFrameLowering::spillCalleeSavedRegisters(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::Thumb1FrameLowering::spillCalleeSavedRegisters(), llvm::SystemZFrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), llvm::MSP430FrameLowering::spillCalleeSavedRegisters(), llvm::PPCFrameLowering::spillCalleeSavedRegisters(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::CriticalAntiDepBreaker::StartBlock(), llvm::AggressiveAntiDepBreaker::StartBlock(), llvm::LiveRegUnits::stepBackward(), llvm::LivePhysRegs::stepForward(), false::Chain::str(), subRangeLiveAt(), swapMIOperands(), swapRegAndNonRegOperand(), llvm::RegBankSelect::RepairingPlacement::switchTo(), llvm::SystemZFrameLowering::SystemZFrameLowering(), llvm::SystemZInstrInfo::SystemZInstrInfo(), tieOpsIfNeeded(), toCallerWindow(), toggleKills(), toString(), llvm::BitTracker::trace(), TrackDefUses(), llvm::HexagonRegisterInfo::trackLivenessAfterRegAlloc(), tryToElideArgumentCopy(), llvm::rdf::DataFlowGraph::unpack(), unpackF64OnRV32DSoftABI(), UnpackFromArgumentSlot(), llvm::LiveIntervals::HMEditor::updateAllRanges(), updateLiveness(), llvm::HexagonPacketizerList::updateOffset(), UpdateOperandRegClass(), updateOperandRegConstraints(), updatePhysDepsDownwards(), updatePhysDepsUpwards(), UpdatePredRedefs(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::FastISel::updateValueMap(), usedAsAddr(), llvm::PPCInstrInfo::useMachineCombiner(), usesExtendedRegister(), llvm::SIInstrInfo::verifyInstruction(), VerifyLowRegs(), llvm::MachineRegisterInfo::verifyUseList(), VisitGlobalVariableForEmission(), llvm::VirtRegAuxInfo::weightCalcHelper(), X86ChooseCmpImmediateOpcode(), and llvm::X86TargetStreamer::X86TargetStreamer().

◆ sinking

Machine code sinking

Definition at line 191 of file MachineSink.cpp.

◆ 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

Initial value:
{
LiveRegUnits LiveInRegUnits(*TRI)
unsigned const TargetRegisterInfo * TRI
A set of register units used to track register liveness.
Definition: LiveRegUnits.h:31

Definition at line 968 of file MachineSink.cpp.

Referenced by llvm::AArch64FrameLowering::AArch64FrameLowering(), llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), addEpilogOnlyR10(), addExclusiveRegPair(), addLiveInRegs(), llvm::TargetLoweringBase::addRegisterClass(), llvm::PPCFrameLowering::addScavengingSpillSlot(), llvm::RegPressureTracker::advance(), llvm::SIMachineFunctionInfo::allocateSGPRSpillToVGPR(), llvm::AllocationOrder::AllocationOrder(), llvm::HexagonTargetLowering::allowsMisalignedMemoryAccesses(), llvm::analyzeArguments(), llvm::X86InstrInfo::analyzeBranchPredicate(), llvm::HexagonSubtarget::CallMutation::apply(), llvm::ARCFrameLowering::ARCFrameLowering(), areCandidatesToMergeOrPair(), llvm::LanaiInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), AssignProtectedObjSet(), llvm::CodeViewDebug::beginFunctionImpl(), llvm::RegPressureTracker::bumpDownwardPressure(), llvm::RegPressureTracker::bumpUpwardPressure(), CalcNodeSethiUllmanNumber(), llvm::LiveRangeCalc::calculate(), llvm::calculateDbgEntityHistory(), llvm::LiveRangeEdit::calculateRegClassAndHint(), canClobberPhysRegDefs(), canInstrSubstituteCmpInstr(), canMoveInstsAcrossMemOp(), canTurnIntoCOPY(), CC_MipsO32_FP64(), changeFCMPPredToAArch64CC(), CheckForLiveRegDef(), llvm::LiveIntervalUnion::clear(), llvm::MachineOperand::clearParent(), collectChangingRegs(), computeBranchTargetAndInversion(), computeBytesPoppedByCalleeForSRet(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveOuts(), llvm::TargetSchedModel::computeOutputLatency(), llvm::LiveInterval::computeSubRangeUndefs(), ContainsReg(), llvm::MIRPrinter::convert(), llvm::MIRPrinter::convertStackObjects(), llvm::AVRInstrInfo::copyPhysReg(), llvm::SparcInstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysReg(), llvm::ARMBaseInstrInfo::copyPhysReg(), llvm::SystemZInstrInfo::copyPhysReg(), llvm::PPCInstrInfo::copyPhysReg(), llvm::X86InstrInfo::copyPhysReg(), llvm::AArch64InstrInfo::copyPhysRegTuple(), createBBSelectReg(), llvm::createBURRListDAGScheduler(), llvm::createCodeGenPreparePass(), llvm::createCopyConstrainDAGMutation(), llvm::LiveRangeCalc::createDeadDefs(), llvm::MipsFunctionInfo::createEhDataRegsFI(), llvm::XCoreFunctionInfo::createEHSpillSlot(), llvm::createFalkorMarkStridedAccessesPass(), llvm::XCoreFunctionInfo::createFPSpillSlot(), llvm::createHybridListDAGScheduler(), llvm::createILPListDAGScheduler(), llvm::MipsFunctionInfo::createISRRegFI(), llvm::createLoadClusterDAGMutation(), llvm::XCoreFunctionInfo::createLRSpillSlot(), llvm::createNVPTXPrologEpilogPass(), createPHIsForCMOVsInSinkBB(), llvm::createR600ExpandSpecialInstrsPass(), llvm::createR600ISelDag(), llvm::createRegUsageInfoCollector(), llvm::createSIFixWWMLivenessPass(), llvm::createSILowerI1CopiesPass(), llvm::createSIWholeQuadModePass(), llvm::createSourceListDAGScheduler(), llvm::createStoreClusterDAGMutation(), llvm::createX86FixupBWInsts(), llvm::createX86OptimizeLEAs(), llvm::MachineInstr::definesRegister(), llvm::SystemZFrameLowering::determineCalleeSaves(), llvm::MipsSEFrameLowering::determineCalleeSaves(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::TargetFrameLowering::determineCalleeSaves(), llvm::DIEDwarfExpression::DIEDwarfExpression(), llvm::MachineRegisterInfo::disableCalleeSavedRegister(), llvm::VirtRegMap::dump(), llvm::ScheduleDAGMILive::dump(), llvm::RegPressureTracker::dump(), dumpMachineInstrRangeWithSlotIndex(), llvm::PPCTargetLowering::emitEHSjLjSetJmp(), EmitGCCInlineAsmStr(), emitIndirectDst(), emitIndirectSrc(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), llvm::DbgLabelInstrMap::end(), llvm::PressureDiff::end(), llvm::RegScavenger::enterBasicBlockEnd(), llvm::LiveRangeEdit::eraseVirtReg(), llvm::MipsFrameLowering::estimateStackSize(), llvm::InstructionSelector::executeMatchTable(), llvm::ARMBaseInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), expandXorFP(), llvm::finalizeBundle(), llvm::SITargetLowering::finalizeLowering(), FindAllMemoryUses(), FindCallSeqStart(), findPotentialBlockers(), llvm::MachineInstr::findRegisterDefOperand(), llvm::MachineInstr::findRegisterUseOperand(), findScratchNonCalleeSaveRegister(), findSurvivorBackwards(), findTemporariesForLR(), llvm::RegScavenger::FindUnusedReg(), findUseBetween(), llvm::fixStackStores(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::RegScavenger::forward(), llvm::GenericSchedulerBase::GenericSchedulerBase(), llvm::MipsInstrInfo::genInstrWithNewOpc(), getAllSGPRs(), llvm::HexagonFrameLowering::getCalleeSavedSpillSlots(), llvm::AVRTargetLowering::getCmpLibcallReturnType(), getCompareCC(), getComparePred(), getCompareSourceReg(), GetDSubRegs(), getDwarfRegNum(), getEstimate(), llvm::XCoreTargetLowering::getExceptionSelectorRegister(), llvm::ARMTargetLowering::getExceptionSelectorRegister(), getFrameIndexOperandNum(), llvm::SparcTargetLowering::getInlineAsmMemConstraint(), llvm::X86TargetLowering::getInlineAsmMemConstraint(), llvm::X86RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrAlternativeMappings(), llvm::AArch64RegisterBankInfo::getInstrMapping(), llvm::ARMTargetLowering::getJumpTableEncoding(), llvm::AVRRegisterInfo::getLargestLegalSuperClass(), getLeaOP(), getLiveLanesAt(), getLSMultipleTransferSize(), llvm::RegPressureTracker::getMaxUpwardPressureDelta(), getMemcpyLoadsAndStores(), getMopState(), llvm::MipsFunctionInfo::getMoveF64ViaSpillFI(), getMOVL(), getNodeRegMask(), getOffsetFromIndices(), getOModValue(), getOpenCLAlignment(), llvm::MipsTargetLowering::getOpndList(), getOrExecSource(), llvm::AArch64InstrInfo::getOutliningCandidateInfo(), getPHIDestReg(), llvm::ARMBaseInstrInfo::getPredicate(), llvm::SystemZTargetLowering::getPreferredVectorAction(), llvm::MachineFrameInfo::getPristineRegs(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::RegisterBankInfo::getRegBank(), llvm::MachineInstr::getRegClassConstraintEffectForVReg(), getRegClassForUnfoldedLoad(), getRegClassFromGRPhysReg(), llvm::BPFInstrInfo::getRegisterInfo(), llvm::ARCInstrInfo::getRegisterInfo(), llvm::LanaiInstrInfo::getRegisterInfo(), llvm::XCoreInstrInfo::getRegisterInfo(), llvm::Thumb1InstrInfo::getRegisterInfo(), llvm::SparcInstrInfo::getRegisterInfo(), llvm::MSP430InstrInfo::getRegisterInfo(), llvm::AVRInstrInfo::getRegisterInfo(), llvm::R600InstrInfo::getRegisterInfo(), llvm::SIInstrInfo::getRegisterInfo(), GetRegistersForValue(), llvm::RegScavenger::getRegsAvailable(), getRegTy(), llvm::WebAssemblyAsmPrinter::getRegType(), getRetpolineSymbol(), llvm::MSP430TargetLowering::getScalarShiftAmountTy(), llvm::HexagonTargetLowering::getSetCCResultType(), llvm::NVPTXTargetLowering::getSetCCResultType(), llvm::RegisterBank::getSize(), getSpecialRegForName(), llvm::ArgDescriptor::getStackOffset(), llvm::TargetInstrInfo::getStackSlotRange(), getSubOpcode(), getTag(), llvm::ARCTargetLowering::getTargetNodeName(), llvm::rdf::PhysicalRegisterInfo::getTRI(), llvm::SIScheduleDAGMI::getTRI(), llvm::rdf::DataFlowGraph::getTRI(), llvm::MipsTargetLowering::getTypeForExtReturn(), getUnderlyingObjects(), giveUpWithRemarks(), llvm::LiveIntervals::handleMove(), llvm::LiveIntervals::handleMoveIntoBundle(), llvm::LiveVariables::HandleVirtRegDef(), HandleVRSaveUpdate(), hasAnyNonFlatUseOfReg(), llvm::MipsFrameLowering::hasBP(), llvm::MipsFrameLowering::hasFP(), hasRAWHazard(), llvm::RegPressureTracker::hasUntiedDef(), hasUseAfterLoop(), hasVulnerableLoad(), llvm::HexagonBlockRanges::HexagonBlockRanges(), hoistAndMergeSGPRInits(), llvm::LiveRegSet::init(), llvm::RegPressureTracker::init(), llvm::GenericScheduler::initCandidate(), llvm::GenericScheduler::initialize(), llvm::PostGenericScheduler::initialize(), INITIALIZE_PASS(), llvm::MIRParserImpl::initializeJumpTableInfo(), llvm::RegPressureTracker::initLiveThru(), llvm::ScheduleDAGMILive::initRegPressure(), llvm::SITargetLowering::insertCopiesSplitCSR(), llvm::PPCTargetLowering::insertCopiesSplitCSR(), insertCSRRestores(), insertCSRSaves(), insertDeleteInstructions(), InsertLDR_STR(), llvm::X86InstrInfo::insertSelect(), llvm::rdf::CopyPropagation::interpretAsCopy(), llvm::MachineRegisterInfo::isCallerPreservedOrConstPhysReg(), llvm::AArch64InstrInfo::isCandidateToMergeOrPair(), isCompareZero(), llvm::MachineRegisterInfo::isConstantPhysReg(), isCopy(), isCrossCopy(), isDbgValueDescribedByReg(), isDebug(), isDefInSubRange(), isEFLAGSLive(), llvm::SITargetLowering::isEligibleForTailCallOptimization(), llvm::SystemZFrameLowering::isFPCloseToIncomingSP(), isFpMulInstruction(), isFullCopyOf(), isFullUndefDef(), llvm::TargetInstrInfo::isGenericOpcode(), llvm::MachineOperand::isIdenticalTo(), isImplicitOperandIn(), llvm::X86TargetLowering::isIntDivCheap(), llvm::AMDGPU::isKernel(), isLEA(), llvm::XCoreTargetLowering::isLegalAddressingMode(), llvm::SIInstrInfo::isLegalRegOperand(), isLiveOut(), llvm::ARMBaseInstrInfo::isLoadFromStackSlotPostFE(), isMergeableLdStUpdate(), isNonFoldablePartialRegisterLoad(), IsNonLocalValue(), isNopCopy(), isOpcWithIntImmediate(), IsOperandAMemoryOperand(), llvm::MachineRegisterInfo::isPhysRegModified(), llvm::MachineRegisterInfo::isPhysRegUsed(), llvm::rdf::DataFlowGraph::IsPreservingDef(), isPushPop(), llvm::MachineRegisterInfo::isReservedRegUnit(), IsSafeAndProfitableToMove(), llvm::TargetInstrInfo::isSchedulingBoundary(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), isSimpleIf(), llvm::AArch64InstrInfo::isUnscaledLdSt(), isUseSafeToFold(), llvm::MachineInstr::killsRegister(), llvm::MachineBasicBlock::liveins(), llvm::MachineRegisterInfo::liveins(), llvm::rdf::Liveness::Liveness(), llvm::MipsSEInstrInfo::loadImmediate(), llvm::X86InstrInfo::loadRegFromAddr(), llvm::MipsInstrInfo::loadRegFromStackSlot(), lookupCandidateBaseReg(), LowerADJUST_TRAMPOLINE(), llvm::X86CallLowering::lowerCall(), llvm::ARMCallLowering::lowerCall(), llvm::AArch64CallLowering::lowerCall(), llvm::MipsCallLowering::lowerCall(), llvm::SITargetLowering::LowerCall(), llvm::SystemZTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::SITargetLowering::LowerFormalArguments(), LowerFPToInt(), LowerInterruptReturn(), lowerRegToMasks(), llvm::SITargetLowering::LowerReturn(), MakeM0Inst(), MatchingStackOffset(), matchPair(), mayAlias(), mayCombineMisaligned(), mayTailCallThisCC(), llvm::MIPrinter::MIPrinter(), llvm::MipsRegInfoRecord::MipsRegInfoRecord(), llvm::MIRPrinter::MIRPrinter(), MoveAndTeeForMultiUse(), llvm::MSP430FrameLowering::MSP430FrameLowering(), needsReferenceType(), numVectorEltsOrZero(), llvm::VirtReg2IndexFunctor::operator()(), llvm::rdf::operator<<(), operator<<(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), parseCond(), llvm::SITargetLowering::passSpecialInputs(), Passv64i1ArgInRegs(), patchMatchingInput(), PrepareCall(), llvm::PhysicalRegisterUsageInfo::print(), llvm::LiveIntervalUnion::print(), llvm::MIPrinter::print(), llvm::MachineOperand::print(), llvm::MachineFunction::print(), llvm::MachineBasicBlock::print(), llvm::MachineInstr::print(), llvm::AVRAsmPrinter::PrintAsmOperand(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), printCFI(), printExtendedName(), llvm::GCNRPTracker::printLiveRegs(), llvm::ARMAsmPrinter::printOperand(), llvm::HexagonBlockRanges::PrintRangeMap::PrintRangeMap(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::XCoreFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::MachineInstr::readsRegister(), readsVCCZ(), llvm::TargetInstrInfo::reassociateOps(), llvm::RegPressureTracker::recede(), registerDefinedBetween(), llvm::MachineInstr::registerDefIsDead(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), llvm::TargetInstrInfo::reMaterialize(), llvm::LiveVariables::VarInfo::removeKill(), removePhis(), llvm::LiveIntervals::removePhysRegDefAt(), removeRedundantBlockingStores(), ReplaceFrameIndex(), llvm::PPCInstrInfo::replaceInstrWithLI(), llvm::X86TargetLowering::ReplaceNodeResults(), llvm::MachineRegisterInfo::replaceRegWith(), llvm::GenericScheduler::reschedulePhysRegCopies(), llvm::SystemZHazardRecognizer::Reset(), llvm::StackMaps::reset(), llvm::rdf::Liveness::resetKills(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::XCoreFrameLowering::restoreCalleeSavedRegisters(), resultTests(), llvm::TargetRegisterInfo::reverseComposeSubRegIndexLaneMask(), llvm::rdf::CopyPropagation::run(), llvm::InstructionSelect::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::VirtRegMap::runOnMachineFunction(), llvm::LiveVariables::runOnMachineFunction(), scavengeFrameVirtualRegsInBlock(), llvm::RegScavenger::scavengeRegister(), llvm::RegScavenger::scavengeRegisterBackwards(), scavengeVReg(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::FunctionLoweringInfo::set(), setAliasRegs(), llvm::SIMachineFunctionInfo::setBytesInStackArgArea(), llvm::ARMBaseInstrInfo::setExecutionDomain(), llvm::X86InstrInfo::setFrameAdjustment(), llvm::SDep::setReg(), llvm::RegScavenger::setRegUsed(), llvm::DwarfExpression::setSubRegisterPiece(), llvm::PPCTargetLowering::shouldInsertFencesForAtomic(), llvm::SIFrameLowering::SIFrameLowering(), llvm::XCoreFrameLowering::spillCalleeSavedRegisters(), splitBlock(), llvm::MachineBasicBlock::SplitCriticalEdge(), llvm::LiveDebugVariables::splitRegister(), srcMgrDiagHandler(), llvm::X86InstrInfo::storeRegToAddr(), false::Chain::str(), llvm::AArch64TargetLowering::supportSwiftError(), llvm::RegBankSelect::RepairingPlacement::switchTo(), llvm::InstructionSelector::testMIPredicate_MI(), tieOpsIfNeeded(), llvm::rdf::Liveness::trace(), llvm::GenericSchedulerBase::traceCandidate(), llvm::GenericScheduler::tryCandidate(), tryConstantFoldOp(), tryFoldInst(), llvm::tryFoldSPUpdateIntoPushPop(), llvm::X86InstrInfo::unfoldMemoryOperand(), unpackF64OnRV32DSoftABI(), unsupportedBinOp(), updateKillStatus(), updateOperand(), UpdateOperandRegClass(), updateOperandRegConstraints(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::ScheduleDAGMILive::updateScheduledPressure(), llvm::PPCInstrInfo::useMachineCombiner(), X86ChooseCmpImmediateOpcode(), and X86SelectAddress().

◆ 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