52#ifdef DEBUG_BUBBLEFISH_SCHEDULER
54 <<
" from: " << op->toString() << std::endl;
59#ifdef DEBUG_BUBBLEFISH_SCHEDULER
61 <<
" to: " << op->toString() << std::endl;
68 if (prologMNOfRemoved) {
71 prologPO->removeInputNode(*prologMNOfRemoved);
77 if (prologMNOfShared) {
78 if (prologPO ==
nullptr) {
83 prologPO->addInputNode(*prologMNOfShared);
93#ifdef DEBUG_BUBBLEFISH_SCHEDULER
94 std::cerr <<
"\t\t\t\tBFShareOperand undoing itseld, shared: "
107 if (prologMNOfShared) {
109 assert(prologPO !=
nullptr);
110 prologPO->removeInputNode(*prologMNOfShared);
114 if (prologMNOfRemoved) {
116 assert(prologPO !=
nullptr);
117 prologPO->addInputNode(*prologMNOfRemoved);
122#ifdef DEBUG_BUBBLEFISH_SCHEDULER
123 std::cerr <<
"\t\t\t\t\t\tRestoring, op: "
124 << op->toString() << std::endl;
130#ifdef DEBUG_BUBBLEFISH_SCHEDULER
132 <<
" to: " << op->toString() << std::endl;
#define assert(condition)
std::shared_ptr< ProgramOperation > ProgramOperationPtr
MoveNodeDuplicator & duplicator() const
virtual bool operator()()
std::vector< ProgramOperationPtr > ops_
virtual void undoOnlyMe()
std::set< ProgramOperationPtr > createdPrologPOs_
ProgramOperationPtr getProgramOperation(ProgramOperationPtr old)
MoveNode * getMoveNode(MoveNode &mn)
ProgramOperationPtr duplicateProgramOperationPtr(ProgramOperationPtr old)
unsigned int destinationOperationCount() const
void removeDestinationOperation(const ProgramOperation *po)
std::string toString() const
TTAProgram::Move & move()
ProgramOperationPtr destinationOperationPtr(unsigned int index=0) const
void addDestinationOperationPtr(ProgramOperationPtr po)
Terminal & destination() const
virtual int operationIndex() const