OpenASIP
2.0
|
#include <BFLateBypassGuard.hh>
Public Member Functions | |
BFLateBypassGuard (BF2Scheduler &sched, MoveNode &src, MoveNode &dst, int lc) | |
virtual bool | operator() () |
virtual void | undoOnlyMe () |
![]() | |
BFLateBypass (BF2Scheduler &sched, MoveNode &src, MoveNode &dst, int lc) | |
![]() | |
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 () | |
Private Attributes | |
const TTAMachine::Guard * | originalGuard_ |
Additional Inherited Members | |
![]() | |
static void | clearPrologMoves () |
static MoveNode * | getSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach) |
![]() | |
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) |
![]() | |
int | originalCycle_ |
MoveNode & | src_ |
MoveNode & | dst_ |
int | lc_ |
const TTAMachine::Bus * | originalBus_ |
const TTAMachine::Bus * | prologBus_ |
![]() | |
BF2Scheduler & | sched_ |
![]() | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
![]() | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 8 of file BFLateBypassGuard.hh.
|
inline |
Definition at line 10 of file BFLateBypassGuard.hh.
|
virtual |
This performs the operation. Returns true if success, false if fail.
Reimplemented from BFLateBypass.
Definition at line 19 of file BFLateBypassGuard.cc.
References assert, BFOptimization::assign(), TTAProgram::Move::bus(), BFOptimization::canAssign(), MoveNode::cycle(), BFOptimization::ddg(), TTAProgram::Move::destination(), BFLateBypass::dst_, TTAProgram::Terminal::functionUnit(), TTAProgram::MoveGuard::guard(), TTAProgram::Move::guard(), TTAMachine::Bus::guard(), DataDependenceGraph::guardConverted(), TTAMachine::Bus::guardCount(), MoveNode::guardLatency(), DataDependenceGraph::guardRestored(), TTAMachine::FunctionUnit::hasOperation(), ProgramOperation::inputMove(), ProgramOperation::inputMoveCount(), TTAProgram::MoveGuard::isInverted(), TTAMachine::Guard::isInverted(), ProgramOperation::isLegalFU(), MoveNode::isScheduled(), MoveNode::isSourceOperation(), TTAProgram::Move::isUnconditional(), BFLateBypass::lc_, MoveNode::move(), TTAMachine::Component::name(), Operation::name(), ProgramOperation::operation(), TTAProgram::Terminal::operationIndex(), BFLateBypass::originalBus_, BFLateBypass::originalCycle_, originalGuard_, ProgramOperation::outputIndexFromGuard(), ProgramOperation::outputMove(), ProgramOperation::outputMoveCount(), TTAMachine::BaseFUPort::parentUnit(), TTAMachine::PortGuard::port(), Reversible::postChildren_, BFOptimization::sched_, TTAProgram::Move::setBus(), TTAProgram::Move::setGuard(), TTAProgram::Move::source(), MoveNode::sourceOperation(), BFLateBypass::src_, MoveNode::toString(), ProgramOperation::toString(), BFOptimization::unassign(), and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
|
virtual |
Undoes the operations done by this class but not children. This method should be overloaded by most derived classes.
Reimplemented from BFLateBypass.
Definition at line 147 of file BFLateBypassGuard.cc.
References assert, BFOptimization::assign(), BFOptimization::canAssign(), BFOptimization::ddg(), BFLateBypass::dst_, DataDependenceGraph::guardRestored(), MoveNode::move(), TTAMachine::Component::name(), BFLateBypass::originalBus_, BFLateBypass::originalCycle_, originalGuard_, TTAProgram::Move::setBus(), TTAProgram::Move::setGuard(), BFLateBypass::src_, and MoveNode::toString().
|
private |
Definition at line 16 of file BFLateBypassGuard.hh.
Referenced by operator()(), and undoOnlyMe().