78#ifdef DEBUG_BUBBLEFISH_SCHEDULER
80 std::cerr <<
"\t\t\t\tProlog cycle assign fail for loop-dre: "
82 <<
" prolog cycle: " << prologCycle << std::endl;
90 for (
auto edge: edges) {
92#ifdef DEBUG_BUBBLEFISH_SCHEDULER
93 std::cerr <<
"DRE not allowed due op edge: "
94 << edge->toString() << std::endl;
101#ifdef DEBUG_BUBBLEFISH_SCHEDULER
102 std::cerr <<
"DRE not allowed due edge: "
103 << edge->toString() << std::endl;
void nodeResurrected(MoveNode &mn)
bool killDeadResults() const
void nodeKilled(MoveNode &mn)
static const int PROLOG_CYCLE_BIAS
virtual bool canAssign(int cycle, MoveNode &mn, const TTAMachine::Bus *bus=nullptr, const TTAMachine::FunctionUnit *srcFU=nullptr, const TTAMachine::FunctionUnit *dstFU=nullptr, const TTAMachine::Bus *prologBus=nullptr, int immWriteCycle=-1, int prologImmWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1, bool ignoreGWN=false)
SimpleResourceManager * prologRM() const
DataDependenceGraph & ddg()
MoveNodeDuplicator & duplicator() const
bool operator()() override
void undoOnlyMe() override
void restoreNodeFromParent(GraphNode &node)
virtual void dropNode(Node &node)
virtual EdgeSet outEdges(const Node &node) const
EdgeSet copyDepsOver(MoveNode &node, bool anti, bool raw)
std::set< GraphEdge *, typename GraphEdge::Comparator > EdgeSet
MoveNode * getMoveNode(MoveNode &mn)
std::string toString() const
virtual void assign(int cycle, MoveNode &node, const TTAMachine::Bus *bus=NULL, const TTAMachine::FunctionUnit *srcFU=NULL, const TTAMachine::FunctionUnit *dstFU=NULL, int immWriteCycle=-1, const TTAMachine::ImmediateUnit *immu=nullptr, int immRegIndex=-1) override
virtual void unassign(MoveNode &node) override