Go to the documentation of this file.
110 for (std::size_t i = 0; i <
nodes_.size(); ++i) {
114 node, UINT_MAX,
false,
false,
false,
false,
false,
122 if (nodeCycle == INT_MAX) {
127 cycle = std::max(nodeCycle, cycle);
165 for (std::size_t i = 0; i <
nodes_.size(); ++i) {
166 if (!
nodes_.at(i)->isScheduled())
174 for (std::size_t i = 0; i <
nodes_.size(); ++i) {
175 if (!
nodes_.at(i)->isPlaced())
192 for (std::size_t i = 0; i <
nodes_.size(); ++i) {
216 maxSD = std::max (maxSD, sinkDistance);
237 maxSD = std::max (maxSD, sourceDistance);
249 std::string result =
"";
261 if (
ddg_ ==
nullptr)
return false;
265 for (
auto e: outEdges) {
267 !e->isFalseDep() && !e->headPseudo() && !e->tailPseudo()) {
const DataDependenceGraph * ddg_
The data dependence graph the moves in this group belong to (optional).
std::string toString() const
MoveNode & node(int index) const
virtual Node & headNode(const Edge &edge) const
int maxSourceDistance(const GraphNode &node) const
std::vector< MoveNode * > nodes_
int maxSinkDistance() const
static std::ostream & logStream()
ProgramOperationPtr programOperationPtr() const
#define abortWithError(message)
bool isControlFlowMove() const
std::set< DataDependenceEdge *, typename DataDependenceEdge ::Comparator > EdgeSet
int maxSourceDistance() const
int maxSinkDistance(const GraphNode &node) const
bool isSourceOperation() const
bool writesJumpGuard() const
bool hasNode(const Node &) const
std::string toString() const
int earliestCycle(const MoveNode &moveNode, unsigned int ii=UINT_MAX, bool ignoreRegWaRs=false, bool ignoreRegWaWs=false, bool ignoreGuards=false, bool ignoreFUDeps=false, bool ignoreSameOperationEdges=false, bool assumeBypassing=false) const
void addNode(MoveNode &node)
virtual EdgeSet outEdges(const Node &node) const
TTAProgram::Move & move()
int earliestCycle(bool assumeBypassing=false) const