|
static void | clearPrologMoves () |
|
static MoveNode * | getSisterTrigger (const MoveNode &mn, const TTAMachine::Machine &mach) |
|
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) |
|
virtual void | undoOnlyMe () |
|
BF2Scheduler & | sched_ |
|
std::stack< Reversible * > | preChildren_ |
|
std::stack< Reversible * > | postChildren_ |
|
static std::map< MoveNode *, MoveNode *, MoveNode::Comparator > | prologMoves_ |
|
Definition at line 43 of file BFPushDepsUp.hh.
bool BFPushDepsUp::operator() |
( |
| ) |
|
|
virtual |
This performs the operation. Returns true if success, false if fail.
Implements Reversible.
Definition at line 41 of file BFPushDepsUp.cc.
44 std::cerr <<
"push deps up prefcycle negative! "
48 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
52 std::cerr <<
"\tPushing loop deps up: " <<
mn_.
toString() << std::endl;
57 for (
auto e : inEdges) {
62 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
63 std::cerr <<
"\t\t\tmy prefcycle is: " <<
prefCycle_
64 <<
" latency is: " << eLat
65 <<
" so preftailcycle is: " << prefTailCycle
67 std::cerr <<
"\t\t\t\tedge: " <<e->toString() << std::endl;
69 if (loopDepTail.
cycle() > prefTailCycle) {
70 if (prefTailCycle < 0) {
71 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
86 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
89 std::cerr <<
"\tpushed up succesfully: "
91 <<
" preChildren size: "
96 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
99 std::cerr <<
"\t\tpushing up fail: "
101 <<
" preChildren size: "
105 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
113 #ifdef DEBUG_BUBBLEFISH_SCHEDULER
References assert, MoveNode::cycle(), BFOptimization::ddg(), DataDependenceGraph::edgeLatency(), BFOptimization::ii(), BoostGraph< GraphNode, GraphEdge >::inEdges(), MoveNode::isScheduled(), MoveNode::isSourceOperation(), mn_, Reversible::preChildren_, prefCycle_, recurseCounter_, Reversible::runPreChild(), BFOptimization::sched_, BoostGraph< GraphNode, GraphEdge >::tailNode(), MoveNode::toString(), and Reversible::undoAndRemovePreChildren().