|
| bool | splitMove (BasicBlockNode &bbn) |
| |
| void | undoSplit () |
| |
| MoveNode * | createRegCopy (bool after) |
| |
| 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) |
| |
Definition at line 8 of file BFCopyRegWithOp.hh.
Implements BFRegCopy.
Definition at line 15 of file BFCopyRegWithOp.cc.
15 {
19 pop_ = std::make_shared<ProgramOperation>(op);
20
27
31 fu->name());
33
36 fu->name());
38 }
39
40
41 for (
int i =
ddg().rootGraph()->inDegree(
mn_)-1; i >= 0; i--) {
43 if (e.isRAW() && !e.headPseudo()) {
45 }
46 }
47
48
49 for (
int i =
ddg().rootGraph()->outDegree(
mn_)-1; i >= 0; i--) {
51 if (e.isRegisterOrRA() && !e.isRAW() && !e.tailPseudo()) {
53 }
54 }
55
56
62 return true;
63}
DataDependenceGraph & ddg()
const TTAMachine::Machine & targetMachine() const
virtual Edge & outEdge(const Node &node, const int index) const
virtual Edge & inEdge(const Node &node, const int index) const
virtual void moveOutEdge(const Node &source, const Node &destination, Edge &edge, const Node *head=NULL, bool childs=false)
virtual void moveInEdge(const Node &source, const Node &destination, Edge &edge, const Node *tail=NULL, bool childs=false)
virtual void connectNodes(const Node &nTail, const Node &nHead, Edge &e)
void setSourceOperationPtr(ProgramOperationPtr po)
TTAProgram::Move & move()
void addDestinationOperationPtr(ProgramOperationPtr po)
Operation & operation(const char *name)
void addAnnotation(const ProgramAnnotation &annotation)
void setSource(Terminal *src)
void setDestination(Terminal *dst)
@ ANN_CONN_CANDIDATE_UNIT_DST
Dst. unit candidate.
@ ANN_CONN_CANDIDATE_UNIT_SRC
Src. unit candidate.
References TTAProgram::AnnotatedInstructionElement::addAnnotation(), MoveNode::addDestinationOperationPtr(), TTAProgram::ProgramAnnotation::ANN_CONN_CANDIDATE_UNIT_DST, TTAProgram::ProgramAnnotation::ANN_CONN_CANDIDATE_UNIT_SRC, candidateFUs_, BoostGraph< GraphNode, GraphEdge >::connectNodes(), TTAProgram::CodeGenerator::createTerminalFUPort(), BFOptimization::ddg(), DataDependenceEdge::DEP_UNKNOWN, DataDependenceEdge::EDGE_OPERATION, BoostGraph< GraphNode, GraphEdge >::inEdge(), BFRegCopy::mn_, MoveNode::move(), BoostGraph< GraphNode, GraphEdge >::moveInEdge(), BoostGraph< GraphNode, GraphEdge >::moveOutEdge(), OperationPool::operation(), BoostGraph< GraphNode, GraphEdge >::outEdge(), pop_, BFRegCopy::regCopy_, BoostGraph< GraphNode, GraphEdge >::rootGraph(), TTAProgram::Move::setDestination(), TTAProgram::Move::setSource(), MoveNode::setSourceOperationPtr(), and BFOptimization::targetMachine().