66 if (prologMN != NULL) {
73#ifdef DEBUG_BUBBLEFISH_SCHEDULER
74 std::cerr <<
"\t\t\t\tProlog move: " << prologMN->
toString() << std::endl;
75 std::cerr <<
"\t\t\t\tBFUnscheduleMove Saving prolog bus: " <<
prologBus_->
name() <<
" cycle: " <<
oldCycle_ << std::endl;
78#ifdef DEBUG_BUBBLEFISH_SCHEDULER
85#ifdef DEBUG_BUBBLEFISH_SCHEDULER
91 std::cerr <<
"\t\tCannot assign to old cycle: " <<
mn_.
toString()
92 <<
" old cycle: " <<
oldCycle_ << std::endl;
108#ifdef DEBUG_BUBBLEFISH_SCHEDULER
112 std::cerr <<
"\t\treturning original: " <<
mn_.
toString() <<
" current bus: "
117#ifdef DEBUG_BUBBLEFISH_SCHEDULER
121 std::cerr <<
"Cannot return to old cycle: " <<
mn_.
toString() <<
" cycle: " <<
oldCycle_ << std::endl;
128 std::cerr <<
"Original bus: " <<
oldBus_->
name() << std::endl;
131 for (
int i = 0; i < ins->
moveCount(); i++) {
136 std::cerr <<
"ins contains " << ins->
immediateCount() <<
" immediates." << std::endl;
145#ifdef DEBUG_BUBBLEFISH_SCHEDULER
146 std::cerr <<
"BFUnscheudleMove undo" << std::endl;
#define assert(condition)
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)
SimpleResourceManager * prologRM() const
DataDependenceGraph & ddg()
virtual void unassign(MoveNode &mn, bool disposePrologCopy=true)
MoveNodeDuplicator & duplicator() const
SimpleResourceManager & rm() const
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)
const TTAMachine::Bus * prologBus_
static int recurseCounter_
void unscheduleOriginal()
const TTAMachine::ImmediateUnit * immu_
const TTAMachine::FunctionUnit * srcFU_
const TTAMachine::Bus * oldBus_
const TTAMachine::FunctionUnit * dstFU_
virtual void writeToDotFile(const TCEString &fileName) const
MoveNode * getMoveNode(MoveNode &mn)
ProgramOperation & sourceOperation() const
bool isDestinationOperation() const
std::string toString() const
TTAProgram::Move & move()
bool isSourceOperation() const
ProgramOperation & destinationOperation(unsigned int index=0) const
static std::string disassemble(const TTAProgram::Move &move)
std::string toString() const
virtual TTAProgram::Instruction * instruction(int cycle) const override
virtual int immediateWriteCycle(const MoveNode &) const
virtual TCEString name() const
int immediateCount() const
Terminal & source() const
Terminal & destination() const
const TTAMachine::Bus & bus() const
virtual const TTAMachine::FunctionUnit & functionUnit() const
virtual int index() const
virtual bool isImmediateRegister() const
virtual const TTAMachine::ImmediateUnit & immediateUnit() const