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 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)
DataDependenceGraph & ddg()
virtual void unassign(MoveNode &mn, bool disposePrologCopy=true)
bool canBeScheduled(const MoveNode &mn)
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 bool operator()()
virtual void undoOnlyMe()
TTAProgram::Move * jumpLimitMove_
const TTAMachine::FunctionUnit * srcFU_
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
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
std::string toString() const
TTAProgram::Move & move()
bool isSourceOperation() const
bool runPostChild(Reversible *preChild)
void undoAndRemovePreChildren()
bool runPreChild(Reversible *preChild)
virtual Bus * parentBus() const
const TTAMachine::Guard & guard() const
void setSource(Terminal *src)
MoveGuard & guard() const
bool isUnconditional() const