LLVM API Documentation
Compute the values of each DAG node for various metrics during DFS. More...
#include <ScheduleDFS.h>
Classes | |
struct | Connection |
Record a connection between subtrees and the connection level. | |
struct | NodeData |
Per-SUnit data computed during DFS for various metrics. | |
struct | TreeData |
Per-Subtree data computed during DFS. | |
Public Member Functions | |
SchedDFSResult (bool IsBU, unsigned lim) | |
unsigned | getSubtreeLimit () const |
Get the node cutoff before subtrees are considered significant. | |
bool | empty () const |
Return true if this DFSResult is uninitialized. | |
void | clear () |
Clear the results. | |
void | resize (unsigned NumSUnits) |
Initialize the result data with the size of the DAG. | |
void | compute (ArrayRef< SUnit > SUnits) |
Compute various metrics for the DAG with given roots. | |
unsigned | getNumInstrs (const SUnit *SU) const |
Get the number of instructions in the given subtree and its children. | |
unsigned | getNumSubInstrs (unsigned SubtreeID) const |
Get the number of instructions in the given subtree not including children. | |
ILPValue | getILP (const SUnit *SU) const |
Get the ILP value for a DAG node. | |
unsigned | getNumSubtrees () const |
The number of subtrees detected in this DAG. | |
unsigned | getSubtreeID (const SUnit *SU) const |
Get the ID of the subtree the given DAG node belongs to. | |
unsigned | getSubtreeLevel (unsigned SubtreeID) const |
Get the connection level of a subtree. | |
void | scheduleTree (unsigned SubtreeID) |
Scheduler callback to update SubtreeConnectLevels when a tree is initially scheduled. | |
Friends | |
class | SchedDFSImpl |
Compute the values of each DAG node for various metrics during DFS.
Definition at line 66 of file ScheduleDFS.h.
llvm::SchedDFSResult::SchedDFSResult | ( | bool | IsBU, |
unsigned | lim | ||
) | [inline] |
Definition at line 117 of file ScheduleDFS.h.
void llvm::SchedDFSResult::clear | ( | ) | [inline] |
Clear the results.
Definition at line 129 of file ScheduleDFS.h.
References llvm::SmallVectorImpl< T >::clear().
Referenced by llvm::ScheduleDAGMILive::computeDFSResult().
void SchedDFSResult::compute | ( | ArrayRef< SUnit > | SUnits | ) |
Compute various metrics for the DAG with given roots.
Compute an ILP metric for all nodes in the subDAG reachable via depth-first search from this root.
Definition at line 1460 of file ScheduleDAGInstrs.cpp.
References llvm::ArrayRef< T >::begin(), llvm::SDep::Data, llvm::ArrayRef< T >::end(), llvm::SchedDFSImpl::finalize(), llvm::SDep::getKind(), llvm::SDep::getSUnit(), hasDataSucc(), llvm::SUnit::isBoundaryNode(), llvm::SchedDFSImpl::isVisited(), llvm_unreachable, llvm::SchedDFSImpl::visitCrossEdge(), llvm::SchedDFSImpl::visitPostorderEdge(), llvm::SchedDFSImpl::visitPostorderNode(), and llvm::SchedDFSImpl::visitPreorder().
Referenced by llvm::ScheduleDAGMILive::computeDFSResult().
bool llvm::SchedDFSResult::empty | ( | ) | const [inline] |
Return true if this DFSResult is uninitialized.
resize() initializes DFSResult, while compute() populates it.
Definition at line 126 of file ScheduleDFS.h.
Referenced by getSubtreeID().
ILPValue llvm::SchedDFSResult::getILP | ( | const SUnit * | SU | ) | const [inline] |
Get the ILP value for a DAG node.
A leaf node has an ILP of 1/1.
Definition at line 159 of file ScheduleDFS.h.
References llvm::SUnit::getDepth(), and llvm::SUnit::NodeNum.
unsigned llvm::SchedDFSResult::getNumInstrs | ( | const SUnit * | SU | ) | const [inline] |
Get the number of instructions in the given subtree and its children.
Definition at line 146 of file ScheduleDFS.h.
References llvm::SUnit::NodeNum.
Referenced by llvm::DOTGraphTraits< ScheduleDAGMI * >::getNodeLabel().
unsigned llvm::SchedDFSResult::getNumSubInstrs | ( | unsigned | SubtreeID | ) | const [inline] |
Get the number of instructions in the given subtree not including children.
Definition at line 152 of file ScheduleDFS.h.
unsigned llvm::SchedDFSResult::getNumSubtrees | ( | ) | const [inline] |
The number of subtrees detected in this DAG.
Definition at line 164 of file ScheduleDFS.h.
Referenced by llvm::ScheduleDAGMILive::computeDFSResult().
unsigned llvm::SchedDFSResult::getSubtreeID | ( | const SUnit * | SU | ) | const [inline] |
Get the ID of the subtree the given DAG node belongs to.
For convenience, if DFSResults have not been computed yet, give everything tree ID 0.
Definition at line 170 of file ScheduleDFS.h.
References empty(), and llvm::SUnit::NodeNum.
Referenced by llvm::DOTGraphTraits< ScheduleDAGMI * >::getNodeAttributes(), and llvm::ScheduleDAGMILive::schedule().
unsigned llvm::SchedDFSResult::getSubtreeLevel | ( | unsigned | SubtreeID | ) | const [inline] |
Get the connection level of a subtree.
For bottom-up trees, the connection level is the latency depth (in cycles) of the deepest connection to another subtree.
Definition at line 181 of file ScheduleDFS.h.
unsigned llvm::SchedDFSResult::getSubtreeLimit | ( | ) | const [inline] |
Get the node cutoff before subtrees are considered significant.
Definition at line 121 of file ScheduleDFS.h.
void llvm::SchedDFSResult::resize | ( | unsigned | NumSUnits | ) | [inline] |
Initialize the result data with the size of the DAG.
Definition at line 137 of file ScheduleDFS.h.
Referenced by llvm::ScheduleDAGMILive::computeDFSResult().
void SchedDFSResult::scheduleTree | ( | unsigned | SubtreeID | ) |
Scheduler callback to update SubtreeConnectLevels when a tree is initially scheduled.
The root of the given SubtreeID was just scheduled. For all subtrees connected to this tree, record the depth of the connection so that the nearest connected subtrees can be prioritized.
Definition at line 1508 of file ScheduleDAGInstrs.cpp.
References llvm::sys::path::begin(), llvm::dbgs(), DEBUG, llvm::sys::path::end(), and I.
Referenced by llvm::ScheduleDAGMILive::schedule().
friend class SchedDFSImpl [friend] |
Definition at line 67 of file ScheduleDFS.h.