Go to the documentation of this file.
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;
MoveNodeDuplicator & duplicator() const
std::string toString() const
bool killDeadResults() const
void undoOnlyMe() override
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
virtual void dropNode(Node &node)
SimpleResourceManager * prologRM() const
std::set< DataDependenceEdge *, typename DataDependenceEdge ::Comparator > EdgeSet
bool operator()() override
DataDependenceGraph & ddg()
static const int PROLOG_CYCLE_BIAS
MoveNode * getMoveNode(MoveNode &mn)
virtual EdgeSet outEdges(const Node &node) const
void nodeResurrected(MoveNode &mn)
void nodeKilled(MoveNode &mn)
EdgeSet copyDepsOver(MoveNode &node, bool anti, bool raw)
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)
void restoreNodeFromParent(GraphNode &node)