OpenASIP
2.0
|
#include <BFScheduleBU.hh>
Public Member Functions | |
BFScheduleBU (BF2Scheduler &sched, MoveNode &mn, int lc, bool allowEarlyBypass, bool allowLateBypass, bool allowEarlySharing) | |
virtual bool | operator() () |
void | undoOnlyMe () |
Public Member Functions inherited from BFScheduleMove | |
BFScheduleMove (BF2Scheduler &sched, MoveNode &mn) | |
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 () | |
Private Attributes | |
int | lc_ |
bool | allowEarlyBypass_ |
bool | allowLateBypass_ |
bool | allowEarlySharing_ |
bool | bypasserScheduled_ |
bool | createdCopy_ |
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) |
Protected Attributes inherited from BFScheduleMove | |
MoveNode & | mn_ |
bool | createdPrologMove_ |
Protected Attributes inherited from BFOptimization | |
BF2Scheduler & | sched_ |
Protected Attributes inherited from Reversible | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
Static Protected Attributes inherited from BFOptimization | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 45 of file BFScheduleBU.hh.
|
inline |
|
virtual |
This performs the operation. Returns true if success, false if fail.
Another op may not come between these, so if this does not work, try without this
Implements Reversible.
Definition at line 66 of file BFScheduleBU.cc.
References allowEarlyBypass_, allowEarlySharing_, allowLateBypass_, assert, BFOptimization::assign(), BFScheduleBU(), TTAProgram::Move::bus(), bypasserScheduled_, BFOptimization::canBeScheduled(), MachineConnectivityCheck::copyOpFUs(), createdCopy_, BFOptimization::ddg(), TTAProgram::Move::destination(), MoveNode::destinationOperation(), DataDependenceGraph::earliestCycle(), BFRegCopy::getRegCopy(), BFOptimization::ii(), UniversalMachine::instance(), TTAProgram::Move::isControlFlowMove(), MoveNode::isDestinationOperation(), MoveNode::isDestinationVariable(), TTAProgram::Terminal::isFUPort(), TTAProgram::Terminal::isGPR(), MoveNode::isScheduled(), MoveNode::isSourceOperation(), BF2Scheduler::isSourceUniversalReg(), MoveNode::isSourceVariable(), TTAProgram::Terminal::isTriggering(), lc_, BFScheduleMove::mn_, MoveNode::move(), TTAMachine::Component::name(), Reversible::preChildren_, BF2ScheduleFront::prefResultCycle(), TTAProgram::Terminal::registerFile(), BFLateBypasses::removedSource(), BFOptimization::RFReadPortCountPreventsScheduling(), BFOptimization::rmLC(), Reversible::runPostChild(), Reversible::runPreChild(), BFOptimization::sched_, TTAProgram::Move::setBus(), BFOptimization::targetMachine(), MoveNode::toString(), Reversible::undo(), Reversible::undoAndRemovePreChildren(), UniversalMachine::universalBus(), TTAMachine::BaseRegisterFile::width(), 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 BFScheduleMove.
Definition at line 397 of file BFScheduleBU.cc.
References TTAProgram::Move::bus(), bypasserScheduled_, createdCopy_, UniversalMachine::instance(), MoveNode::isScheduled(), BFScheduleMove::mn_, MoveNode::move(), TTAProgram::Move::setBus(), MoveNode::toString(), BFOptimization::unassign(), and UniversalMachine::universalBus().
|
private |
Definition at line 62 of file BFScheduleBU.hh.
Referenced by operator()().
|
private |
Definition at line 64 of file BFScheduleBU.hh.
Referenced by operator()().
|
private |
Definition at line 63 of file BFScheduleBU.hh.
Referenced by operator()().
|
private |
Definition at line 65 of file BFScheduleBU.hh.
Referenced by operator()(), and undoOnlyMe().
|
private |
Definition at line 66 of file BFScheduleBU.hh.
Referenced by operator()(), and undoOnlyMe().
|
private |
Definition at line 61 of file BFScheduleBU.hh.
Referenced by operator()().