OpenASIP
2.0
|
#include <BFShareOperand.hh>
Public Member Functions | |
BFShareOperand (BF2Scheduler &sched, MoveNode &removed, MoveNode &shared) | |
virtual bool | operator() () |
virtual | ~BFShareOperand () |
![]() | |
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 Member Functions | |
virtual void | undoOnlyMe () |
![]() | |
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) |
Protected Attributes | |
MoveNode & | removed_ |
MoveNode & | shared_ |
std::vector< ProgramOperationPtr > | ops_ |
std::set< ProgramOperationPtr > | createdPrologPOs_ |
![]() | |
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) |
![]() | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 43 of file BFShareOperand.hh.
|
inline |
Definition at line 45 of file BFShareOperand.hh.
|
inlinevirtual |
Definition at line 49 of file BFShareOperand.hh.
|
virtual |
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Reimplemented in BFShareOperandLate, and BFShareOperandWithScheduled.
Definition at line 43 of file BFShareOperand.cc.
References MoveNode::addDestinationOperationPtr(), createdPrologPOs_, TTAProgram::Move::destination(), MoveNode::destinationOperationCount(), MoveNode::destinationOperationPtr(), MoveNodeDuplicator::duplicateProgramOperationPtr(), BFOptimization::duplicator(), MoveNodeDuplicator::getMoveNode(), MoveNodeDuplicator::getProgramOperation(), BFOptimization::ii(), MoveNode::move(), TTAProgram::Terminal::operationIndex(), ops_, removed_, MoveNode::removeDestinationOperation(), shared_, and MoveNode::toString().
|
protectedvirtual |
Undoes the operations done by this class but not children. This method should be overloaded by most derived classes.
Reimplemented from Reversible.
Reimplemented in BFShareOperandLate, and BFShareOperandWithScheduled.
Definition at line 92 of file BFShareOperand.cc.
References MoveNode::addDestinationOperationPtr(), assert, BFOptimization::duplicator(), MoveNodeDuplicator::getMoveNode(), MoveNodeDuplicator::getProgramOperation(), BFOptimization::ii(), ops_, removed_, MoveNode::removeDestinationOperation(), shared_, and MoveNode::toString().
Referenced by BFShareOperandLate::operator()(), BFShareOperandWithScheduled::undoOnlyMe(), and BFShareOperandLate::undoOnlyMe().
|
protected |
Definition at line 55 of file BFShareOperand.hh.
Referenced by operator()().
|
protected |
Definition at line 54 of file BFShareOperand.hh.
Referenced by operator()(), and undoOnlyMe().
|
protected |
Definition at line 52 of file BFShareOperand.hh.
Referenced by operator()(), BFShareOperandWithScheduled::operator()(), BFShareOperandLate::operator()(), BFShareOperandLate::revert(), undoOnlyMe(), and BFShareOperandWithScheduled::undoOnlyMe().
|
protected |
Definition at line 53 of file BFShareOperand.hh.
Referenced by operator()(), BFShareOperandWithScheduled::operator()(), BFShareOperandLate::operator()(), BFShareOperandLate::revert(), undoOnlyMe(), BFShareOperandWithScheduled::undoOnlyMe(), and BFShareOperandLate::undoOnlyMe().