LLVM: llvm::SUnit Class Reference (original) (raw)

Scheduling unit. This is a node in the scheduling DAG. More...

#include "[llvm/CodeGen/ScheduleDAG.h](ScheduleDAG%5F8h%5Fsource.html)"

Public Member Functions
SUnit (SDNode *node, unsigned nodenum)
Constructs an SUnit for pre-regalloc scheduling to represent an SDNode and any nodes flagged to it.
SUnit (MachineInstr *instr, unsigned nodenum)
Constructs an SUnit for post-regalloc scheduling to represent a MachineInstr.
SUnit ()
Constructs a placeholder SUnit.
bool isBoundaryNode () const
Boundary nodes are placeholders for the boundary of the scheduling region.
void setNode (SDNode *N)
Assigns the representative SDNode for this SUnit.
SDNode * getNode () const
Returns the representative SDNode for this SUnit.
bool isInstr () const
Returns true if this SUnit refers to a machine instruction as opposed to an SDNode.
void setInstr (MachineInstr *MI)
Assigns the instruction for the SUnit.
MachineInstr * getInstr () const
Returns the representative MachineInstr for this SUnit.
LLVM_ABI bool addPred (const SDep &D, bool Required=true)
Adds the specified edge as a pred of the current node if not already.
bool addPredBarrier (SUnit *SU)
Adds a barrier edge to SU by calling addPred(), with latency 0 generally or latency 1 for a store followed by a load.
LLVM_ABI void removePred (const SDep &D)
Removes the specified edge as a pred of the current node if it exists.
unsigned getDepth () const
Returns the depth of this node, which is the length of the maximum path up to any node which has no predecessors.
unsigned getHeight () const
Returns the height of this node, which is the length of the maximum path down to any node which has no successors.
LLVM_ABI void setDepthToAtLeast (unsigned NewDepth)
If NewDepth is greater than this node's depth value, sets it to be the new depth value.
LLVM_ABI void setHeightToAtLeast (unsigned NewHeight)
If NewHeight is greater than this node's height value, set it to be the new height value.
LLVM_ABI void setDepthDirty ()
Sets a flag in this node to indicate that its stored Depth value will require recomputation the next time getDepth() is called.
LLVM_ABI void setHeightDirty ()
Sets a flag in this node to indicate that its stored Height value will require recomputation the next time getHeight() is called.
bool isPred (const SUnit *N) const
Tests if node N is a predecessor of this node.
bool isSucc (const SUnit *N) const
Tests if node N is a successor of this node.
bool isTopReady () const
bool isBottomReady () const
LLVM_ABI void biasCriticalPath ()
Orders this node's predecessor edges such that the critical path edge occurs first.
LLVM_ABI void dumpAttributes () const
Public Attributes
SUnit * OrigNode = nullptr
If not this, the node from which this node was cloned.
const MCSchedClassDesc * SchedClass
nullptr or resolved SchedClass.
const TargetRegisterClass * CopyDstRC
Is a special copy node if != nullptr.
const TargetRegisterClass * CopySrcRC = nullptr
SmallVector< SDep, 4 > Preds
All sunit predecessors.
SmallVector< SDep, 4 > Succs
All sunit successors.
unsigned NodeNum = BoundaryID
Entry # of node in the node vector.
unsigned NodeQueueId = 0
Queue id of node.
unsigned NumPreds = 0
unsigned NumSuccs = 0
unsigned NumPredsLeft = 0
unsigned NumSuccsLeft = 0
unsigned WeakPredsLeft = 0
unsigned WeakSuccsLeft = 0
unsigned TopReadyCycle = 0
Cycle relative to start when node is ready.
unsigned BotReadyCycle = 0
Cycle relative to end when node is ready.
unsigned ParentClusterIdx = InvalidClusterId
The parent cluster id.
bool isVRegCycle: 1
May use and def the same vreg.
bool isCall: 1
Is a function call.
bool isCallOp: 1
Is a function call operand.
bool isTwoAddress: 1
Is a two-address instruction.
bool isCommutable: 1
Is a commutable instruction.
bool hasPhysRegUses: 1
Has physreg uses.
bool hasPhysRegDefs: 1
Has physreg defs that are being used.
bool hasPhysRegClobbers: 1
Has any physreg defs, used or not.
bool isPending: 1
True once pending.
bool isAvailable: 1
True once available.
bool isScheduled: 1
True once scheduled.
bool isScheduleHigh: 1
True if preferable to schedule high.
bool isScheduleLow: 1
True if preferable to schedule low.
bool isCloned: 1
True if this node has been cloned.
bool isUnbuffered: 1
Uses an unbuffered resource.
bool hasReservedResource: 1
Uses a reserved resource.
unsigned short NumRegDefsLeft = 0
unsigned short Latency = 0
Node latency.
Sched::Preference SchedulingPref: 4
Scheduling preference.

Scheduling unit. This is a node in the scheduling DAG.

Definition at line 249 of file ScheduleDAG.h.

const_pred_iterator

const_succ_iterator

pred_iterator

succ_iterator

SUnit() [1/3]

Constructs an SUnit for pre-regalloc scheduling to represent an SDNode and any nodes flagged to it.

Definition at line 327 of file ScheduleDAG.h.

References hasPhysRegClobbers, hasPhysRegDefs, hasPhysRegUses, hasReservedResource, isAvailable, isCall, isCallOp, isCloned, isCommutable, isPending, isScheduled, isScheduleHigh, isScheduleLow, isTwoAddress, isUnbuffered, isVRegCycle, Node, NodeNum, llvm::None, and SchedulingPref.

Referenced by addPred(), addPredBarrier(), getDepth(), getHeight(), isPred(), isSucc(), removePred(), setDepthDirty(), and setHeightDirty().

SUnit() [2/3]

Constructs an SUnit for post-regalloc scheduling to represent a MachineInstr.

Definition at line 339 of file ScheduleDAG.h.

References hasPhysRegClobbers, hasPhysRegDefs, hasPhysRegUses, hasReservedResource, Instr, instr, isAvailable, isCall, isCallOp, isCloned, isCommutable, isPending, isScheduled, isScheduleHigh, isScheduleLow, isTwoAddress, isUnbuffered, isVRegCycle, NodeNum, llvm::None, and SchedulingPref.

SUnit() [3/3]

llvm::SUnit::SUnit ( ) inline

Constructs a placeholder SUnit.

Definition at line 350 of file ScheduleDAG.h.

References hasPhysRegClobbers, hasPhysRegDefs, hasPhysRegUses, hasReservedResource, isAvailable, isCall, isCallOp, isCloned, isCommutable, isPending, isScheduled, isScheduleHigh, isScheduleLow, isTwoAddress, isUnbuffered, isVRegCycle, Node, llvm::None, and SchedulingPref.

addPred()

Adds the specified edge as a pred of the current node if not already.

It also adds the current node as a successor of the specified node.

Definition at line 106 of file ScheduleDAG.cpp.

References assert(), D(), llvm::SDep::Data, llvm::SDep::getSUnit(), isScheduled, N, NumPreds, NumPredsLeft, P, Preds, llvm::Required, setDepthDirty(), setHeightDirty(), llvm::SDep::setLatency(), llvm::SDep::setSUnit(), Succs, SUnit(), and WeakPredsLeft.

Referenced by llvm::ScheduleDAGInstrs::addChainDependency(), llvm::ScheduleDAGInstrs::addEdge(), llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), addPredBarrier(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), and llvm::LoopCarriedEdges::modifySUnits().

addPredBarrier()

bool llvm::SUnit::addPredBarrier ( SUnit * SU) inline

biasCriticalPath()

void SUnit::biasCriticalPath ( )

dumpAttributes()

getDepth()

unsigned llvm::SUnit::getDepth ( ) const inline

Returns the depth of this node, which is the length of the maximum path up to any node which has no predecessors.

Definition at line 425 of file ScheduleDAG.h.

References SUnit().

Referenced by llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), BUCompareLatency(), BUCompareLatency(), llvm::SchedBoundary::bumpNode(), BURRSort(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), CriticalPathStep(), CriticalPathStep(), dumpAttributes(), llvm::SchedDFSResult::getILP(), llvm::SchedBoundary::getUnscheduledLatency(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::isLatencyBound(), llvm::GenericScheduler::registerRoots(), llvm::PostGenericScheduler::registerRoots(), llvm::ConvergingVLIWScheduler::SchedulingCost(), setDepthToAtLeast(), llvm::GenericSchedulerBase::traceCandidate(), llvm::tryLatency(), and llvm::ScheduleDAG::VerifyScheduledDAG().

getHeight()

unsigned llvm::SUnit::getHeight ( ) const inline

Returns the height of this node, which is the length of the maximum path down to any node which has no successors.

Definition at line 433 of file ScheduleDAG.h.

References SUnit().

Referenced by BUCompareLatency(), BUCompareLatency(), llvm::SchedBoundary::bumpNode(), BURRSort(), closestSucc(), closestSucc(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), dumpAttributes(), llvm::SchedBoundary::getUnscheduledLatency(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::isLatencyBound(), llvm::SystemZPostRASchedStrategy::pickNode(), llvm::ConvergingVLIWScheduler::SchedulingCost(), setHeightToAtLeast(), llvm::ResourcePriorityQueue::SUSchedulingCost(), llvm::GenericSchedulerBase::traceCandidate(), llvm::tryLatency(), and llvm::ScheduleDAG::VerifyScheduledDAG().

getInstr()

Returns the representative MachineInstr for this SUnit.

This may be used during post-regalloc scheduling.

Definition at line 399 of file ScheduleDAG.h.

References assert(), Instr, and Node.

Referenced by llvm::ScheduleDAGInstrs::addChainDependency(), llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), addPredBarrier(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::ARMOverrideBypasses::apply(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::RISCVVectorMaskDAGMutation::apply(), llvm::biasPhysReg(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::bumpNode(), llvm::SchedBoundary::bumpNode(), llvm::ResourceManager::calculateResMII(), llvm::HexagonPacketizerList::canPromoteToDotCur(), llvm::HexagonPacketizerList::canPromoteToDotNew(), llvm::HexagonPacketizerList::canPromoteToNewValue(), llvm::HexagonPacketizerList::canPromoteToNewValueStore(), llvm::ResourceManager::canReserveResources(), canUsePressureDiffs(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::checkHazard(), llvm::SchedBoundary::checkHazard(), llvm::ScheduleDAGMILive::collectVRegUses(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveOuts(), computeScheduledInsts(), llvm::SMSchedule::computeStart(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::ScheduleDAGInstrs::dumpNode(), llvm::SystemZHazardRecognizer::dumpSU(), llvm::ARMBankConflictHazardRecognizer::EmitInstruction(), llvm::ARMHazardRecognizerFPMLx::EmitInstruction(), llvm::GCNHazardRecognizer::EmitInstruction(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::PPCHazardRecognizer970::EmitInstruction(), llvm::SystemZHazardRecognizer::EmitInstruction(), llvm::SMSchedule::finalizeSchedule(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::fuseInstructionPair(), llvm::ScheduleDAGInstrs::getGraphNodeLabel(), llvm::ARMBankConflictHazardRecognizer::getHazardType(), llvm::ARMHazardRecognizerFPMLx::getHazardType(), llvm::GCNHazardRecognizer::getHazardType(), llvm::HexagonHazardRecognizer::getHazardType(), llvm::PPCHazardRecognizer970::getHazardType(), llvm::ScheduleDAG::getInstrDesc(), getMachineInstr(), getMachineInstr(), getRegisterPressures(), llvm::ScheduleDAGInstrs::getSchedClass(), llvm::SystemZHazardRecognizer::getSchedClass(), llvm::GCNSchedStage::getScheduleMetrics(), llvm::SystemZHazardRecognizer::groupingCost(), llvm::HexagonVLIWResourceModel::hasDependence(), llvm::SchedRemainder::init(), llvm::GenericScheduler::initCandidate(), llvm::ScheduleDAGInstrs::initSUnits(), llvm::SMSchedule::insert(), isADDIInstr(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), llvm::HexagonPacketizerList::isLegalToPruneDependencies(), llvm::SMSchedule::isLoopCarried(), llvm::VLIWResourceModel::isResourceAvailable(), llvm::isSoleUseCopyToV0(), llvm::ARMOverrideBypasses::makeBundleAssumptions(), llvm::ARMOverrideBypasses::memoryRAWHazard(), llvm::LoopCarriedEdges::modifySUnits(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::SMSchedule::orderDependence(), llvm::VLIWPacketizerList::PacketizeMIs(), llvm::GCNSchedStrategy::pickNode(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::SMSchedule::print(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::R600SchedStrategy::releaseBottomNode(), llvm::SchedBoundary::releaseNode(), llvm::SMSchedule::reorderInstructions(), llvm::GenericScheduler::reschedulePhysReg(), llvm::ResourceManager::reserveResources(), llvm::VLIWResourceModel::reserveResources(), llvm::GCNSchedStrategy::schedNode(), llvm::R600SchedStrategy::schedNode(), llvm::ScheduleDAGMI::schedule(), llvm::SIScheduleBlock::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::ConvergingVLIWScheduler::SchedulingCost(), llvm::HexagonConvergingVLIWScheduler::SchedulingCost(), llvm::GCNHazardRecognizer::ShouldPreferAnother(), llvm::HexagonHazardRecognizer::ShouldPreferAnother(), llvm::AArch64PostRASchedStrategy::tryCandidate(), llvm::GCNMaxMemoryClauseSchedStrategy::tryCandidate(), llvm::HexagonPacketizerList::updateOffset(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::SchedDFSImpl::visitPreorder().

getNode()

SDNode * llvm::SUnit::getNode ( ) const inline

Returns the representative SDNode for this SUnit.

This may be used during pre-regalloc scheduling.

Definition at line 379 of file ScheduleDAG.h.

References assert(), Instr, and Node.

Referenced by BURRSort(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), canEnableCoalescing(), llvm::ScheduleDAGSDNodes::Clone(), closestSucc(), llvm::ScheduleDAGSDNodes::computeLatency(), llvm::ScheduleDAGSDNodes::dumpNode(), llvm::ScheduleDAGSDNodes::EmitSchedule(), llvm::ScheduleDAGSDNodes::getGraphNodeLabel(), llvm::ScheduleDAG::getInstrDesc(), hasOnlyLiveInOpers(), hasOnlyLiveOutUses(), llvm::ResourcePriorityQueue::initNumRegDefsLeft(), isOperandOf(), llvm::ResourcePriorityQueue::isResourceAvailable(), llvm::ResourcePriorityQueue::rawRegPressureDelta(), llvm::ResourcePriorityQueue::regPressureDelta(), llvm::ResourcePriorityQueue::reserveResources(), resetVRegCycle(), llvm::ResourcePriorityQueue::scheduledNode(), and llvm::ResourcePriorityQueue::SUSchedulingCost().

isBottomReady()

bool llvm::SUnit::isBottomReady ( ) const inline

isBoundaryNode()

bool llvm::SUnit::isBoundaryNode ( ) const inline

isInstr()

bool llvm::SUnit::isInstr ( ) const inline

isPred()

isSucc()

isTopReady()

bool llvm::SUnit::isTopReady ( ) const inline

removePred()

Removes the specified edge as a pred of the current node if it exists.

It also removes the current node as a successor of the specified node.

Definition at line 175 of file ScheduleDAG.cpp.

References assert(), D(), llvm::SDep::Data, llvm::find(), I, isScheduled, N, NumPreds, NumPredsLeft, P, Preds, setDepthDirty(), setHeightDirty(), SUnit(), and WeakPredsLeft.

Referenced by llvm::HexagonSubtarget::UsrOverflowMutation::apply().

setDepthDirty()

void SUnit::setDepthDirty ( )

Sets a flag in this node to indicate that its stored Depth value will require recomputation the next time getDepth() is called.

Definition at line 217 of file ScheduleDAG.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::SDep::getSUnit(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Succs, and SUnit().

Referenced by addPred(), removePred(), llvm::ARMOverrideBypasses::setBidirLatencies(), and setDepthToAtLeast().

setDepthToAtLeast()

void SUnit::setDepthToAtLeast ( unsigned NewDepth )

If NewDepth is greater than this node's depth value, sets it to be the new depth value.

This also recursively marks successor nodes dirty.

Definition at line 247 of file ScheduleDAG.cpp.

References getDepth(), and setDepthDirty().

setHeightDirty()

void SUnit::setHeightDirty ( )

Sets a flag in this node to indicate that its stored Height value will require recomputation the next time getHeight() is called.

Definition at line 232 of file ScheduleDAG.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::SDep::getSUnit(), llvm::SmallVectorImpl< T >::pop_back_val(), Preds, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and SUnit().

Referenced by addPred(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), removePred(), llvm::ARMOverrideBypasses::setBidirLatencies(), and setHeightToAtLeast().

setHeightToAtLeast()

void SUnit::setHeightToAtLeast ( unsigned NewHeight )

If NewHeight is greater than this node's height value, set it to be the new height value.

This also recursively marks predecessor nodes dirty.

Definition at line 255 of file ScheduleDAG.cpp.

References getHeight(), and setHeightDirty().

setInstr()

setNode()

void llvm::SUnit::setNode ( SDNode * N) inline

BotReadyCycle

Cycle relative to end when node is ready.

Definition at line 286 of file ScheduleDAG.h.

Referenced by llvm::SchedBoundary::bumpNode(), llvm::ScheduleDAGInstrs::dumpNode(), llvm::ScheduleDAGMI::dumpScheduleTraceBottomUp(), llvm::SchedBoundary::getLatencyStallCycles(), llvm::GCNSchedStrategy::pickNode(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::GenericScheduler::releaseBottomNode(), llvm::PostGenericScheduler::releaseBottomNode(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::releasePending(), llvm::SchedBoundary::releasePending(), llvm::ScheduleDAGMI::releasePred(), llvm::ConvergingVLIWScheduler::schedNode(), llvm::GenericScheduler::schedNode(), and llvm::PostGenericScheduler::schedNode().

CopyDstRC

Initial value:

Is a special copy node if != nullptr.

Definition at line 265 of file ScheduleDAG.h.

CopySrcRC

hasPhysRegClobbers

bool llvm::SUnit::hasPhysRegClobbers

hasPhysRegDefs

bool llvm::SUnit::hasPhysRegDefs

hasPhysRegUses

bool llvm::SUnit::hasPhysRegUses

hasReservedResource

bool llvm::SUnit::hasReservedResource

Instr

isAvailable

bool llvm::SUnit::isAvailable

isCall

Is a function call.

Definition at line 296 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::bumpNode(), llvm::SchedBoundary::bumpNode(), BURRSort(), llvm::ScheduleDAGSDNodes::Clone(), llvm::SystemZHazardRecognizer::EmitInstruction(), llvm::SystemZHazardRecognizer::emitInstruction(), llvm::ScheduleDAGInstrs::initSUnits(), SUnit(), SUnit(), and SUnit().

isCallOp

bool llvm::SUnit::isCallOp

isCloned

bool llvm::SUnit::isCloned

isCommutable

bool llvm::SUnit::isCommutable

isPending

bool llvm::SUnit::isPending

isScheduled

bool llvm::SUnit::isScheduled

True once scheduled.

Definition at line 305 of file ScheduleDAG.h.

Referenced by addPred(), llvm::GCNSchedStrategy::pickNode(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::R600SchedStrategy::pickNode(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::GenericScheduler::releaseBottomNode(), llvm::PostGenericScheduler::releaseBottomNode(), llvm::ConvergingVLIWScheduler::releaseTopNode(), llvm::GenericScheduler::releaseTopNode(), llvm::PostGenericScheduler::releaseTopNode(), removePred(), llvm::ScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::schedule(), llvm::ConvergingVLIWScheduler::SchedulingCost(), llvm::HexagonConvergingVLIWScheduler::SchedulingCost(), SUnit(), SUnit(), SUnit(), llvm::ResourcePriorityQueue::SUSchedulingCost(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::ScheduleDAGMI::updateQueues(), and llvm::ScheduleDAG::VerifyScheduledDAG().

isScheduleHigh

bool llvm::SUnit::isScheduleHigh

isScheduleLow

bool llvm::SUnit::isScheduleLow

isTwoAddress

bool llvm::SUnit::isTwoAddress

isUnbuffered

bool llvm::SUnit::isUnbuffered

Uses an unbuffered resource.

Definition at line 309 of file ScheduleDAG.h.

Referenced by llvm::SchedBoundary::bumpNode(), llvm::SystemZHazardRecognizer::dumpSU(), llvm::SystemZHazardRecognizer::EmitInstruction(), llvm::SystemZHazardRecognizer::emitInstruction(), llvm::SchedBoundary::getLatencyStallCycles(), llvm::ScheduleDAGInstrs::initSUnits(), llvm::SystemZPostRASchedStrategy::releaseTopNode(), llvm::SystemZHazardRecognizer::resourcesCost(), SUnit(), SUnit(), and SUnit().

isVRegCycle

bool llvm::SUnit::isVRegCycle

Latency

Node

NodeNum

unsigned llvm::SUnit::NodeNum = BoundaryID

Entry # of node in the node vector.

Definition at line 277 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGTopologicalSort::AddSUnitWithoutPredecessors(), llvm::SIScheduleBlock::addUnit(), BUCompareLatency(), BUCompareLatency(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SchedBoundary::bumpNode(), BURRSort(), CalcNodeSethiUllmanNumber(), CalcNodeSethiUllmanNumber(), llvm::SchedBoundary::checkHazard(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), llvm::GCNSchedStage::computeSUnitReadyCycle(), llvm::SMSchedule::computeUnpipelineableNodes(), llvm::LoopCarriedEdges::dump(), llvm::ScheduleDAG::dumpNodeName(), llvm::ScheduleDAGMI::dumpScheduleTraceBottomUp(), llvm::ScheduleDAGMI::dumpScheduleTraceTopDown(), llvm::SystemZHazardRecognizer::dumpSU(), llvm::SIScheduleBlock::finalizeUnits(), llvm::SchedBoundary::findMaxLatency(), llvm::ScheduleDAGSDNodes::getGraphNodeLabel(), llvm::SchedDFSResult::getILP(), llvm::DOTGraphTraits< ScheduleDAGMI * >::getNodeLabel(), llvm::SchedDFSResult::getNumInstrs(), llvm::ScheduleDAGMILive::getPressureDiff(), llvm::ScheduleDAGMILive::getPressureDiff(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), llvm::SchedDFSResult::getSubtreeID(), hasVRegCycleUse(), llvm::GenericScheduler::initCandidate(), llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(), initVRegCycle(), isBoundaryNode(), llvm::ScheduleDAGTopologicalSort::IsReachable(), llvm::SIScheduleBlockCreator::isSUInBlock(), llvm::SchedDFSImpl::isVisited(), llvm::SchedDFSImpl::joinPredSubtree(), llvm::LoopCarriedEdges::modifySUnits(), llvm::SMSchedule::normalizeNonPipelinedInstructions(), llvm::GCNSchedStrategy::pickNode(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::ConvergingVLIWScheduler::pickNodeFromQueue(), llvm::SMSchedule::print(), llvm::LatencyPriorityQueue::push(), llvm::ResourcePriorityQueue::push(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), llvm::SchedBoundary::releaseNode(), llvm::SchedBoundary::releasePending(), llvm::SystemZPostRASchedStrategy::schedNode(), llvm::SIScheduleDAGMI::schedule(), llvm::SIScheduler::scheduleVariant(), SUnit(), SUnit(), llvm::ResourcePriorityQueue::SUSchedulingCost(), llvm::GenericSchedulerBase::traceCandidate(), llvm::GCNMaxILPSchedStrategy::tryCandidate(), llvm::GCNMaxMemoryClauseSchedStrategy::tryCandidate(), llvm::GenericScheduler::tryCandidate(), llvm::PostGenericScheduler::tryCandidate(), llvm::PPCPostRASchedStrategy::tryCandidate(), llvm::PPCPreRASchedStrategy::tryCandidate(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::SchedDFSImpl::visitPostorderEdge(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::SchedDFSImpl::visitPreorder().

NodeQueueId

NumPreds

NumPredsLeft

NumRegDefsLeft

unsigned short llvm::SUnit::NumRegDefsLeft = 0

NumSuccs

NumSuccsLeft

OrigNode

SUnit* llvm::SUnit::OrigNode = nullptr

ParentClusterIdx

Preds

All sunit predecessors.

Definition at line 269 of file ScheduleDAG.h.

Referenced by addPred(), AntiDepEdges(), llvm::HexagonSubtarget::UsrOverflowMutation::apply(), biasCriticalPath(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), calcMaxScratches(), calcMaxScratches(), CalcNodeSethiUllmanNumber(), llvm::HexagonPacketizerList::calcStall(), canClobberReachingPhysRegUse(), llvm::SMSchedule::computeStart(), llvm::GCNSchedStage::computeSUnitReadyCycle(), CriticalPathStep(), CriticalPathStep(), llvm::ScheduleDAG::dumpNodeAll(), llvm::fuseInstructionPair(), getPredClusterSU(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), hasDataDependencyPred(), hasOnlyLiveInOpers(), hasVRegCycleUse(), llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(), initVRegCycle(), isPred(), isSingleUnscheduledPred(), multipleIterations(), numberCtrlPredInSU(), llvm::SUnitIterator::operator*(), llvm::ConvergingVLIWScheduler::pickNodeFromQueue(), llvm::ScheduleDAGMI::releasePredecessors(), llvm::ConvergingVLIWScheduler::releaseTopNode(), removePred(), llvm::GenericScheduler::reschedulePhysReg(), resetVRegCycle(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::ConvergingVLIWScheduler::SchedulingCost(), llvm::ARMOverrideBypasses::setBidirLatencies(), setHeightDirty(), llvm::HexagonPacketizerList::updateOffset(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::ScheduleDAGTopologicalSort::WillCreateCycle().

SchedClass

SchedulingPref

Succs

All sunit successors.

Definition at line 270 of file ScheduleDAG.h.

Referenced by addPred(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::HexagonPacketizerList::arePredicatesComplements(), canClobberReachingPhysRegUse(), closestSucc(), closestSucc(), llvm::ScheduleDAG::dumpNodeAll(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::fuseInstructionPair(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), hasDataSucc(), llvm::VLIWResourceModel::hasDependence(), hasOnlyLiveOutUses(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), isSingleUnscheduledSucc(), llvm::isSoleUseCopyToV0(), isSucc(), isSuccOrder(), llvm::SchedDFSImpl::joinPredSubtree(), numberCtrlDepsInSU(), llvm::ConvergingVLIWScheduler::pickNodeFromQueue(), llvm::LatencyPriorityQueue::push(), llvm::ResourcePriorityQueue::push(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::ScheduleDAGMI::releaseSuccessors(), llvm::GenericScheduler::reschedulePhysReg(), llvm::HexagonPacketizerList::restrictingDepExistInPacket(), llvm::LatencyPriorityQueue::scheduledNode(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::ConvergingVLIWScheduler::SchedulingCost(), and setDepthDirty().

TopReadyCycle

Cycle relative to start when node is ready.

Definition at line 285 of file ScheduleDAG.h.

Referenced by llvm::SchedBoundary::bumpNode(), llvm::ScheduleDAGInstrs::dumpNode(), llvm::ScheduleDAGMI::dumpScheduleTraceTopDown(), llvm::SchedBoundary::getLatencyStallCycles(), llvm::GCNSchedStrategy::pickNode(), llvm::ConvergingVLIWScheduler::VLIWSchedBoundary::releasePending(), llvm::SchedBoundary::releasePending(), llvm::ScheduleDAGMI::releaseSucc(), llvm::ConvergingVLIWScheduler::releaseTopNode(), llvm::GenericScheduler::releaseTopNode(), llvm::PostGenericScheduler::releaseTopNode(), llvm::ConvergingVLIWScheduler::schedNode(), llvm::GenericScheduler::schedNode(), and llvm::PostGenericScheduler::schedNode().

WeakPredsLeft

WeakSuccsLeft


The documentation for this class was generated from the following files: