Go to the documentation of this file.
55 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
56 std::cerr <<
"\t\tScheduling to exact cycle: " <<
mn_.
toString()
57 <<
" to cycle: " <<
c_ << std::endl;
66 std::cerr <<
"Early guard bypass failed!" << std::endl;
87 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
88 std::cerr <<
"\t\t\tddg lc: " << ddglc << std::endl;
89 std::cerr <<
"\t\t\tddg ec: " << ddgec << std::endl;
93 if (regCopyBefore != NULL) {
virtual void unassign(MoveNode &mn, bool disposePrologCopy=true)
void undoAndRemovePreChildren()
virtual bool assign(int cycle, MoveNode &, 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 ignoreGuardWriteCycle=false)
virtual void undoOnlyMe()
std::string toString() const
bool isUnconditional() const
MoveGuard & guard() const
bool isSourceOperation() const
DataDependenceGraph & ddg()
bool canBeScheduled(const MoveNode &mn)
int earliestCycle(const MoveNode &moveNode, unsigned int ii=UINT_MAX, bool ignoreRegWaRs=false, bool ignoreRegWaWs=false, bool ignoreGuards=false, bool ignoreFUDeps=false, bool ignoreSameOperationEdges=false, bool assumeBypassing=false) const
virtual Bus * parentBus() const
TTAProgram::Move & move()
const TTAMachine::FunctionUnit * srcFU_
bool runPreChild(Reversible *preChild)
const TTAMachine::Guard & guard() const
bool runPostChild(Reversible *preChild)
virtual bool operator()()
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 setSource(Terminal *src)
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
TTAProgram::Move * jumpLimitMove_