OpenASIP
2.0
|
#include <BFLateBypass.hh>
Public Member Functions | |
BFLateBypass (BF2Scheduler &sched, MoveNode &src, MoveNode &dst, int lc) | |
virtual bool | operator() () |
virtual void | undoOnlyMe () |
Public Member Functions inherited from BFOptimization | |
BFOptimization (BF2Scheduler &sched) | |
virtual bool | isFinishFront () |
virtual void | mightBeReady (MoveNode &mn) |
Public Member Functions inherited from Reversible | |
virtual void | undo () |
virtual | ~Reversible () |
void | deleteChildren (std::stack< Reversible * > &children) |
int | id () |
Reversible () | |
Protected Attributes | |
int | originalCycle_ |
MoveNode & | src_ |
MoveNode & | dst_ |
int | lc_ |
const TTAMachine::Bus * | originalBus_ |
const TTAMachine::Bus * | prologBus_ |
Protected Attributes inherited from BFOptimization | |
BF2Scheduler & | sched_ |
Protected Attributes inherited from Reversible | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
Additional Inherited Members | |
Static Public Member Functions inherited from BFOptimization | |
static void | clearPrologMoves () |
static MoveNode * | getSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach) |
Protected Member Functions inherited from BFOptimization | |
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) |
Protected Member Functions inherited from Reversible | |
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) |
Static Protected Attributes inherited from BFOptimization | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 47 of file BFLateBypass.hh.
|
inline |
Definition at line 49 of file BFLateBypass.hh.
|
virtual |
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Reimplemented in BFLateBypassGuard.
Definition at line 59 of file BFLateBypass.cc.
References BFOptimization::assign(), TTAProgram::Move::bus(), MoveNode::cycle(), BFOptimization::ddg(), dst_, BFOptimization::duplicator(), MoveNodeDuplicator::getMoveNode(), BFOptimization::ii(), TTAProgram::Move::isControlFlowMove(), MoveNode::isGuardOperation(), TTAProgram::Move::isTriggering(), lc_, BFOptimization::mightBeReady(), MoveNode::move(), TTAMachine::Component::name(), originalBus_, originalCycle_, Reversible::postChildren_, BoostGraph< GraphNode, GraphEdge >::predecessors(), prologBus_, Reversible::runPostChild(), BFOptimization::sched_, src_, MoveNode::toString(), BFOptimization::unassign(), and Reversible::undo().
|
virtual |
Undoes the operations done by this class but not children. This method should be overloaded by most derived classes.
Reimplemented from Reversible.
Reimplemented in BFLateBypassGuard.
Definition at line 161 of file BFLateBypass.cc.
References assert, BFOptimization::assign(), BFOptimization::canAssign(), BFOptimization::ddg(), MoveNode::destinationOperation(), MoveNode::destinationOperationCount(), dst_, TTAMachine::Component::name(), originalBus_, originalCycle_, prologBus_, MoveNode::toString(), ProgramOperation::toString(), and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
|
protected |
Definition at line 58 of file BFLateBypass.hh.
Referenced by BFLateBypassGuard::operator()(), operator()(), BFLateBypassGuard::undoOnlyMe(), and undoOnlyMe().
|
protected |
Definition at line 59 of file BFLateBypass.hh.
Referenced by BFLateBypassGuard::operator()(), and operator()().
|
protected |
Definition at line 60 of file BFLateBypass.hh.
Referenced by BFLateBypassGuard::operator()(), operator()(), BFLateBypassGuard::undoOnlyMe(), and undoOnlyMe().
|
protected |
Definition at line 56 of file BFLateBypass.hh.
Referenced by BFLateBypassGuard::operator()(), operator()(), BFLateBypassGuard::undoOnlyMe(), and undoOnlyMe().
|
protected |
Definition at line 61 of file BFLateBypass.hh.
Referenced by operator()(), and undoOnlyMe().
|
protected |
Definition at line 57 of file BFLateBypass.hh.
Referenced by BFLateBypassGuard::operator()(), operator()(), and BFLateBypassGuard::undoOnlyMe().