| 
    OpenASIP 2.2
    
   | 
 
#include <BFPushMoveUp2.hh>


Public Member Functions | |
| BFPushMoveUp2 (BF2Scheduler &sched, MoveNode &mn, int lc) | |
| bool | operator() () | 
  Public Member Functions inherited from BFUnscheduleMove | |
| BFUnscheduleMove (BF2Scheduler &sched, MoveNode &mn) | |
| void | unscheduleOriginal () | 
| void | undoOnlyMe () | 
| bool | operator() () | 
  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 Member Functions | |
| bool | isLoopBypass (MoveNode &mn) | 
Private Attributes | |
| int | lc_ | 
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 BFUnscheduleMove | |
| void | returnOriginal () | 
  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 BFUnscheduleMove | |
| MoveNode & | mn_ | 
| int | oldCycle_ | 
| const TTAMachine::Bus * | oldBus_ | 
| const TTAMachine::Bus * | prologBus_ | 
| int | oldImmWriteCycle_ | 
| int | prologImmWriteCycle_ | 
| const TTAMachine::FunctionUnit * | dstFU_ | 
| const TTAMachine::FunctionUnit * | srcFU_ | 
| const TTAMachine::ImmediateUnit * | immu_ | 
| int | immRegIndex_ | 
  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 BFUnscheduleMove | |
| static int | recurseCounter_ = 0 | 
  Static Protected Attributes inherited from BFOptimization | |
| static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ | 
Definition at line 51 of file BFPushMoveUp2.hh.
      
  | 
  inline | 
Definition at line 54 of file BFPushMoveUp2.hh.
      
  | 
  private | 
Definition at line 181 of file BFPushMoveUp2.cc.
References BFOptimization::ddg(), and DataDependenceGraph::operationInEdges().
Referenced by operator()().

      
  | 
  virtual | 
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Definition at line 48 of file BFPushMoveUp2.cc.
References assert, AssocTools::containsKey(), MoveNode::cycle(), BFOptimization::ddg(), DataDependenceGraph::earliestCycle(), BF2Scheduler::guardWriteNode(), BFOptimization::ii(), ProgramOperation::inputMove(), ProgramOperation::inputMoveCount(), TTAProgram::Move::isControlFlowMove(), isLoopBypass(), MoveNode::isScheduled(), MoveNode::isSourceOperation(), DataDependenceGraph::latestCycle(), lc_, BFUnscheduleMove::mn_, MoveNode::move(), ProgramOperation::outputMove(), ProgramOperation::outputMoveCount(), BFUnscheduleMove::returnOriginal(), Reversible::runPostChild(), BFOptimization::sched_, MoveNode::sourceOperation(), MoveNode::toString(), ProgramOperation::triggeringMove(), Reversible::undo(), and BFUnscheduleMove::unscheduleOriginal().

      
  | 
  private | 
Definition at line 62 of file BFPushMoveUp2.hh.
Referenced by operator()().