LLVM API Documentation

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

Internal state used to compute SchedDFSResult. More...

Public Member Functions

 SchedDFSImpl (SchedDFSResult &r)
 
bool isVisited (const SUnit *SU) const
 
void visitPreorder (const SUnit *SU)
 
void visitPostorderNode (const SUnit *SU)
 
void visitPostorderEdge (const SDep &PredDep, const SUnit *Succ)
 
void visitCrossEdge (const SDep &PredDep, const SUnit *Succ)
 Add a connection for cross edges. More...
 
void finalize ()
 

Protected Member Functions

bool joinPredSubtree (const SDep &PredDep, const SUnit *Succ, bool CheckLimit=true)
 
void addConnection (unsigned FromTree, unsigned ToTree, unsigned Depth)
 Called by finalize() to record a connection between trees. More...
 

Detailed Description

Internal state used to compute SchedDFSResult.

Definition at line 1032 of file ScheduleDAGInstrs.cpp.

Constructor & Destructor Documentation

llvm::SchedDFSImpl::SchedDFSImpl ( SchedDFSResult r)
inline

Member Function Documentation

void llvm::SchedDFSImpl::addConnection ( unsigned  FromTree,
unsigned  ToTree,
unsigned  Depth 
)
inlineprotected
void llvm::SchedDFSImpl::finalize ( )
inline
bool llvm::SchedDFSImpl::isVisited ( const SUnit SU) const
inline

Return true if this node been visited by the DFS traversal.

During visitPostorderNode the Node's SubtreeID is assigned to the Node ID. Later, SubtreeID is updated but remains valid.

Definition at line 1063 of file ScheduleDAGInstrs.cpp.

References llvm::SUnit::NodeNum.

Referenced by llvm::SchedDFSResult::compute().

bool llvm::SchedDFSImpl::joinPredSubtree ( const SDep PredDep,
const SUnit Succ,
bool  CheckLimit = true 
)
inlineprotected

Join the predecessor subtree with the successor that is its DFS parent. Apply some heuristics before joining.

Definition at line 1174 of file ScheduleDAGInstrs.cpp.

References llvm::SDep::Data, llvm::SDep::getKind(), llvm::SDep::getSUnit(), llvm::IntEqClasses::join(), and llvm::SUnit::NodeNum.

Referenced by visitPostorderEdge(), and visitPostorderNode().

void llvm::SchedDFSImpl::visitCrossEdge ( const SDep PredDep,
const SUnit Succ 
)
inline

Add a connection for cross edges.

Definition at line 1128 of file ScheduleDAGInstrs.cpp.

References llvm::SDep::getSUnit().

Referenced by llvm::SchedDFSResult::compute().

void llvm::SchedDFSImpl::visitPostorderEdge ( const SDep PredDep,
const SUnit Succ 
)
inline

Called once for each tree edge after calling visitPostOrderNode on the predecessor. Increment the parent node's instruction count and preemptively join this subtree to its parent's if it is small enough.

Definition at line 1121 of file ScheduleDAGInstrs.cpp.

References llvm::SDep::getSUnit(), joinPredSubtree(), and llvm::SUnit::NodeNum.

Referenced by llvm::SchedDFSResult::compute().

void llvm::SchedDFSImpl::visitPostorderNode ( const SUnit SU)
inline

Called once for each node after all predecessors are visited. Revisit this node's predecessors and potentially join them now that we know the ILP of the other predecessors.

Definition at line 1078 of file ScheduleDAGInstrs.cpp.

References llvm::SparseSet< ValueT, KeyFunctorT, SparseT >::count(), llvm::SDep::Data, llvm::SparseSet< ValueT, KeyFunctorT, SparseT >::erase(), llvm::SUnit::getInstr(), llvm::MachineInstr::isTransient(), joinPredSubtree(), llvm::SUnit::NodeNum, and llvm::SUnit::Preds.

Referenced by llvm::SchedDFSResult::compute().

void llvm::SchedDFSImpl::visitPreorder ( const SUnit SU)
inline

Initialize this node's instruction count. We don't need to flag the node visited until visitPostorder because the DAG cannot have cycles.

Definition at line 1070 of file ScheduleDAGInstrs.cpp.

References llvm::SUnit::getInstr(), llvm::MachineInstr::isTransient(), and llvm::SUnit::NodeNum.

Referenced by llvm::SchedDFSResult::compute().


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