OpenASIP
2.0
|
#include <BFUnscheduleFromBody.hh>
Public Member Functions | |
BFUnscheduleFromBody (BF2Scheduler &sched, MoveNode &mn) | |
void | unscheduleOriginal () |
void | undoOnlyMe () override |
bool | operator() () override |
![]() | |
BFOptimization (BF2Scheduler &sched) | |
virtual bool | isFinishFront () |
virtual void | mightBeReady (MoveNode &mn) |
![]() | |
virtual void | undo () |
virtual | ~Reversible () |
void | deleteChildren (std::stack< Reversible * > &children) |
int | id () |
Reversible () | |
Protected Member Functions | |
void | returnOriginal () |
![]() | |
DataDependenceGraph & | ddg () |
DataDependenceGraph * | rootDDG () |
const DataDependenceGraph & | ddg () const |
DataDependenceGraph * | prologDDG () |
SimpleResourceManager & | rm () const |
SimpleResourceManager * | prologRM () const |
BUMoveNodeSelector & | selector () |
const TTAMachine::Machine & | targetMachine () const |
unsigned int | ii () const |
MoveNodeDuplicator & | duplicator () 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) |
virtual void | unassign (MoveNode &mn, bool disposePrologCopy=true) |
virtual int | rmEC (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) |
virtual int | rmLC (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) |
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) |
bool | putAlsoToPrologEpilog (int cycle, MoveNode &mn) |
void | setPrologSrcFUAnno (MoveNode &prologMN, MoveNode &loopMN) |
void | setPrologDstFUAnno (MoveNode &prologMN, MoveNode &loopMN) |
void | setJumpGuard (MoveNode &mn) |
void | unsetJumpGuard (MoveNode &mn) |
bool | needJumpGuard (const MoveNode &mn, int cycle) |
int | jumpGuardAvailableCycle (const MoveNode &mn) |
bool | canBeSpeculated (const Operation &op) |
bool | canBeSpeculated (const MoveNode &mn) |
bool | usePrologMove (const MoveNode &mn) |
bool | canBeScheduled (const MoveNode &mn) |
const TTAMachine::RegisterFile * | RFReadPortCountPreventsScheduling (const MoveNode &mn) |
bool | immCountPreventsScheduling (const MoveNode &mn) |
![]() | |
bool | runPreChild (Reversible *preChild) |
bool | runPostChild (Reversible *preChild) |
bool | runChild (std::stack< Reversible * > &children, Reversible *child) |
bool | runChild (Reversible *child, bool pre) |
void | undoAndRemovePreChildren () |
void | undoAndRemovePostChildren () |
void | undoAndRemoveChildren (std::stack< Reversible * > &children) |
Protected Attributes | |
MoveNode & | mn_ |
int | oldCycle_ |
const TTAMachine::Bus * | oldBus_ |
int | oldImmWriteCycle_ |
const TTAMachine::FunctionUnit * | dstFU_ |
const TTAMachine::FunctionUnit * | srcFU_ |
const TTAMachine::ImmediateUnit * | immu_ |
int | immRegIndex_ |
![]() | |
BF2Scheduler & | sched_ |
![]() | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
Static Protected Attributes | |
static int | recurseCounter_ = 0 |
![]() | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Additional Inherited Members | |
![]() | |
static void | clearPrologMoves () |
static MoveNode * | getSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach) |
Definition at line 48 of file BFUnscheduleFromBody.hh.
|
inline |
Definition at line 51 of file BFUnscheduleFromBody.hh.
|
overridevirtual |
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Definition at line 144 of file BFUnscheduleFromBody.cc.
References unscheduleOriginal().
|
protected |
Definition at line 96 of file BFUnscheduleFromBody.cc.
References assert, SimpleResourceManager::assign(), TTAProgram::Move::bus(), BFOptimization::canAssign(), BFOptimization::ddg(), MoveNode::destinationOperation(), POMDisassembler::disassemble(), dstFU_, TTAProgram::Instruction::immediateCount(), immRegIndex_, immu_, SimpleResourceManager::instruction(), MoveNode::isDestinationOperation(), MoveNode::isSourceOperation(), mn_, TTAProgram::Instruction::move(), MoveNode::move(), TTAProgram::Instruction::moveCount(), TTAMachine::Component::name(), oldBus_, oldCycle_, oldImmWriteCycle_, recurseCounter_, BFOptimization::rm(), MoveNode::sourceOperation(), srcFU_, MoveNode::toString(), ProgramOperation::toString(), and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
Referenced by undoOnlyMe().
|
overridevirtual |
Undoes the operations done by this class but not children. This method should be overloaded by most derived classes.
Reimplemented from Reversible.
Definition at line 136 of file BFUnscheduleFromBody.cc.
References returnOriginal().
void BFUnscheduleFromBody::unscheduleOriginal | ( | ) |
Definition at line 48 of file BFUnscheduleFromBody.cc.
References assert, TTAProgram::Move::bus(), BFOptimization::canAssign(), MoveNode::cycle(), BFOptimization::ddg(), TTAProgram::Move::destination(), MoveNode::destinationOperation(), dstFU_, TTAProgram::Terminal::functionUnit(), TTAProgram::Terminal::immediateUnit(), SimpleResourceManager::immediateWriteCycle(), immRegIndex_, immu_, TTAProgram::Terminal::index(), MoveNode::isDestinationOperation(), TTAProgram::Terminal::isImmediateRegister(), MoveNode::isSourceOperation(), mn_, MoveNode::move(), TTAMachine::Component::name(), oldBus_, oldCycle_, oldImmWriteCycle_, recurseCounter_, BFOptimization::rm(), TTAProgram::Move::source(), MoveNode::sourceOperation(), srcFU_, MoveNode::toString(), ProgramOperation::toString(), SimpleResourceManager::unassign(), and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
Referenced by operator()().
|
protected |
Definition at line 65 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 68 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 67 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 61 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 63 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 62 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 64 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
staticprotected |
Definition at line 69 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().
|
protected |
Definition at line 66 of file BFUnscheduleFromBody.hh.
Referenced by returnOriginal(), and unscheduleOriginal().