Lines Matching defs:VNI

122     SibValueInfo(unsigned Reg, VNInfo *VNI)
124 SpillReg(Reg), SpillVNI(VNI), SpillMBB(nullptr), DefMI(nullptr) {}
165 void propagateSiblingValue(SibValueMap::iterator, VNInfo *VNI = nullptr);
169 void eliminateRedundantSpills(LiveInterval &LI, VNInfo *VNI);
347 /// @param VNI Dependent value, or NULL to propagate to all saved dependents.
349 VNInfo *VNI) {
352 // When VNI is non-NULL, add it to SVI's deps, and only propagate to that.
354 if (VNI) {
355 FirstDeps.push_back(VNI);
356 SVI->second.Deps.push_back(VNI);
369 TinyPtrVector<VNInfo*> *Deps = VNI ? &FirstDeps : &SVI->second.Deps;
370 VNI = nullptr;
506 // List of (Reg, VNI) that have been inserted into SibValues, but need to be
514 VNInfo *VNI;
515 std::tie(Reg, VNI) = WorkList.pop_back_val();
516 DEBUG(dbgs() << " " << PrintReg(Reg) << ':' << VNI->id << '@' << VNI->def
520 SVI = SibValues.find(VNI);
524 if (VNI->isPHIDef()) {
529 if (VNI->def == OrigLI.getVNInfoAt(VNI->def)->def) {
542 // jointly dominate VNI->def. This is not optimal since VNI may actually
585 // Propagate to all inserted PHIs, not just VNI.
593 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
600 LiveQueryResult SrcQ = SrcLI.Query(VNI->def);
614 propagateSiblingValue(SVI, VNI);
662 VNInfo *VNI = *VI;
663 if (VNI->isUnused())
666 if (!VNI->isPHIDef()) {
667 DefMI = LIS.getInstructionFromIndex(VNI->def);
671 if (VNI->isPHIDef() || DefMI->isCopy()) {
672 VNInfo *OrigVNI = OrigLI.getVNInfoAt(VNI->def);
674 if (OrigVNI->def != VNI->def)
675 DefMI = traceSiblingValue(Reg, VNI, OrigVNI);
677 if (DefMI && Edit->checkRematerializable(VNI, DefMI, AA)) {
678 DEBUG(dbgs() << "Value " << PrintReg(Reg) << ':' << VNI->id << '@'
679 << VNI->def << " may remat from " << *DefMI);
689 VNInfo *VNI = SpillLI.getVNInfoAt(Idx.getRegSlot());
690 assert(VNI && VNI->def == Idx.getRegSlot() && "Not defined by copy");
691 SibValueMap::iterator I = SibValues.find(VNI);
698 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI)
757 /// eliminateRedundantSpills - SLI:VNI is known to be on the stack. Remove any
759 void InlineSpiller::eliminateRedundantSpills(LiveInterval &SLI, VNInfo *VNI) {
760 assert(VNI && "Missing value");
762 WorkList.push_back(std::make_pair(&SLI, VNI));
767 std::tie(LI, VNI) = WorkList.pop_back_val();
770 << VNI->id << '@' << VNI->def << " in " << *LI << '\n');
776 // Add all of VNI's live range to StackInt.
777 StackInt->MergeValueInAsValue(*LI, VNI, StackInt->getValNumInfo(0));
780 // Find all spills and copies of VNI.
788 if (LI->getVNInfoAt(Idx) != VNI)
822 /// markValueUsed - Remember that VNI failed to rematerialize, so its defining
824 void InlineSpiller::markValueUsed(LiveInterval *LI, VNInfo *VNI) {
826 WorkList.push_back(std::make_pair(LI, VNI));
828 std::tie(LI, VNI) = WorkList.pop_back_val();
829 if (!UsedValues.insert(VNI).second)
832 if (VNI->isPHIDef()) {
833 MachineBasicBlock *MBB = LIS.getMBBFromIndex(VNI->def);
844 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
849 VNInfo *SnipVNI = SnipLI.getVNInfoAt(VNI->def.getRegSlot(true));
971 VNInfo *VNI = *I;
972 if (VNI->isUnused() || VNI->isPHIDef() || UsedValues.count(VNI))
974 MachineInstr *MI = LIS.getInstructionFromIndex(VNI->def);
1261 if (VNInfo *VNI = OldLI.getVNInfoAt(Idx.getRegSlot(true)))
1262 if (SlotIndex::isSameInstr(Idx, VNI->def))
1263 Idx = VNI->def;