LLVM  6.0.0svn
Public Types | Public Member Functions | Public Attributes | List of all members
llvm::SUnit Class Reference

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

#include "llvm/CodeGen/ScheduleDAG.h"

Collaboration diagram for llvm::SUnit:
Collaboration graph
[legend]

Public Types

typedef SmallVectorImpl< SDep >::iterator pred_iterator
 
typedef SmallVectorImpl< SDep >::iterator succ_iterator
 
typedef SmallVectorImpl< SDep >::const_iterator const_pred_iterator
 
typedef SmallVectorImpl< SDep >::const_iterator const_succ_iterator
 

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. More...
 
 SUnit (MachineInstr *instr, unsigned nodenum)
 Constructs an SUnit for post-regalloc scheduling to represent a MachineInstr. More...
 
 SUnit ()
 Constructs a placeholder SUnit. More...
 
bool isBoundaryNode () const
 Boundary nodes are placeholders for the boundary of the scheduling region. More...
 
void setNode (SDNode *N)
 Assigns the representative SDNode for this SUnit. More...
 
SDNodegetNode () const
 Returns the representative SDNode for this SUnit. More...
 
bool isInstr () const
 Returns true if this SUnit refers to a machine instruction as opposed to an SDNode. More...
 
void setInstr (MachineInstr *MI)
 Assigns the instruction for the SUnit. More...
 
MachineInstrgetInstr () const
 Returns the representative MachineInstr for this SUnit. More...
 
bool addPred (const SDep &D, bool Required=true)
 Adds the specified edge as a pred of the current node if not already. More...
 
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. More...
 
void removePred (const SDep &D)
 Removes the specified edge as a pred of the current node if it exists. More...
 
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. More...
 
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. More...
 
void setDepthToAtLeast (unsigned NewDepth)
 If NewDepth is greater than this node's depth value, sets it to be the new depth value. More...
 
void setHeightToAtLeast (unsigned NewHeight)
 If NewDepth is greater than this node's depth value, set it to be the new height value. More...
 
void setDepthDirty ()
 Sets a flag in this node to indicate that its stored Depth value will require recomputation the next time getDepth() is called. More...
 
void setHeightDirty ()
 Sets a flag in this node to indicate that its stored Height value will require recomputation the next time getHeight() is called. More...
 
bool isPred (const SUnit *N) const
 Tests if node N is a predecessor of this node. More...
 
bool isSucc (const SUnit *N) const
 Tests if node N is a successor of this node. More...
 
bool isTopReady () const
 
bool isBottomReady () const
 
void biasCriticalPath ()
 Orders this node's predecessor edges such that the critical path edge occurs first. More...
 
void dump (const ScheduleDAG *G) const
 
void dumpAll (const ScheduleDAG *G) const
 
raw_ostreamprint (raw_ostream &O, const SUnit *N=nullptr, const SUnit *X=nullptr) const
 
raw_ostreamprint (raw_ostream &O, const ScheduleDAG *G) const
 

Public Attributes

SUnitOrigNode = nullptr
 If not this, the node from which this node was cloned. More...
 
const MCSchedClassDescSchedClass
 nullptr or resolved SchedClass. More...
 
SmallVector< SDep, 4 > Preds
 All sunit predecessors. More...
 
SmallVector< SDep, 4 > Succs
 All sunit successors. More...
 
unsigned NodeNum = BoundaryID
 Entry # of node in the node vector. More...
 
unsigned NodeQueueId = 0
 Queue id of node. More...
 
unsigned NumPreds = 0
 

of SDep::Data preds.

More...
 
unsigned NumSuccs = 0
 

of SDep::Data sucss.

More...
 
unsigned NumPredsLeft = 0
 

of preds not scheduled.

More...
 
unsigned NumSuccsLeft = 0
 

of succs not scheduled.

More...
 
unsigned WeakPredsLeft = 0
 

of weak preds not scheduled.

More...
 
unsigned WeakSuccsLeft = 0
 

of weak succs not scheduled.

More...
 
unsigned short NumRegDefsLeft = 0
 

of reg defs with no scheduled use.

More...
 
unsigned short Latency = 0
 Node latency. More...
 
bool isVRegCycle: 1
 May use and def the same vreg. More...
 
bool isCall: 1
 Is a function call. More...
 
bool isCallOp: 1
 Is a function call operand. More...
 
bool isTwoAddress: 1
 Is a two-address instruction. More...
 
bool isCommutable: 1
 Is a commutable instruction. More...
 
bool hasPhysRegUses: 1
 Has physreg uses. More...
 
bool hasPhysRegDefs: 1
 Has physreg defs that are being used. More...
 
bool hasPhysRegClobbers: 1
 Has any physreg defs, used or not. More...
 
bool isPending: 1
 True once pending. More...
 
bool isAvailable: 1
 True once available. More...
 
bool isScheduled: 1
 True once scheduled. More...
 
bool isScheduleHigh: 1
 True if preferable to schedule high. More...
 
bool isScheduleLow: 1
 True if preferable to schedule low. More...
 
bool isCloned: 1
 True if this node has been cloned. More...
 
bool isUnbuffered: 1
 Uses an unbuffered resource. More...
 
bool hasReservedResource: 1
 Uses a reserved resource. More...
 
Sched::Preference SchedulingPref = Sched::None
 Scheduling preference. More...
 
unsigned TopReadyCycle = 0
 Cycle relative to start when node is ready. More...
 
unsigned BotReadyCycle = 0
 Cycle relative to end when node is ready. More...
 
const TargetRegisterClassCopyDstRC
 Is a special copy node if != nullptr. More...
 
const TargetRegisterClassCopySrcRC = nullptr
 

Detailed Description

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

Definition at line 247 of file ScheduleDAG.h.

Member Typedef Documentation

◆ const_pred_iterator

Definition at line 266 of file ScheduleDAG.h.

◆ const_succ_iterator

Definition at line 267 of file ScheduleDAG.h.

◆ pred_iterator

Definition at line 264 of file ScheduleDAG.h.

◆ succ_iterator

Definition at line 265 of file ScheduleDAG.h.

Constructor & Destructor Documentation

◆ SUnit() [1/3]

llvm::SUnit::SUnit ( SDNode node,
unsigned  nodenum 
)
inline

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

Definition at line 313 of file ScheduleDAG.h.

◆ SUnit() [2/3]

llvm::SUnit::SUnit ( MachineInstr instr,
unsigned  nodenum 
)
inline

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

Definition at line 324 of file ScheduleDAG.h.

◆ SUnit() [3/3]

llvm::SUnit::SUnit ( )
inline

Constructs a placeholder SUnit.

Definition at line 334 of file ScheduleDAG.h.

Member Function Documentation

◆ addPred()

bool SUnit::addPred ( const SDep D,
bool  Required = true 
)

◆ addPredBarrier()

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

Adds a barrier edge to SU by calling addPred(), with latency 0 generally or latency 1 for a store followed by a load.

Definition at line 389 of file ScheduleDAG.h.

References llvm::SDep::Barrier, getInstr(), llvm::MachineInstr::mayStore(), and llvm::SDep::setLatency().

Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SISubtarget::getMaxNumVGPRs(), and llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps().

◆ biasCriticalPath()

void SUnit::biasCriticalPath ( )

Orders this node's predecessor edges such that the critical path edge occurs first.

Definition at line 323 of file ScheduleDAG.cpp.

References llvm::SDep::Data, E, I, LLVM_DUMP_METHOD, MaxDepth, and std::swap().

◆ dump()

LLVM_DUMP_METHOD void SUnit::dump ( const ScheduleDAG G) const

◆ dumpAll()

LLVM_DUMP_METHOD void SUnit::dumpAll ( const ScheduleDAG G) const

◆ getDepth()

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

◆ getHeight()

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

◆ getInstr()

MachineInstr* llvm::SUnit::getInstr ( ) const
inline

Returns the representative MachineInstr for this SUnit.

This may be used during post-regalloc scheduling.

Definition at line 378 of file ScheduleDAG.h.

References assert(), D, and llvm::cl::Required.

Referenced by llvm::ScheduleDAGInstrs::addChainDependency(), llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), addPredBarrier(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::HexagonSubtarget::adjustSchedDependency(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::HexagonSubtarget::BankConflictMutation::apply(), biasPhysRegCopy(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), llvm::SchedBoundary::bumpNode(), llvm::HexagonPacketizerList::canPromoteToDotCur(), llvm::HexagonPacketizerList::canPromoteToDotNew(), llvm::HexagonPacketizerList::canPromoteToNewValue(), llvm::HexagonPacketizerList::canPromoteToNewValueStore(), llvm::SchedBoundary::checkHazard(), llvm::ScheduleDAGMILive::collectVRegUses(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveOuts(), llvm::createCopyConstrainDAGMutation(), llvm::createStoreClusterDAGMutation(), llvm::ScheduleDAGInstrs::dumpNode(), llvm::SystemZHazardRecognizer::dumpSU(), llvm::ARMHazardRecognizer::EmitInstruction(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::GCNHazardRecognizer::EmitInstruction(), llvm::PPCHazardRecognizer970::EmitInstruction(), llvm::SystemZHazardRecognizer::EmitInstruction(), fuseInstructionPair(), llvm::ScheduleDAGInstrs::getGraphNodeLabel(), llvm::ARMHazardRecognizer::getHazardType(), llvm::HexagonHazardRecognizer::getHazardType(), llvm::PPCHazardRecognizer970::getHazardType(), llvm::GCNHazardRecognizer::getHazardType(), llvm::ScheduleDAG::getInstrDesc(), getMachineInstr(), llvm::SISubtarget::getMaxNumVGPRs(), llvm::SystemZHazardRecognizer::getSchedClass(), llvm::ScheduleDAGInstrs::getSchedClass(), getUnderlyingObjects(), getZeroLatency(), hasDataDependence(), hasDataDependencyPred(), llvm::SchedRemainder::init(), llvm::GenericScheduler::initCandidate(), llvm::GCNMaxOccupancySchedStrategy::initialize(), INITIALIZE_PASS(), llvm::ScheduleDAGInstrs::initSUnits(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), llvm::HexagonPacketizerList::isLegalToPruneDependencies(), llvm::VLIWResourceModel::isResourceAvailable(), multipleIterations(), nextIfDebug(), llvm::VLIWPacketizerList::PacketizeMIs(), llvm::GCNMaxOccupancySchedStrategy::pickNode(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::GCNHazardRecognizer::PreEmitNoops(), llvm::R600SchedStrategy::releaseBottomNode(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::SchedBoundary::releaseNode(), removePhis(), llvm::GenericScheduler::reschedulePhysRegCopies(), llvm::VLIWResourceModel::reserveResources(), llvm::R600SchedStrategy::schedNode(), llvm::SIScheduleBlock::schedule(), llvm::ScheduleDAGMI::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::ConvergingVLIWScheduler::SchedulingCost(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), llvm::HexagonPacketizerList::updateOffset(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::HexagonSubtarget::usePredicatedCalls(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::SchedDFSImpl::visitPreorder().

◆ getNode()

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

◆ isBottomReady()

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

◆ isBoundaryNode()

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

Boundary nodes are placeholders for the boundary of the scheduling region.

BoundaryNodes can have DAG edges, including Data edges, but they do not correspond to schedulable entities (e.g. instructions) and do not have a valid ID. Consequently, always check for boundary nodes before accessing an associative data structure keyed on node ID.

Definition at line 349 of file ScheduleDAG.h.

Referenced by llvm::SchedDFSResult::compute(), computePath(), fuseInstructionPair(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), getZeroLatency(), and hasDataSucc().

◆ isInstr()

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

◆ isPred()

bool llvm::SUnit::isPred ( const SUnit N) const
inline

Tests if node N is a predecessor of this node.

Definition at line 436 of file ScheduleDAG.h.

References N.

Referenced by multipleIterations().

◆ isSucc()

bool llvm::SUnit::isSucc ( const SUnit N) const
inline

◆ isTopReady()

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

◆ print() [1/2]

LLVM_DUMP_METHOD raw_ostream & SUnit::print ( raw_ostream O,
const SUnit N = nullptr,
const SUnit X = nullptr 
) const

Definition at line 340 of file ScheduleDAG.cpp.

References LLVM_DUMP_METHOD.

Referenced by fuseInstructionPair().

◆ print() [2/2]

LLVM_DUMP_METHOD raw_ostream & SUnit::print ( raw_ostream O,
const ScheduleDAG G 
) const

◆ removePred()

void SUnit::removePred ( const SDep D)

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 173 of file ScheduleDAG.cpp.

References assert(), D, llvm::SDep::Data, llvm::SmallVectorTemplateCommon< T >::end(), llvm::find(), llvm::SDep::getKind(), llvm::SDep::getSUnit(), I, isScheduled, llvm::SDep::isWeak(), N, NumSuccs, NumSuccsLeft, P, llvm::SDep::setSUnit(), Succs, and WeakSuccsLeft.

Referenced by llvm::HexagonSubtarget::UsrOverflowMutation::apply(), getUnderlyingObjects(), and swapAntiDependences().

◆ 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 215 of file ScheduleDAG.cpp.

References llvm::SmallVectorBase::empty(), llvm::SDep::getSUnit(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), and Succs.

Referenced by llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), and setHeightToAtLeast().

◆ 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 245 of file ScheduleDAG.cpp.

References llvm::Depth.

Referenced by INITIALIZE_PASS().

◆ 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 230 of file ScheduleDAG.cpp.

References llvm::SmallVectorBase::empty(), llvm::SDep::getSUnit(), llvm::SmallVectorImpl< T >::pop_back_val(), Preds, and llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back().

Referenced by addPred(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), FindCallSeqStart(), and setHeightToAtLeast().

◆ setHeightToAtLeast()

void SUnit::setHeightToAtLeast ( unsigned  NewHeight)

◆ setInstr()

void llvm::SUnit::setInstr ( MachineInstr MI)
inline

Assigns the instruction for the SUnit.

This may be used during post-regalloc scheduling.

Definition at line 371 of file ScheduleDAG.h.

References assert(), and MI.

Referenced by llvm::ScheduleDAGInstrs::addSchedBarrierDeps(), multipleIterations(), and removePhis().

◆ setNode()

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

Assigns the representative SDNode for this SUnit.

This may be used during pre-regalloc scheduling.

Definition at line 353 of file ScheduleDAG.h.

References assert(), and N.

Referenced by RemoveUnusedGlue().

Member Data Documentation

◆ BotReadyCycle

unsigned llvm::SUnit::BotReadyCycle = 0

◆ CopyDstRC

const TargetRegisterClass* llvm::SUnit::CopyDstRC
Initial value:
=
nullptr

Is a special copy node if != nullptr.

Definition at line 307 of file ScheduleDAG.h.

Referenced by isOperandOf(), and ProcessSourceNode().

◆ CopySrcRC

const TargetRegisterClass* llvm::SUnit::CopySrcRC = nullptr

Definition at line 309 of file ScheduleDAG.h.

Referenced by isOperandOf().

◆ hasPhysRegClobbers

bool llvm::SUnit::hasPhysRegClobbers

Has any physreg defs, used or not.

Definition at line 286 of file ScheduleDAG.h.

Referenced by canClobberPhysRegDefs(), llvm::ScheduleDAGSDNodes::Clone(), and RemoveUnusedGlue().

◆ hasPhysRegDefs

bool llvm::SUnit::hasPhysRegDefs

◆ hasPhysRegUses

bool llvm::SUnit::hasPhysRegUses

Has physreg uses.

Definition at line 284 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps(), and llvm::GenericScheduler::schedNode().

◆ hasReservedResource

bool llvm::SUnit::hasReservedResource

◆ isAvailable

bool llvm::SUnit::isAvailable

◆ isCall

bool llvm::SUnit::isCall

◆ isCallOp

bool llvm::SUnit::isCallOp

Is a function call operand.

Definition at line 281 of file ScheduleDAG.h.

Referenced by BURRSort(), CalcNodeSethiUllmanNumber(), llvm::ScheduleDAGSDNodes::Clone(), and RemoveUnusedGlue().

◆ isCloned

bool llvm::SUnit::isCloned

True if this node has been cloned.

Definition at line 292 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGSDNodes::Clone(), and llvm::ScheduleDAGSDNodes::EmitSchedule().

◆ isCommutable

bool llvm::SUnit::isCommutable

◆ isPending

bool llvm::SUnit::isPending

True once pending.

Definition at line 287 of file ScheduleDAG.h.

Referenced by CheckForLiveRegDef(), FindCallSeqStart(), GetCostForDef(), and getNodeRegMask().

◆ isScheduled

bool llvm::SUnit::isScheduled

◆ isScheduleHigh

bool llvm::SUnit::isScheduleHigh

◆ isScheduleLow

bool llvm::SUnit::isScheduleLow

True if preferable to schedule low.

Definition at line 291 of file ScheduleDAG.h.

Referenced by checkSpecialNodes(), llvm::ScheduleDAGSDNodes::Clone(), and RemoveUnusedGlue().

◆ isTwoAddress

bool llvm::SUnit::isTwoAddress

Is a two-address instruction.

Definition at line 282 of file ScheduleDAG.h.

Referenced by canClobberPhysRegDefs(), canEnableCoalescing(), llvm::ScheduleDAGSDNodes::Clone(), isOperandOf(), and RemoveUnusedGlue().

◆ isUnbuffered

bool llvm::SUnit::isUnbuffered

◆ isVRegCycle

bool llvm::SUnit::isVRegCycle

May use and def the same vreg.

Definition at line 279 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGSDNodes::Clone(), hasVRegCycleUse(), initVRegCycle(), and resetVRegCycle().

◆ Latency

unsigned short llvm::SUnit::Latency = 0

◆ NodeNum

unsigned llvm::SUnit::NodeNum = BoundaryID

Entry # of node in the node vector.

Definition at line 269 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGTopologicalSort::AddPred(), llvm::SIScheduleBlock::addUnit(), BUCompareLatency(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::SchedBoundary::bumpNode(), BURRSort(), CalcNodeSethiUllmanNumber(), canClobberPhysRegDefs(), canEnableCoalescing(), CheckForLiveRegDef(), llvm::SchedBoundary::checkHazard(), llvm::ScheduleDAGMILive::computeCyclicCriticalPath(), computeLiveOuts(), llvm::createCopyConstrainDAGMutation(), createILPMinScheduler(), llvm::createStoreClusterDAGMutation(), llvm::SystemZHazardRecognizer::dumpSU(), llvm::PPCDispatchGroupSBHazardRecognizer::EmitInstruction(), llvm::SIScheduleBlock::finalizeUnits(), llvm::SchedBoundary::findMaxLatency(), llvm::ScheduleDAGSDNodes::getGraphNodeLabel(), llvm::ScoreboardHazardRecognizer::getHazardType(), llvm::SchedDFSResult::getILP(), llvm::DOTGraphTraits< ScheduleDAGMI * >::getNodeLabel(), getNodeRegMask(), llvm::SchedDFSResult::getNumInstrs(), llvm::ScheduleDAGMILive::getPressureDiff(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), llvm::SchedDFSResult::getSubtreeID(), getUnderlyingObjects(), getZeroLatency(), hasDataDependence(), hasDataDependencyPred(), hasVRegCycleUse(), llvm::GenericScheduler::initCandidate(), llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(), initVRegCycle(), llvm::ScheduleDAGInstrs::insertBarrierChain(), isOperandOf(), llvm::ScheduleDAGTopologicalSort::IsReachable(), llvm::SIScheduleBlockCreator::isSUInBlock(), llvm::SchedDFSImpl::isVisited(), llvm::SchedDFSImpl::joinPredSubtree(), multipleIterations(), llvm::latency_sort::operator()(), llvm::resource_sort::operator()(), llvm::GCNMaxOccupancySchedStrategy::pickNode(), llvm::GenericScheduler::pickNode(), llvm::PostGenericScheduler::pickNode(), llvm::LatencyPriorityQueue::push(), llvm::ResourcePriorityQueue::push(), llvm::ScheduleDAGInstrs::reduceHugeMemNodeMaps(), llvm::ScheduleDAGTopologicalSort::RemovePred(), RemoveUnusedGlue(), llvm::SystemZPostRASchedStrategy::schedNode(), llvm::SIScheduleBlock::schedule(), llvm::SIScheduleDAGMI::schedule(), llvm::ScheduleDAGMILive::scheduleMI(), llvm::SIScheduler::scheduleVariant(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), llvm::ResourcePriorityQueue::SUSchedulingCost(), llvm::GenericSchedulerBase::traceCandidate(), llvm::GenericScheduler::tryCandidate(), llvm::PostGenericScheduler::tryCandidate(), llvm::ScheduleDAGMILive::updatePressureDiffs(), llvm::SchedDFSImpl::visitPostorderEdge(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::SchedDFSImpl::visitPreorder().

◆ NodeQueueId

unsigned llvm::SUnit::NodeQueueId = 0

◆ NumPreds

unsigned llvm::SUnit::NumPreds = 0

◆ NumPredsLeft

unsigned llvm::SUnit::NumPredsLeft = 0

◆ NumRegDefsLeft

unsigned short llvm::SUnit::NumRegDefsLeft = 0

◆ NumSuccs

unsigned llvm::SUnit::NumSuccs = 0

◆ NumSuccsLeft

unsigned llvm::SUnit::NumSuccsLeft = 0

◆ OrigNode

SUnit* llvm::SUnit::OrigNode = nullptr

If not this, the node from which this node was cloned.

(SD scheduling only)

Definition at line 255 of file ScheduleDAG.h.

Referenced by canEnableCoalescing(), llvm::ScheduleDAGSDNodes::Clone(), and llvm::ScheduleDAGSDNodes::EmitSchedule().

◆ Preds

SmallVector<SDep, 4> llvm::SUnit::Preds

All sunit predecessors.

Definition at line 261 of file ScheduleDAG.h.

Referenced by llvm::SchedDFSImpl::addConnection(), AntiDepEdges(), llvm::HexagonSubtarget::UsrOverflowMutation::apply(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), calcMaxScratches(), CalcNodeSethiUllmanNumber(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), CheckForLiveRegDef(), computeLiveOuts(), computePath(), llvm::createCopyConstrainDAGMutation(), llvm::createStoreClusterDAGMutation(), CriticalPathStep(), llvm::SUnitIterator::end(), FindCallSeqStart(), fuseInstructionPair(), llvm::SISubtarget::getMaxNumVGPRs(), getNodeRegMask(), llvm::SUnitIterator::getSDep(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), getUnderlyingObjects(), getZeroLatency(), hasDataDependence(), hasDataDependencyPred(), hasOnlyLiveInOpers(), hasVRegCycleUse(), ignoreDependence(), llvm::ScheduleDAGTopologicalSort::InitDAGTopologicalSorting(), initVRegCycle(), llvm::DOTGraphTraits< ScheduleDAGMI * >::isNodeHidden(), isOperandOf(), isSingleUnscheduledPred(), multipleIterations(), numberCtrlPredInSU(), llvm::latency_sort::operator()(), llvm::resource_sort::operator()(), llvm::SUnitIterator::operator*(), ProcessSourceNode(), llvm::HexagonPacketizerList::producesStall(), llvm::ScheduleDAGMI::releasePredecessors(), llvm::ConvergingVLIWScheduler::releaseTopNode(), removePhis(), llvm::GenericScheduler::reschedulePhysRegCopies(), resetVRegCycle(), llvm::ResourcePriorityQueue::ResourcePriorityQueue(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::ConvergingVLIWScheduler::SchedulingCost(), setHeightDirty(), setHeightToAtLeast(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), swapAntiDependences(), llvm::HexagonPacketizerList::updateOffset(), llvm::HexagonSubtarget::usePredicatedCalls(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::ScheduleDAGTopologicalSort::WillCreateCycle().

◆ SchedClass

const MCSchedClassDesc* llvm::SUnit::SchedClass
Initial value:
=
nullptr

nullptr or resolved SchedClass.

Definition at line 258 of file ScheduleDAG.h.

Referenced by llvm::SystemZHazardRecognizer::getSchedClass(), and llvm::ScheduleDAGInstrs::getSchedClass().

◆ SchedulingPref

Sched::Preference llvm::SUnit::SchedulingPref = Sched::None

Scheduling preference.

Definition at line 295 of file ScheduleDAG.h.

Referenced by BUCompareLatency(), llvm::ScheduleDAGSDNodes::Clone(), and llvm::ScheduleDAGSDNodes::newSUnit().

◆ Succs

SmallVector<SDep, 4> llvm::SUnit::Succs

All sunit successors.

Definition at line 262 of file ScheduleDAG.h.

Referenced by addPred(), llvm::HexagonSubtarget::adjustSchedDependency(), llvm::HexagonSubtarget::HVXMemLatencyMutation::apply(), llvm::HexagonPacketizerList::arePredicatesComplements(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), CalcNodeSethiUllmanNumber(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), CheckForLiveRegDef(), closestSucc(), computeLiveOuts(), computePath(), llvm::createCopyConstrainDAGMutation(), llvm::createStoreClusterDAGMutation(), llvm::HexagonHazardRecognizer::EmitInstruction(), FindCallSeqStart(), fuseInstructionPair(), llvm::SISubtarget::getMaxNumVGPRs(), getNodeRegMask(), llvm::ScheduleDAGTopologicalSort::GetSubGraph(), getZeroLatency(), hasDataDependence(), hasDataDependencyPred(), hasDataSucc(), hasOnlyLiveOutUses(), ignoreDependence(), INITIALIZE_PASS(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), llvm::DOTGraphTraits< ScheduleDAGMI * >::isNodeHidden(), isOperandOf(), isSingleUnscheduledSucc(), isSuccOrder(), multipleIterations(), numberCtrlDepsInSU(), ProcessSourceNode(), llvm::LatencyPriorityQueue::push(), llvm::ResourcePriorityQueue::push(), llvm::ConvergingVLIWScheduler::releaseBottomNode(), llvm::ScheduleDAGMI::releaseSuccessors(), removePhis(), removePred(), llvm::ScheduleDAGTopologicalSort::RemovePred(), llvm::GenericScheduler::reschedulePhysRegCopies(), llvm::ResourcePriorityQueue::ResourcePriorityQueue(), llvm::HexagonPacketizerList::restrictingDepExistInPacket(), llvm::SIScheduleBlock::schedule(), llvm::LatencyPriorityQueue::scheduledNode(), llvm::ResourcePriorityQueue::scheduledNode(), llvm::ConvergingVLIWScheduler::SchedulingCost(), setDepthDirty(), setHeightToAtLeast(), llvm::SIScheduleDAGMI::SIScheduleDAGMI(), and llvm::HexagonSubtarget::usePredicatedCalls().

◆ TopReadyCycle

unsigned llvm::SUnit::TopReadyCycle = 0

◆ WeakPredsLeft

unsigned llvm::SUnit::WeakPredsLeft = 0

of weak preds not scheduled.

Definition at line 275 of file ScheduleDAG.h.

Referenced by getWeakLeft(), INITIALIZE_PASS(), llvm::ScheduleDAGMI::releaseSucc(), and llvm::SIScheduleBlock::schedule().

◆ WeakSuccsLeft

unsigned llvm::SUnit::WeakSuccsLeft = 0

of weak succs not scheduled.

Definition at line 276 of file ScheduleDAG.h.

Referenced by addPred(), getWeakLeft(), llvm::ScheduleDAGMI::releasePred(), and removePred().


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