LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Public Attributes | List of all members
llvm::SUnit Class Reference

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

#include <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)
 
 SUnit (MachineInstr *instr, unsigned nodenum)
 
 SUnit ()
 SUnit - Construct a placeholder SUnit. More...
 
bool isBoundaryNode () const
 Boundary nodes are placeholders for the boundary of the scheduling region. More...
 
void setNode (SDNode *N)
 
SDNodegetNode () const
 
bool isInstr () const
 
void setInstr (MachineInstr *MI)
 
MachineInstrgetInstr () const
 
bool addPred (const SDep &D, bool Required=true)
 
void removePred (const SDep &D)
 
unsigned getDepth () const
 
unsigned getHeight () const
 
void setDepthToAtLeast (unsigned NewDepth)
 
void setHeightToAtLeast (unsigned NewHeight)
 
void setDepthDirty ()
 
void setHeightDirty ()
 
bool isPred (SUnit *N)
 isPred - Test if node N is a predecessor of this node. More...
 
bool isSucc (SUnit *N)
 isSucc - Test if node N is a successor of this node. More...
 
bool isTopReady () const
 
bool isBottomReady () const
 
void biasCriticalPath ()
 Order 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
 
void print (raw_ostream &O, const ScheduleDAG *G) const
 

Public Attributes

SUnitOrigNode
 
const MCSchedClassDescSchedClass
 
SmallVector< SDep, 4 > Preds
 
SmallVector< SDep, 4 > Succs
 
unsigned NodeNum
 
unsigned NodeQueueId
 
unsigned NumPreds
 
unsigned NumSuccs
 
unsigned NumPredsLeft
 
unsigned NumSuccsLeft
 
unsigned WeakPredsLeft
 
unsigned WeakSuccsLeft
 
unsigned short NumRegDefsLeft
 
unsigned short Latency
 
bool isVRegCycle: 1
 
bool isCall: 1
 
bool isCallOp: 1
 
bool isTwoAddress: 1
 
bool isCommutable: 1
 
bool hasPhysRegUses: 1
 
bool hasPhysRegDefs: 1
 
bool hasPhysRegClobbers: 1
 
bool isPending: 1
 
bool isAvailable: 1
 
bool isScheduled: 1
 
bool isScheduleHigh: 1
 
bool isScheduleLow: 1
 
bool isCloned: 1
 
Sched::Preference SchedulingPref
 
unsigned TopReadyCycle
 
unsigned BotReadyCycle
 
const TargetRegisterClassCopyDstRC
 
const TargetRegisterClassCopySrcRC
 

Detailed Description

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

Definition at line 249 of file ScheduleDAG.h.

Member Typedef Documentation

Definition at line 268 of file ScheduleDAG.h.

Definition at line 269 of file ScheduleDAG.h.

Definition at line 266 of file ScheduleDAG.h.

Definition at line 267 of file ScheduleDAG.h.

Constructor & Destructor Documentation

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

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

Definition at line 311 of file ScheduleDAG.h.

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

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

Definition at line 325 of file ScheduleDAG.h.

llvm::SUnit::SUnit ( )
inline

SUnit - Construct a placeholder SUnit.

Definition at line 338 of file ScheduleDAG.h.

Member Function Documentation

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

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

Definition at line 298 of file ScheduleDAG.cpp.

References llvm::SDep::Data, I, MaxDepth, llvm::next(), NumPreds, Preds, and std::swap().

Referenced by llvm::ScheduleDAGMI::findRootsAndBiasEdges().

void SUnit::dump ( const ScheduleDAG G) const
void SUnit::dumpAll ( const ScheduleDAG G) const
unsigned llvm::SUnit::getDepth ( ) const
inline
unsigned llvm::SUnit::getHeight ( ) const
inline

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

Definition at line 411 of file ScheduleDAG.h.

Referenced by BUCompareLatency(), BURRSort(), llvm::ScheduleDAGMI::computeCyclicCriticalPath(), llvm::LatencyPriorityQueue::dump(), llvm::ResourcePriorityQueue::dump(), dumpAll(), llvm::ConvergingVLIWScheduler::SchedulingCost(), setHeightToAtLeast(), and llvm::ResourcePriorityQueue::SUSchedulingCost().

MachineInstr* llvm::SUnit::getInstr ( ) const
inline
SDNode* llvm::SUnit::getNode ( ) const
inline
bool llvm::SUnit::isBottomReady ( ) const
inline
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 assoicative data structure keyed on node ID.

Definition at line 357 of file ScheduleDAG.h.

References NodeNum.

Referenced by llvm::SchedDFSResult::compute(), and llvm::ScheduleDAGMI::findRootsAndBiasEdges().

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

isInstr - Return true if this SUnit refers to a machine instruction as opposed to an SDNode.

Definition at line 375 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAG::getInstrDesc().

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

isPred - Test if node N is a predecessor of this node.

Definition at line 438 of file ScheduleDAG.h.

References N, and Preds.

Referenced by llvm::ScheduleDAGInstrs::buildSchedGraph().

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

isSucc - Test if node N is a successor of this node.

Definition at line 446 of file ScheduleDAG.h.

References N, and Succs.

Referenced by iterateChainSucc().

bool llvm::SUnit::isTopReady ( ) const
inline
void llvm::SUnit::print ( raw_ostream O,
const ScheduleDAG G 
) const
void SUnit::removePred ( const SDep D)

removePred - This 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 133 of file ScheduleDAG.cpp.

References llvm::SDep::Data, llvm::SDep::getKind(), llvm::SDep::getSUnit(), I, isScheduled, llvm::SDep::isWeak(), N, NumPreds, NumPredsLeft, NumSuccs, NumSuccsLeft, P, Preds, setDepthDirty(), llvm::SDep::setSUnit(), Succs, WeakPredsLeft, and WeakSuccsLeft.

void SUnit::setDepthDirty ( )

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

Definition at line 178 of file ScheduleDAG.cpp.

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

Referenced by addPred(), removePred(), and setDepthToAtLeast().

void SUnit::setDepthToAtLeast ( unsigned  NewDepth)

setDepthToAtLeast - If NewDepth is greater than this node's depth value, set it to be the new depth value. This also recursively marks successor nodes dirty.

setDepthToAtLeast - Update this node's successors to reflect the fact that this node's depth just increased.

Definition at line 213 of file ScheduleDAG.cpp.

References getDepth(), and setDepthDirty().

void SUnit::setHeightDirty ( )

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

Definition at line 194 of file ScheduleDAG.cpp.

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

Referenced by addPred(), and setHeightToAtLeast().

void SUnit::setHeightToAtLeast ( unsigned  NewHeight)

setDepthToAtLeast - If NewDepth is greater than this node's depth value, set it to be the new height value. This also recursively marks predecessor nodes dirty.

setHeightToAtLeast - Update this node's predecessors to reflect the fact that this node's height just increased.

Definition at line 224 of file ScheduleDAG.cpp.

References getHeight(), and setHeightDirty().

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

setInstr - Assign the instruction for the SUnit. This may be used during post-regalloc scheduling.

Definition at line 379 of file ScheduleDAG.h.

References llvm::A64CC::MI.

Referenced by llvm::ScheduleDAGInstrs::addSchedBarrierDeps().

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

setNode - Assign the representative SDNode for this SUnit. This may be used during pre-regalloc scheduling.

Definition at line 361 of file ScheduleDAG.h.

References N.

Member Data Documentation

unsigned llvm::SUnit::BotReadyCycle
const TargetRegisterClass* llvm::SUnit::CopyDstRC

Definition at line 306 of file ScheduleDAG.h.

const TargetRegisterClass* llvm::SUnit::CopySrcRC

Definition at line 307 of file ScheduleDAG.h.

bool llvm::SUnit::hasPhysRegClobbers

Definition at line 288 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGSDNodes::Clone().

bool llvm::SUnit::hasPhysRegDefs
bool llvm::SUnit::hasPhysRegUses

Definition at line 286 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps().

bool llvm::SUnit::isAvailable

Definition at line 290 of file ScheduleDAG.h.

bool llvm::SUnit::isCall
bool llvm::SUnit::isCallOp

Definition at line 283 of file ScheduleDAG.h.

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

bool llvm::SUnit::isCloned
bool llvm::SUnit::isCommutable
bool llvm::SUnit::isPending

Definition at line 289 of file ScheduleDAG.h.

bool llvm::SUnit::isScheduled
bool llvm::SUnit::isScheduleHigh
bool llvm::SUnit::isScheduleLow

Definition at line 293 of file ScheduleDAG.h.

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

bool llvm::SUnit::isTwoAddress

Definition at line 284 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGSDNodes::Clone().

bool llvm::SUnit::isVRegCycle
unsigned short llvm::SUnit::Latency
unsigned llvm::SUnit::NodeNum
unsigned llvm::SUnit::NodeQueueId
unsigned llvm::SUnit::NumPreds
unsigned llvm::SUnit::NumPredsLeft
unsigned short llvm::SUnit::NumRegDefsLeft
unsigned llvm::SUnit::NumSuccs
unsigned llvm::SUnit::NumSuccsLeft
SUnit* llvm::SUnit::OrigNode
SmallVector<SDep, 4> llvm::SUnit::Preds
const MCSchedClassDesc* llvm::SUnit::SchedClass

Definition at line 260 of file ScheduleDAG.h.

Referenced by llvm::ScheduleDAGInstrs::getSchedClass().

Sched::Preference llvm::SUnit::SchedulingPref
SmallVector<SDep, 4> llvm::SUnit::Succs
unsigned llvm::SUnit::TopReadyCycle
unsigned llvm::SUnit::WeakPredsLeft
unsigned llvm::SUnit::WeakSuccsLeft

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