44 std::cerr <<
"push deps up prefcycle negative! "
48#ifdef DEBUG_BUBBLEFISH_SCHEDULER
52 std::cerr <<
"\tPushing loop deps up: " <<
mn_.
toString() << std::endl;
57 for (
auto e : inEdges) {
62#ifdef DEBUG_BUBBLEFISH_SCHEDULER
63 std::cerr <<
"\t\t\tmy prefcycle is: " <<
prefCycle_
64 <<
" latency is: " << eLat
65 <<
" so preftailcycle is: " << prefTailCycle
67 std::cerr <<
"\t\t\t\tedge: " <<e->toString() << std::endl;
69 if (loopDepTail.
cycle() > prefTailCycle) {
70 if (prefTailCycle < 0) {
71#ifdef DEBUG_BUBBLEFISH_SCHEDULER
86#ifdef DEBUG_BUBBLEFISH_SCHEDULER
89 std::cerr <<
"\tpushed up succesfully: "
91 <<
" preChildren size: "
96#ifdef DEBUG_BUBBLEFISH_SCHEDULER
99 std::cerr <<
"\t\tpushing up fail: "
101 <<
" preChildren size: "
105#ifdef DEBUG_BUBBLEFISH_SCHEDULER
113#ifdef DEBUG_BUBBLEFISH_SCHEDULER
#define assert(condition)
DataDependenceGraph & ddg()
static int recurseCounter_
virtual Node & tailNode(const Edge &edge) const
virtual EdgeSet inEdges(const Node &node) const
int edgeLatency(const DataDependenceEdge &edge, int ii, const MoveNode *tail, const MoveNode *head) const
std::set< GraphEdge *, typename GraphEdge::Comparator > EdgeSet
std::string toString() const
bool isSourceOperation() const
std::stack< Reversible * > preChildren_
void undoAndRemovePreChildren()
bool runPreChild(Reversible *preChild)