Home | History | Annotate | Download | only in Hexagon

Lines Matching refs:NodeAddr

87   void printRefHeader(raw_ostream &OS, const NodeAddr<RefNode*> RA,
97 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<DefNode*>> &P) {
115 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<UseNode*>> &P) {
128 const Print<NodeAddr<PhiUseNode*>> &P) {
143 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<RefNode*>> &P) {
192 for (NodeAddr<T> A : P.List) {
202 raw_ostream &operator<< (raw_ostream &OS, const Print<NodeAddr<PhiNode*>> &P) {
210 const Print<NodeAddr<StmtNode*>> &P) {
219 const Print<NodeAddr<InstrNode*>> &P) {
236 const Print<NodeAddr<BlockNode*>> &P) {
270 const Print<NodeAddr<FuncNode*>> &P) {
334 NodeAddr<NodeBase*> NodeAllocator::New() {
340 NodeAddr<NodeBase*> NA = { reinterpret_cast<NodeBase*>(ActiveEnd),
366 void NodeBase::append(NodeAddr<NodeBase*> NA) {
404 NodeAddr<NodeBase*> RefNode::getOwner(const DataFlowGraph &G) {
405 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext());
416 void DefNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) {
423 void UseNode::linkToDef(NodeId Self, NodeAddr<DefNode*> DA) {
430 NodeAddr<NodeBase*> CodeNode::getFirstMember(const DataFlowGraph &G) const {
432 return NodeAddr<NodeBase*>();
437 NodeAddr<NodeBase*> CodeNode::getLastMember(const DataFlowGraph &G) const {
439 return NodeAddr<NodeBase*>();
444 void CodeNode::addMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) {
457 void CodeNode::addMemberAfter(NodeAddr<NodeBase*> MA, NodeAddr<NodeBase*> NA,
465 void CodeNode::removeMember(NodeAddr<NodeBase*> NA, const DataFlowGraph &G) {
498 static auto True = [] (NodeAddr<NodeBase*>) -> bool { return true; };
503 NodeAddr<NodeBase*> InstrNode::getOwner(const DataFlowGraph &G) {
504 NodeAddr<NodeBase*> NA = G.addr<NodeBase*>(getNext());
516 void BlockNode::addPhi(NodeAddr<PhiNode*> PA, const DataFlowGraph &G) {
532 NodeAddr<NodeBase*> MN = M;
546 NodeAddr<BlockNode*> FuncNode::findBlock(const MachineBasicBlock *BB,
548 auto EqBB = [BB] (NodeAddr<NodeBase*> NA) -> bool {
549 return NodeAddr<BlockNode*>(NA).Addr->getCode() == BB;
554 return NodeAddr<BlockNode*>();
558 NodeAddr<BlockNode*> FuncNode::getEntryBlock(const DataFlowGraph &G) {
775 Stack.push_back(NodeAddr<DefNode*>(nullptr, N));
841 NodeAddr<NodeBase*> DataFlowGraph::newNode(uint16_t Attrs) {
842 NodeAddr<NodeBase*> P = Memory.New();
850 NodeAddr<NodeBase*> DataFlowGraph::cloneNode(const NodeAddr<NodeBase*> B) {
851 NodeAddr<NodeBase*> NA = newNode(0);
855 NodeAddr<RefNode*> RA = NA;
859 NodeAddr<DefNode*> DA = NA;
870 NodeAddr<UseNode*> DataFlowGraph::newUse(NodeAddr<InstrNode*> Owner,
872 NodeAddr<UseNode*> UA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags);
877 NodeAddr<PhiUseNode*> DataFlowGraph::newPhiUse(NodeAddr<PhiNode*> Owner,
878 RegisterRef RR, NodeAddr<BlockNode*> PredB, uint16_t Flags) {
879 NodeAddr<PhiUseNode*> PUA = newNode(NodeAttrs::Ref | NodeAttrs::Use | Flags);
886 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
888 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags);
893 NodeAddr<DefNode*> DataFlowGraph::newDef(NodeAddr<InstrNode*> Owner,
895 NodeAddr<DefNode*> DA = newNode(NodeAttrs::Ref | NodeAttrs::Def | Flags);
901 NodeAddr<PhiNode*> DataFlowGraph::newPhi(NodeAddr<BlockNode*> Owner) {
902 NodeAddr<PhiNode*> PA = newNode(NodeAttrs::Code | NodeAttrs::Phi);
907 NodeAddr<StmtNode*> DataFlowGraph::newStmt(NodeAddr<BlockNode*> Owner,
909 NodeAddr<StmtNode*> SA = newNode(NodeAttrs::Code | NodeAttrs::Stmt);
915 NodeAddr<BlockNode*> DataFlowGraph::newBlock(NodeAddr<FuncNode*> Owner,
917 NodeAddr<BlockNode*> BA = newNode(NodeAttrs::Code | NodeAttrs::Block);
923 NodeAddr<FuncNode*> DataFlowGraph::newFunc(MachineFunction *MF) {
924 NodeAddr<FuncNode*> FA = newNode(NodeAttrs::Code | NodeAttrs::Func);
947 NodeAddr<BlockNode*> EA = Func.Addr->getEntryBlock(*this);
954 NodeAddr<PhiNode*> PA = newPhi(EA);
957 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags);
965 for (NodeAddr<BlockNode*> BA : Blocks)
967 for (NodeAddr<BlockNode*> BA : Blocks)
1005 void DataFlowGraph::pushDefs(NodeAddr<InstrNode*> IA, DefStackMap &DefM) {
1024 for (NodeAddr<DefNode*> DA : Defs) {
1028 NodeAddr<DefNode*> PDA = Rel.front();
1035 auto *MI = NodeAddr<StmtNode*>(IA).Addr->getCode();
1055 NodeList DataFlowGraph::getRelatedRefs(NodeAddr<InstrNode*> IA,
1056 NodeAddr<RefNode*> RA) const {
1072 Func = NodeAddr<FuncNode*>();
1082 NodeAddr<RefNode*> DataFlowGraph::getNextRelated(NodeAddr<InstrNode*> IA,
1083 NodeAddr<RefNode*> RA) const {
1086 auto Related = [RA](NodeAddr<RefNode*> TA) -> bool {
1093 auto RelatedStmt = [&Related,RA](NodeAddr<RefNode*> TA) -> bool {
1097 auto RelatedPhi = [&Related,RA](NodeAddr<RefNode*> TA) -> bool {
1103 const NodeAddr<const PhiUseNode*> TUA = TA;
1104 const NodeAddr<const PhiUseNode*> RUA = RA;
1120 std::pair<NodeAddr<RefNode*>,NodeAddr<RefNode*>>
1121 DataFlowGraph::locateNextRef(NodeAddr<InstrNode*> IA, NodeAddr<RefNode*> RA,
1125 NodeAddr<RefNode*> NA;
1138 return std::make_pair(RA, NodeAddr<RefNode*>());
1143 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
1144 NodeAddr<RefNode*> RA, bool Create) {
1148 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool {
1156 NodeAddr<RefNode*> NA = cloneNode(RA);
1164 NodeAddr<RefNode*> DataFlowGraph::getNextShadow(NodeAddr<InstrNode*> IA,
1165 NodeAddr<RefNode*> RA) const {
1168 auto IsShadow = [Flags] (NodeAddr<RefNode*> TA) -> bool {
1176 void DataFlowGraph::buildStmt(NodeAddr<BlockNode*> BA, MachineInstr &In) {
1223 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags);
1246 NodeAddr<DefNode*> DA = newDef(SA, Op, Flags);
1266 NodeAddr<UseNode*> UA = newUse(SA, Op, Flags);
1273 void DataFlowGraph::buildBlockRefs(NodeAddr<BlockNode*> BA,
1286 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this))
1287 for (NodeAddr<RefNode*> RA : IA.Addr->members(*this))
1294 NodeAddr<BlockNode*> BA) {
1314 NodeAddr<InstrNode*> IA = I;
1315 for (NodeAddr<RefNode*> RA : IA.Addr->members_if(IsDef, *this))
1346 NodeAddr<BlockNode*> BA) {
1411 NodeAddr<PhiNode*> PA = newPhi(BA);
1417 NodeAddr<DefNode*> DA = newDef(PA, RR, PhiFlags);
1425 NodeAddr<PhiUseNode*> PUA = newPhiUse(PA, RR, PBA);
1446 for (NodeAddr<BlockNode*> BA : Func.Addr->members(*this)) {
1455 NodeAddr<DefNode*> DA = M;
1471 for (NodeAddr<RefNode*> RA : Refs) {
1474 NodeAddr<InstrNode*> OA = RDA.Addr->getOwner(*this);
1483 NodeAddr<BlockNode*> BA = PA.Addr->getOwner(*this);
1492 void DataFlowGraph::linkRefUp(NodeAddr<InstrNode*> IA, NodeAddr<T> TA,
1497 NodeAddr<T> TAP;
1516 NodeAddr<DefNode*> RDA = *I;
1537 void DataFlowGraph::linkStmtRefs(DefStackMap &DefM, NodeAddr<StmtNode*> SA) {
1541 for (NodeAddr
1565 void DataFlowGraph::linkBlockRefs(DefStackMap &DefM, NodeAddr<BlockNode*> BA) {
1573 for (NodeAddr<InstrNode*> IA : BA.Addr->members(*this)) {
1592 auto IsUseForBA = [BA](NodeAddr<NodeBase*> NA) -> bool {
1596 NodeAddr<PhiUseNode*> PUA = NA;
1602 for (NodeAddr<InstrNode*> IA : SBA.Addr->members_if(IsPhi, *this)) {
1605 NodeAddr<PhiUseNode*> PUA = U;
1617 void DataFlowGraph::unlinkUseDF(NodeAddr<UseNode*> UA) {
1644 void DataFlowGraph::unlinkDefDF(NodeAddr<DefNode*> DA) {
1683 for (NodeAddr<RefNode*> I : ReachedDefs)
1685 for (NodeAddr<RefNode*> I : ReachedUses)
1688 for (NodeAddr<DefNode*> I : ReachedDefs)
1690 for (NodeAddr<UseNode*> I : ReachedUses)
1721 auto Last = NodeAddr<DefNode*>(ReachedDefs.back());
1727 auto Last = NodeAddr<UseNode*>(ReachedUses.back());