Lines Matching refs:SVI
316 const InlineSpiller::SibValueInfo &SVI) { in operator <<() argument
317 OS << "spill " << PrintReg(SVI.SpillReg) << ':' in operator <<()
318 << SVI.SpillVNI->id << '@' << SVI.SpillVNI->def; in operator <<()
319 if (SVI.SpillMBB) in operator <<()
320 OS << " in BB#" << SVI.SpillMBB->getNumber(); in operator <<()
321 if (SVI.AllDefsAreReloads) in operator <<()
323 if (SVI.DefByOrigPHI) in operator <<()
325 if (SVI.KillsSource) in operator <<()
328 for (unsigned i = 0, e = SVI.Deps.size(); i != e; ++i) in operator <<()
329 OS << ' ' << SVI.Deps[i]->id << '@' << SVI.Deps[i]->def; in operator <<()
331 if (SVI.DefMI) in operator <<()
332 OS << " def: " << *SVI.DefMI; in operator <<()
344 void InlineSpiller::propagateSiblingValue(SibValueMap::iterator SVI, in propagateSiblingValue() argument
350 SVI->second.Deps.push_back(VNI); in propagateSiblingValue()
354 if (!SVI->second.hasDef()) in propagateSiblingValue()
359 SmallVector<SibValueMap::iterator, 8> WorkList(1, SVI); in propagateSiblingValue()
363 SVI = WorkList.pop_back_val(); in propagateSiblingValue()
364 WorkSet.erase(SVI->first); in propagateSiblingValue()
365 TinyPtrVector<VNInfo*> *Deps = VNI ? &FirstDeps : &SVI->second.Deps; in propagateSiblingValue()
368 SibValueInfo &SV = SVI->second; in propagateSiblingValue()
373 << SVI->first->id << '@' << SVI->first->def << ":\t" << SV); in propagateSiblingValue()
477 SibValueMap::iterator SVI; in traceSiblingValue() local
479 tie(SVI, Inserted) = in traceSiblingValue()
483 << UseVNI->id << '@' << UseVNI->def << ' ' << SVI->second); in traceSiblingValue()
484 return SVI->second.DefMI; in traceSiblingValue()
503 SVI = SibValues.find(VNI); in traceSiblingValue()
504 assert(SVI != SibValues.end() && "Missing SibValues entry"); in traceSiblingValue()
511 SVI->second.DefByOrigPHI = true; in traceSiblingValue()
512 SVI->second.AllDefsAreReloads = false; in traceSiblingValue()
513 propagateSiblingValue(SVI); in traceSiblingValue()
557 tie(SVI, Inserted) = in traceSiblingValue()
561 SVI->second.Deps.push_back(PHIs[pi]); in traceSiblingValue()
567 propagateSiblingValue(SVI); in traceSiblingValue()
584 SVI->second.KillsSource = (SrcLR->end == VNI->def); in traceSiblingValue()
588 << " kill=" << unsigned(SVI->second.KillsSource) << '\n'); in traceSiblingValue()
590 tie(SVI, Inserted) = SibValues.insert(std::make_pair(SrcVNI, in traceSiblingValue()
595 propagateSiblingValue(SVI, VNI); in traceSiblingValue()
602 SVI->second.DefMI = MI; in traceSiblingValue()
603 SVI->second.SpillMBB = MI->getParent(); in traceSiblingValue()
607 propagateSiblingValue(SVI); in traceSiblingValue()
614 SVI->second.AllDefsAreReloads = false; in traceSiblingValue()
615 propagateSiblingValue(SVI); in traceSiblingValue()
620 SVI = SibValues.find(UseVNI); in traceSiblingValue()
621 assert(SVI != SibValues.end() && "Didn't compute requested info"); in traceSiblingValue()
622 DEBUG(dbgs() << " traced to:\t" << SVI->second); in traceSiblingValue()
623 return SVI->second.DefMI; in traceSiblingValue()
674 const SibValueInfo &SVI = I->second; in hoistSpill() local
677 if (!SVI.AllDefsAreReloads && SVI.SpillVNI == VNI) in hoistSpill()
681 if (!LIS.hasInterval(SVI.SpillReg)) { in hoistSpill()
682 DEBUG(dbgs() << "Stale interval: " << PrintReg(SVI.SpillReg) << '\n'); in hoistSpill()
687 LiveInterval &SibLI = LIS.getInterval(SVI.SpillReg); in hoistSpill()
688 if (!SibLI.containsValue(SVI.SpillVNI)) { in hoistSpill()
689 DEBUG(dbgs() << "Stale value: " << PrintReg(SVI.SpillReg) << '\n'); in hoistSpill()
705 if (SVI.AllDefsAreReloads) { in hoistSpill()
706 DEBUG(dbgs() << "\tno spill needed: " << SVI); in hoistSpill()
712 eliminateRedundantSpills(SibLI, SVI.SpillVNI); in hoistSpill()
714 MachineBasicBlock *MBB = LIS.getMBBFromIndex(SVI.SpillVNI->def); in hoistSpill()
716 if (SVI.SpillVNI->isPHIDef()) in hoistSpill()
719 MachineInstr *DefMI = LIS.getInstructionFromIndex(SVI.SpillVNI->def); in hoistSpill()
725 TII.storeRegToStackSlot(*MBB, MII, SVI.SpillReg, false, StackSlot, in hoistSpill()
726 MRI.getRegClass(SVI.SpillReg), &TRI); in hoistSpill()
730 DEBUG(dbgs() << "\thoisted: " << SVI.SpillVNI->def << '\t' << *MII); in hoistSpill()