OpenASIP
2.0
|
#include <BFKillNode.hh>
Public Member Functions | |
BFKillNode (BF2Scheduler &sched, MoveNode &mn) | |
bool | operator() () |
void | undoOnlyMe () |
![]() | |
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 Attributes | |
DataDependenceGraph::EdgeSet | createdEdges_ |
MoveNode & | mn_ |
![]() | |
BF2Scheduler & | sched_ |
![]() | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
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) |
![]() | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 44 of file BFKillNode.hh.
|
inline |
Definition at line 46 of file BFKillNode.hh.
|
virtual |
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Reimplemented in BFPostpassDRE.
Definition at line 42 of file BFKillNode.cc.
References BFOptimization::ddg(), BoostGraph< GraphNode, GraphEdge >::dropNode(), mn_, BF2Scheduler::nodeKilled(), and BFOptimization::sched_.
|
virtual |
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 49 of file BFKillNode.cc.
References createdEdges_, BFOptimization::ddg(), mn_, BF2Scheduler::nodeResurrected(), BoostGraph< GraphNode, GraphEdge >::removeEdge(), BoostGraph< GraphNode, GraphEdge >::restoreNodeFromParent(), and BFOptimization::sched_.
Referenced by BFDRELoop::undoOnlyMe().
|
protected |
Definition at line 51 of file BFKillNode.hh.
Referenced by BFDREEarly::operator()(), BFDRELate::operator()(), BFPostpassDRE::operator()(), BFDRELoop::operator()(), and undoOnlyMe().
|
protected |
Definition at line 52 of file BFKillNode.hh.
Referenced by BFDRELoop::dreAllowed(), BFDREEarly::operator()(), BFDRELate::operator()(), BFPostpassDRE::operator()(), operator()(), BFDRELoop::operator()(), undoOnlyMe(), and BFDRELoop::undoOnlyMe().