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:
- include/llvm/CodeGen/ScheduleDAG.h
- lib/CodeGen/ScheduleDAG.cpp