OpenASIP
2.0
|
#include <BFShareOperandLate.hh>
Public Member Functions | |
BFShareOperandLate (BF2Scheduler &sched, MoveNode &removed, MoveNode &scheduled) | |
virtual bool | operator() () |
virtual | ~BFShareOperandLate () |
![]() | |
BFShareOperand (BF2Scheduler &sched, MoveNode &removed, MoveNode &shared) | |
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) |
Private Member Functions | |
void | revert (int cycle) |
Private Attributes | |
int | originalCycle_ |
const TTAMachine::Bus * | originalRemovedBus_ |
const TTAMachine::Bus * | originalSharedBus_ |
const TTAMachine::Bus * | originalRemovedPrologBus_ |
const TTAMachine::Bus * | originalSharedPrologBus_ |
int | removedImmWriteCycle_ |
int | removedPrologImmWriteCycle_ |
const TTAMachine::ImmediateUnit * | removedImmu_ |
int | removedImmRegIndex_ |
int | sharedImmWriteCycle_ |
int | sharedPrologImmWriteCycle_ |
const TTAMachine::ImmediateUnit * | sharedImmu_ |
int | sharedImmRegIndex_ |
Additional Inherited Members | |
![]() | |
static void | clearPrologMoves () |
static MoveNode * | getSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach) |
![]() | |
MoveNode & | removed_ |
MoveNode & | shared_ |
std::vector< ProgramOperationPtr > | ops_ |
std::set< ProgramOperationPtr > | createdPrologPOs_ |
![]() | |
BF2Scheduler & | sched_ |
![]() | |
std::stack< Reversible * > | preChildren_ |
std::stack< Reversible * > | postChildren_ |
![]() | |
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
Definition at line 46 of file BFShareOperandLate.hh.
|
inline |
Definition at line 48 of file BFShareOperandLate.hh.
|
inlinevirtual |
Definition at line 64 of file BFShareOperandLate.hh.
|
virtual |
This performs the operation. Returns true if success, false if fail.
Reimplemented from BFShareOperand.
Definition at line 52 of file BFShareOperandLate.cc.
References BFOptimization::assign(), TTAProgram::Move::bus(), BFOptimization::canAssign(), MoveNode::cycle(), BFOptimization::ddg(), MoveNode::destinationOperation(), BoostGraph< GraphNode, GraphEdge >::dropNode(), BFOptimization::duplicator(), MoveNodeDuplicator::getMoveNode(), BFOptimization::ii(), TTAProgram::Terminal::immediateUnit(), SimpleResourceManager::immediateWriteCycle(), TTAProgram::Terminal::index(), TTAProgram::Terminal::isImmediateRegister(), MoveNode::move(), BF2Scheduler::nodeAndCopyKilled(), originalCycle_, originalRemovedBus_, originalRemovedPrologBus_, originalSharedBus_, originalSharedPrologBus_, BFOptimization::prologRM(), BFShareOperand::removed_, removedImmRegIndex_, removedImmu_, removedImmWriteCycle_, removedPrologImmWriteCycle_, revert(), BFOptimization::rm(), Reversible::runPostChild(), BFOptimization::sched_, BFShareOperand::shared_, sharedImmRegIndex_, sharedImmu_, sharedImmWriteCycle_, sharedPrologImmWriteCycle_, TTAProgram::Move::source(), MoveNode::toString(), ProgramOperation::triggeringMove(), BFOptimization::unassign(), and BFShareOperand::undoOnlyMe().
|
private |
Definition at line 139 of file BFShareOperandLate.cc.
References assert, BFOptimization::assign(), TTAProgram::Move::bus(), BFOptimization::canAssign(), BFOptimization::ddg(), MoveNode::destinationOperation(), POMDisassembler::disassemble(), SimpleResourceManager::instruction(), TTAProgram::Instruction::move(), TTAProgram::Instruction::moveCount(), TTAMachine::Component::name(), BF2Scheduler::nodeResurrected(), originalCycle_, originalRemovedBus_, originalRemovedPrologBus_, originalSharedBus_, originalSharedPrologBus_, BFShareOperand::removed_, removedImmRegIndex_, removedImmu_, removedImmWriteCycle_, removedPrologImmWriteCycle_, BoostGraph< GraphNode, GraphEdge >::restoreNodeFromParent(), BFOptimization::rm(), BFOptimization::sched_, BFShareOperand::shared_, sharedImmRegIndex_, sharedImmu_, sharedImmWriteCycle_, sharedPrologImmWriteCycle_, MoveNode::toString(), and ProgramOperation::toString().
Referenced by operator()(), and undoOnlyMe().
|
protectedvirtual |
Undoes the operations done by this class but not children. This method should be overloaded by most derived classes.
Reimplemented from BFShareOperand.
Definition at line 132 of file BFShareOperandLate.cc.
References MoveNode::cycle(), revert(), BFShareOperand::shared_, BFOptimization::unassign(), and BFShareOperand::undoOnlyMe().
|
private |
Definition at line 69 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 70 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 72 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 71 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 73 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 78 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 77 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 75 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 76 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 83 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 82 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 80 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().
|
private |
Definition at line 81 of file BFShareOperandLate.hh.
Referenced by operator()(), and revert().