51 std::list<BFPushAntidepDown*> rescheds;
53 for (
auto e: outEdges) {
61 int cycle = aDepHead.
cycle();
66 if (cycle + lat >
maxLC_) {
70#ifdef DEBUG_BUBBLEFISH_SCHEDULER
71 std::cerr <<
"\t\tShould rescheduling move at: "
73 std::cerr <<
"\t\tdstLC: " << dstLC << std::endl;
75 if (dstLC > aDepHead.
cycle()) {
81 int curLC = dstLC - lat + 1;
89#ifdef DEBUG_BUBBLEFISH_SCHEDULER
90 std::cerr <<
"newLC: " << newLC <<
" old LC: " <<
oldLC_ << std::endl;
92 for (std::list<BFPushAntidepDown*>::iterator i = rescheds.begin();
93 i != rescheds.end();) {
101#ifdef DEBUG_BUBBLEFISH_SCHEDULER
102 std::cerr <<
"\t\t\tCould improve? newLC: " << newLC << std::endl;
106 for (
auto i = rescheds.begin(); i != rescheds.end();) {
DataDependenceGraph & ddg()
virtual Node & headNode(const Edge &edge) const
virtual EdgeSet outEdges(const Node &node) const
int latestCycle(const MoveNode &moveNode, unsigned int ii=UINT_MAX, bool ignoreRegAntideps=false, bool ignoreUnscheduledSuccessors=true, bool ignoreGuards=false, bool ignoreFUDeps=false, bool ignoreSameOperationEdges=false) const
std::set< GraphEdge *, typename GraphEdge::Comparator > EdgeSet
std::string toString() const
bool runPostChild(Reversible *preChild)
std::stack< Reversible * > postChildren_