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: "
static const int PROLOG_CYCLE_BIAS
DataDependenceGraph * prologDDG()
SimpleResourceManager * prologRM() const
MoveNodeDuplicator & duplicator() const
SimpleResourceManager & rm() 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
void disposeMoveNode(MoveNode *newMN)
std::pair< MoveNode *, bool > duplicateMoveNode(MoveNode &mn, bool addToDDG, bool ignoreSameBBBackEdges)
std::string toString() const
TTAProgram::Move & move()
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
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
bool isUnconditional() const
void setGuard(MoveGuard *guard)