OpenASIP
2.0
|
#include <SoftwareBypasser.hh>
Public Member Functions | |
SoftwareBypasser () | |
virtual | ~SoftwareBypasser () |
virtual int | bypass (MoveNodeGroup &candidates, DataDependenceGraph &ddg, ResourceManager &rm, bool bypassTrigger)=0 |
virtual int | bypassNode (MoveNode &moveNode, int &lastOperandCycle, DataDependenceGraph &ddg, ResourceManager &rm)=0 |
virtual void | removeBypass (MoveNodeGroup &candidates, DataDependenceGraph &ddg, ResourceManager &rm)=0 |
virtual void | removeBypass (MoveNode &moveNode, DataDependenceGraph &ddg, ResourceManager &rm, bool restoreSource=true)=0 |
virtual int | removeDeadResults (MoveNodeGroup &candidates, DataDependenceGraph &ddg, ResourceManager &rm, std::set< std::pair< TTAProgram::Move *, int > > &removedMoves)=0 |
virtual void | setSelector (MoveNodeSelector *selector) |
virtual void | clearCaches (DataDependenceGraph &ddg, bool removeDeadResults)=0 |
int | bypassCount () |
int | deadResultCount () |
Protected Attributes | |
int | bypassCount_ |
int | deadResultCount_ |
Classes that implement this interface are able to software bypass moves.
Definition at line 52 of file SoftwareBypasser.hh.
SoftwareBypasser::SoftwareBypasser | ( | ) |
|
virtual |
|
pure virtual |
Apply software bypassing to as many moves in the given MoveNodeGroup as possible.
The given DDG can be used to inspect whether software bypassing is possible.
candidates | The moves to which apply software bypassing, if possible. |
ddg | The data dependence grap in which the movenodes belong to. |
rm | The resource manager which is used to check for resource availability. |
bypassTrigger | whether to bypass the trigger or not. |
Implemented in CycleLookBackSoftwareBypasser.
Definition at line 65 of file SoftwareBypasser.cc.
References ResourceManager::machine(), MoveNodeGroup::nodeCount(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
Referenced by BasicBlockScheduler::scheduleOperation().
|
inline |
|
pure virtual |
Implemented in CycleLookBackSoftwareBypasser.
Referenced by BasicBlockScheduler::handleDDG().
|
pure virtual |
Implemented in CycleLookBackSoftwareBypasser.
Referenced by BasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleLoopDDG(), and BasicBlockScheduler::unscheduleAllNodes().
|
inline |
|
pure virtual |
Implemented in CycleLookBackSoftwareBypasser.
|
pure virtual |
Remove software bypassing from as many moves in the given MoveNodeGroup as possible.
candidates | The moves from which to remove software bypassing, if possible. |
ddg | The data dependence grap in which the movenodes belong to. |
rm | The resource manager which is used to check for resource availability. |
Implemented in CycleLookBackSoftwareBypasser.
Definition at line 89 of file SoftwareBypasser.cc.
References ResourceManager::machine(), MoveNodeGroup::nodeCount(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
Referenced by BasicBlockScheduler::handleDDG(), BasicBlockScheduler::scheduleOperation(), and BasicBlockScheduler::unscheduleAllNodes().
|
pure virtual |
Remove dead result moves for each bypassed move of given MoveNodeGroup if possible. That is, no other result reads of result exists. This assumes that result moves in MoveNodeGroup are also scheduled.
candidates | The moves for which remove dead result writes |
ddg | The data dependence grap in which the movenodes belong to. |
rm | The resource manager which is used to check for resource availability. |
removedMoves | The dead result eliminated moves and their original cycles, to allow rescheduling of moves that were previously resource (RF write port usually) constrained by the removed moves. |
Implemented in CycleLookBackSoftwareBypasser.
Definition at line 116 of file SoftwareBypasser.cc.
References ResourceManager::machine(), MoveNodeGroup::nodeCount(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
Referenced by BasicBlockScheduler::handleDDG(), and BasicBlockScheduler::scheduleOperation().
|
virtual |
Reimplemented in CycleLookBackSoftwareBypasser.
Definition at line 143 of file SoftwareBypasser.cc.
Referenced by BasicBlockScheduler::handleDDG(), and BasicBlockScheduler::handleLoopDDG().
|
protected |
Definition at line 92 of file SoftwareBypasser.hh.
Referenced by bypassCount().
|
protected |
Definition at line 93 of file SoftwareBypasser.hh.
Referenced by deadResultCount().