Lines Matching refs:VNI
117 SibValueInfo(unsigned Reg, VNInfo *VNI) in SibValueInfo()
119 SpillReg(Reg), SpillVNI(VNI), SpillMBB(0), DefMI(0) {} in SibValueInfo()
164 void propagateSiblingValue(SibValueMap::iterator, VNInfo *VNI = 0);
168 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
343 VNInfo *VNI) { in propagateSiblingValue() argument
346 if (VNI) { in propagateSiblingValue()
347 FirstDeps.push_back(VNI); in propagateSiblingValue()
348 SVI->second.Deps.push_back(VNI); in propagateSiblingValue()
363 TinyPtrVector<VNInfo*> *Deps = VNI ? &FirstDeps : &SVI->second.Deps; in propagateSiblingValue()
364 VNI = 0; in propagateSiblingValue()
495 VNInfo *VNI; in traceSiblingValue() local
496 tie(Reg, VNI) = WorkList.pop_back_val(); in traceSiblingValue()
497 DEBUG(dbgs() << " " << PrintReg(Reg) << ':' << VNI->id << '@' << VNI->def in traceSiblingValue()
501 SVI = SibValues.find(VNI); in traceSiblingValue()
505 if (VNI->isPHIDef()) { in traceSiblingValue()
507 if (VNI->def == OrigVNI->def) { in traceSiblingValue()
572 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in traceSiblingValue()
579 LiveRangeQuery SrcQ(SrcLI, VNI->def); in traceSiblingValue()
593 propagateSiblingValue(SVI, VNI); in traceSiblingValue()
641 VNInfo *VNI = *VI; in analyzeSiblingValues() local
642 if (VNI->isUnused()) in analyzeSiblingValues()
645 if (!VNI->isPHIDef()) { in analyzeSiblingValues()
646 DefMI = LIS.getInstructionFromIndex(VNI->def); in analyzeSiblingValues()
650 if (VNI->isPHIDef() || DefMI->isCopy()) { in analyzeSiblingValues()
651 VNInfo *OrigVNI = OrigLI.getVNInfoAt(VNI->def); in analyzeSiblingValues()
653 if (OrigVNI->def != VNI->def) in analyzeSiblingValues()
654 DefMI = traceSiblingValue(Reg, VNI, OrigVNI); in analyzeSiblingValues()
656 if (DefMI && Edit->checkRematerializable(VNI, DefMI, AA)) { in analyzeSiblingValues()
657 DEBUG(dbgs() << "Value " << PrintReg(Reg) << ':' << VNI->id << '@' in analyzeSiblingValues()
658 << VNI->def << " may remat from " << *DefMI); in analyzeSiblingValues()
668 VNInfo *VNI = SpillLI.getVNInfoAt(Idx.getRegSlot()); in hoistSpill() local
669 assert(VNI && VNI->def == Idx.getRegSlot() && "Not defined by copy"); in hoistSpill()
670 SibValueMap::iterator I = SibValues.find(VNI); in hoistSpill()
677 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI) in hoistSpill()
738 void InlineSpiller::eliminateRedundantSpills(LiveInterval &SLI, VNInfo *VNI) { in eliminateRedundantSpills() argument
739 assert(VNI && "Missing value"); in eliminateRedundantSpills()
741 WorkList.push_back(std::make_pair(&SLI, VNI)); in eliminateRedundantSpills()
746 tie(LI, VNI) = WorkList.pop_back_val(); in eliminateRedundantSpills()
749 << VNI->id << '@' << VNI->def << " in " << *LI << '\n'); in eliminateRedundantSpills()
756 StackInt->MergeValueInAsValue(*LI, VNI, StackInt->getValNumInfo(0)); in eliminateRedundantSpills()
765 if (LI->getVNInfoAt(Idx) != VNI) in eliminateRedundantSpills()
801 void InlineSpiller::markValueUsed(LiveInterval *LI, VNInfo *VNI) { in markValueUsed() argument
803 WorkList.push_back(std::make_pair(LI, VNI)); in markValueUsed()
805 tie(LI, VNI) = WorkList.pop_back_val(); in markValueUsed()
806 if (!UsedValues.insert(VNI)) in markValueUsed()
809 if (VNI->isPHIDef()) { in markValueUsed()
810 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def); in markValueUsed()
821 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in markValueUsed()
826 VNInfo *SnipVNI = SnipLI.getVNInfoAt(VNI->def.getRegSlot(true)); in markValueUsed()
938 VNInfo *VNI = *I; in reMaterializeAll() local
939 if (VNI->isUnused() || VNI->isPHIDef() || UsedValues.count(VNI)) in reMaterializeAll()
941 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def); in reMaterializeAll()
1151 if (VNInfo *VNI = OldLI.getVNInfoAt(Idx.getRegSlot(true))) in spillAroundUses() local
1152 if (SlotIndex::isSameInstr(Idx, VNI->def)) in spillAroundUses()
1153 Idx = VNI->def; in spillAroundUses()
1214 VNInfo *VNI = NewLI.getNextValue(Idx, LIS.getVNInfoAllocator()); in spillAroundUses() local
1215 NewLI.addRange(LiveRange(Idx, Idx.getDeadSlot(), VNI)); in spillAroundUses()