OpenASIP 2.2
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
BFRescheduleResultsClose Class Reference

#include <BFRescheduleResultsClose.hh>

Inheritance diagram for BFRescheduleResultsClose:
Inheritance graph
Collaboration diagram for BFRescheduleResultsClose:
Collaboration graph

Public Member Functions

 BFRescheduleResultsClose (BF2Scheduler &sched, ProgramOperation &po)
 
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 Attributes

ProgramOperationpo_
 

Additional Inherited Members

- Static Public Member Functions inherited from BFOptimization
static void clearPrologMoves ()
 
static MoveNodegetSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach)
 
- Protected Member Functions inherited from BFOptimization
DataDependenceGraphddg ()
 
DataDependenceGraphrootDDG ()
 
const DataDependenceGraphddg () const
 
DataDependenceGraphprologDDG ()
 
SimpleResourceManagerrm () const
 
SimpleResourceManagerprologRM () const
 
BUMoveNodeSelectorselector ()
 
const TTAMachine::MachinetargetMachine () const
 
unsigned int ii () const
 
MoveNodeDuplicatorduplicator () 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::RegisterFileRFReadPortCountPreventsScheduling (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)
 
virtual void undoOnlyMe ()
 
- Protected Attributes inherited from BFOptimization
BF2Schedulersched_
 
- 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::ComparatorprologMoves_
 

Detailed Description

Definition at line 48 of file BFRescheduleResultsClose.hh.

Constructor & Destructor Documentation

◆ BFRescheduleResultsClose()

BFRescheduleResultsClose::BFRescheduleResultsClose ( BF2Scheduler sched,
ProgramOperation po 
)
inline

Definition at line 51 of file BFRescheduleResultsClose.hh.

Member Function Documentation

◆ operator()()

bool BFRescheduleResultsClose::operator() ( )
virtual

This performs the operation. Returns true if success, false if fail.

Implements Reversible.

Definition at line 43 of file BFRescheduleResultsClose.cc.

43 {
44
45 int lastNonReg = 0;
46 bool rescheduled = false;
47 for (int i= 0; i < po_.outputMoveCount(); i++) {
48 MoveNode& mn = po_.outputMove(i);
49 if (!mn.isScheduled()) {
50// std::cerr << "res not scheduled!" << std::endl;
51 continue;
52 }
53 if (!mn.isDestinationVariable()) {
54 lastNonReg = std::min(lastNonReg, mn.cycle());
55 }
56 }
57
58 for (int i= 0; i < po_.outputMoveCount(); i++) {
59 MoveNode& mn = po_.outputMove(i);
60 if (!mn.isScheduled()) {
61 continue;
62 }
63 if (mn.isDestinationVariable() && mn.cycle() > lastNonReg) {
65 new BFRescheduleResultClose(sched_, mn, lastNonReg);
66 rescheduled |= runPreChild(resched);
67 }
68 }
69 return rescheduled;
70}
BF2Scheduler & sched_
int cycle() const
Definition MoveNode.cc:421
bool isScheduled() const
Definition MoveNode.cc:409
bool isDestinationVariable() const
Definition MoveNode.cc:264
int outputMoveCount() const
MoveNode & outputMove(int index) const
bool runPreChild(Reversible *preChild)

References MoveNode::cycle(), MoveNode::isDestinationVariable(), MoveNode::isScheduled(), ProgramOperation::outputMove(), ProgramOperation::outputMoveCount(), po_, Reversible::runPreChild(), and BFOptimization::sched_.

Here is the call graph for this function:

Member Data Documentation

◆ po_

ProgramOperation& BFRescheduleResultsClose::po_
private

Definition at line 57 of file BFRescheduleResultsClose.hh.

Referenced by operator()().


The documentation for this class was generated from the following files: