Go to the documentation of this file.
44 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
45 std::cerr <<
"\tScheduling pre-loop-shared operand: "
59 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
60 std::cerr <<
"\t\tMissing prolog MN for the move. " << std::endl;
65 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
66 std::cerr <<
"\tddg lc: " << ddgLC << std::endl;
75 std::min(ddgLC, lastCycleOfProlog), *
prologMN_);
76 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
77 std::cerr <<
"\trmlc: " << rmlc << std::endl;
84 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
85 std::cerr <<
"scheduling of pre-loop opshare ok!"
92 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
93 std::cerr <<
"undoing scheudle of pre-loop opschare: "
97 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
98 std::cerr <<
"unassigned scheudle of pre-loop opschare: "
MoveNodeDuplicator & duplicator() const
std::string toString() const
bool isUnconditional() const
void setGuard(MoveGuard *guard)
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 unsigned initiationInterval() const
virtual void unassign(MoveNode &node) override
std::pair< MoveNode *, bool > duplicateMoveNode(MoveNode &mn, bool addToDDG, bool ignoreSameBBBackEdges)
SimpleResourceManager * prologRM() const
DataDependenceGraph * prologDDG()
void disposeMoveNode(MoveNode *newMN)
SimpleResourceManager & rm() const
static const int PROLOG_CYCLE_BIAS
TTAProgram::Move & move()
virtual int latestCycle(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) const override
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