Lines Matching refs:Reg

84 LiveVariables::VarInfo &LiveVariables::getVarInfo(Register Reg) {  in getVarInfo()  argument
85 assert(Reg.isVirtual() && "getVarInfo: not a virtual register!"); in getVarInfo()
86 VirtRegInfo.grow(Reg); in getVarInfo()
87 return VirtRegInfo[Reg]; in getVarInfo()
127 void LiveVariables::HandleVirtRegUse(Register Reg, MachineBasicBlock *MBB, in HandleVirtRegUse() argument
129 assert(MRI->getVRegDef(Reg) && "Register use before def!"); in HandleVirtRegUse()
133 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegUse()
164 if (MBB == MRI->getVRegDef(Reg)->getParent()) in HandleVirtRegUse()
175 MarkVirtRegAliveInBlock(VRInfo, MRI->getVRegDef(Reg)->getParent(), Pred); in HandleVirtRegUse()
178 void LiveVariables::HandleVirtRegDef(Register Reg, MachineInstr &MI) { in HandleVirtRegDef() argument
179 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegDef()
189 LiveVariables::FindLastPartialDef(Register Reg, in FindLastPartialDef() argument
194 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in FindLastPartialDef()
214 if (TRI->isSubRegister(Reg, DefReg)) { in FindLastPartialDef()
225 void LiveVariables::HandlePhysRegUse(Register Reg, MachineInstr &MI) { in HandlePhysRegUse() argument
226 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegUse()
228 if (!LastDef && !PhysRegUse[Reg]) { in HandlePhysRegUse()
238 MachineInstr *LastPartialDef = FindLastPartialDef(Reg, PartDefRegs); in HandlePhysRegUse()
241 LastPartialDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
243 PhysRegDef[Reg] = LastPartialDef; in HandlePhysRegUse()
245 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegUse()
260 } else if (LastDef && !PhysRegUse[Reg] && in HandlePhysRegUse()
261 !LastDef->findRegisterDefOperand(Reg)) in HandlePhysRegUse()
263 LastDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
267 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) in HandlePhysRegUse()
273 MachineInstr *LiveVariables::FindLastRefOrPartRef(Register Reg) { in FindLastRefOrPartRef() argument
274 MachineInstr *LastDef = PhysRegDef[Reg]; in FindLastRefOrPartRef()
275 MachineInstr *LastUse = PhysRegUse[Reg]; in FindLastRefOrPartRef()
282 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in FindLastRefOrPartRef()
302 bool LiveVariables::HandlePhysRegKill(Register Reg, MachineInstr *MI) { in HandlePhysRegKill() argument
303 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegKill()
304 MachineInstr *LastUse = PhysRegUse[Reg]; in HandlePhysRegKill()
330 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegKill()
353 if (!PhysRegUse[Reg]) { in HandlePhysRegKill()
358 PhysRegDef[Reg]->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
359 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegKill()
363 if (PhysRegDef[Reg] == PhysRegDef[SubReg]) { in HandlePhysRegKill()
364 MachineOperand *MO = PhysRegDef[Reg]->findRegisterDefOperand(SubReg); in HandlePhysRegKill()
371 PhysRegDef[Reg]->addOperand(MachineOperand::CreateReg(SubReg, in HandlePhysRegKill()
384 } else if (LastRefOrPartRef == PhysRegDef[Reg] && LastRefOrPartRef != MI) { in HandlePhysRegKill()
387 LastPartDef->addOperand(MachineOperand::CreateReg(Reg, false/*IsDef*/, in HandlePhysRegKill()
391 LastRefOrPartRef->findRegisterDefOperand(Reg, false, false, TRI); in HandlePhysRegKill()
392 bool NeedEC = MO->isEarlyClobber() && MO->getReg() != Reg; in HandlePhysRegKill()
395 LastRefOrPartRef->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
399 MO = LastRefOrPartRef->findRegisterDefOperand(Reg); in HandlePhysRegKill()
405 LastRefOrPartRef->addRegisterKilled(Reg, TRI, true); in HandlePhysRegKill()
413 for (unsigned Reg = 1; Reg != NumRegs; ++Reg) { in HandleRegMask() local
415 if (!PhysRegDef[Reg] && !PhysRegUse[Reg]) in HandleRegMask()
418 if (!MO.clobbersPhysReg(Reg)) in HandleRegMask()
422 unsigned Super = Reg; in HandleRegMask()
423 for (MCPhysReg SR : TRI->superregs(Reg)) in HandleRegMask()
431 void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI, in HandlePhysRegDef() argument
435 if (PhysRegDef[Reg] || PhysRegUse[Reg]) { in HandlePhysRegDef()
436 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) in HandlePhysRegDef()
439 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegDef()
457 HandlePhysRegKill(Reg, MI); in HandlePhysRegDef()
459 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegDef()
467 Defs.push_back(Reg); // Remember this def. in HandlePhysRegDef()
473 Register Reg = Defs.pop_back_val(); in UpdatePhysRegDefs() local
474 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) { in UpdatePhysRegDefs()
632 const Register Reg = Register::index2VirtReg(i); in runOnMachineFunction() local
633 for (unsigned j = 0, e2 = VirtRegInfo[Reg].Kills.size(); j != e2; ++j) in runOnMachineFunction()
634 if (VirtRegInfo[Reg].Kills[j] == MRI->getVRegDef(Reg)) in runOnMachineFunction()
635 VirtRegInfo[Reg].Kills[j]->addRegisterDead(Reg, TRI); in runOnMachineFunction()
637 VirtRegInfo[Reg].Kills[j]->addRegisterKilled(Reg, TRI); in runOnMachineFunction()
655 void LiveVariables::recomputeForSingleDefVirtReg(Register Reg) { in recomputeForSingleDefVirtReg() argument
656 assert(Reg.isVirtual()); in recomputeForSingleDefVirtReg()
658 VarInfo &VI = getVarInfo(Reg); in recomputeForSingleDefVirtReg()
662 MachineInstr &DefMI = *MRI->getUniqueVRegDef(Reg); in recomputeForSingleDefVirtReg()
672 for (auto &UseMO : MRI->use_nodbg_operands(Reg)) { in recomputeForSingleDefVirtReg()
696 DefMI.addRegisterDead(Reg, nullptr); in recomputeForSingleDefVirtReg()
699 DefMI.clearRegisterDeads(Reg); in recomputeForSingleDefVirtReg()
729 if (MI.readsVirtualRegister(Reg)) { in recomputeForSingleDefVirtReg()
730 assert(!MI.killsRegister(Reg)); in recomputeForSingleDefVirtReg()
731 MI.addRegisterKilled(Reg, nullptr); in recomputeForSingleDefVirtReg()
741 void LiveVariables::replaceKillInstruction(Register Reg, MachineInstr &OldMI, in replaceKillInstruction() argument
743 VarInfo &VI = getVarInfo(Reg); in replaceKillInstruction()
753 Register Reg = MO.getReg(); in removeVirtualRegistersKilled() local
754 if (Reg.isVirtual()) { in removeVirtualRegistersKilled()
755 bool removed = getVarInfo(Reg).removeKill(MI); in removeVirtualRegistersKilled()
780 Register Reg, MachineRegisterInfo &MRI) { in isLiveIn() argument
788 const MachineInstr *Def = MRI.getVRegDef(Reg); in isLiveIn()
796 bool LiveVariables::isLiveOut(Register Reg, const MachineBasicBlock &MBB) { in isLiveOut() argument
797 LiveVariables::VarInfo &VI = getVarInfo(Reg); in isLiveOut()
853 Register Reg = Register::index2VirtReg(i); in addNewBlock() local
856 if (Defs.count(Reg)) in addNewBlock()
861 VarInfo &VI = getVarInfo(Reg); in addNewBlock()
862 if (Kills.count(Reg) || VI.AliveBlocks.test(SuccBB->getNumber())) in addNewBlock()