Lines Matching refs:Reg
81 const Register Reg = Register::index2VirtReg(I); in print() local
83 VirtRegInfo[Reg].print(OS); in print()
114 LiveVariables::VarInfo &LiveVariables::getVarInfo(Register Reg) { in getVarInfo() argument
115 assert(Reg.isVirtual() && "getVarInfo: not a virtual register!"); in getVarInfo()
116 VirtRegInfo.grow(Reg); in getVarInfo()
117 return VirtRegInfo[Reg]; in getVarInfo()
157 void LiveVariables::HandleVirtRegUse(Register Reg, MachineBasicBlock *MBB, in HandleVirtRegUse() argument
159 assert(MRI->getVRegDef(Reg) && "Register use before def!"); in HandleVirtRegUse()
163 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegUse()
194 if (MBB == MRI->getVRegDef(Reg)->getParent()) in HandleVirtRegUse()
205 MarkVirtRegAliveInBlock(VRInfo, MRI->getVRegDef(Reg)->getParent(), Pred); in HandleVirtRegUse()
208 void LiveVariables::HandleVirtRegDef(Register Reg, MachineInstr &MI) { in HandleVirtRegDef() argument
209 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegDef()
219 LiveVariables::FindLastPartialDef(Register Reg, in FindLastPartialDef() argument
224 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in FindLastPartialDef()
244 if (TRI->isSubRegister(Reg, DefReg)) { in FindLastPartialDef()
255 void LiveVariables::HandlePhysRegUse(Register Reg, MachineInstr &MI) { in HandlePhysRegUse() argument
256 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegUse()
258 if (!LastDef && !PhysRegUse[Reg]) { in HandlePhysRegUse()
268 MachineInstr *LastPartialDef = FindLastPartialDef(Reg, PartDefRegs); in HandlePhysRegUse()
271 LastPartialDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
273 PhysRegDef[Reg] = LastPartialDef; in HandlePhysRegUse()
275 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegUse()
290 } else if (LastDef && !PhysRegUse[Reg] && in HandlePhysRegUse()
291 !LastDef->findRegisterDefOperand(Reg, /*TRI=*/nullptr)) in HandlePhysRegUse()
293 LastDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
297 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) in HandlePhysRegUse()
303 MachineInstr *LiveVariables::FindLastRefOrPartRef(Register Reg) { in FindLastRefOrPartRef() argument
304 MachineInstr *LastDef = PhysRegDef[Reg]; in FindLastRefOrPartRef()
305 MachineInstr *LastUse = PhysRegUse[Reg]; in FindLastRefOrPartRef()
312 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in FindLastRefOrPartRef()
332 bool LiveVariables::HandlePhysRegKill(Register Reg, MachineInstr *MI) { in HandlePhysRegKill() argument
333 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegKill()
334 MachineInstr *LastUse = PhysRegUse[Reg]; in HandlePhysRegKill()
360 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegKill()
383 if (!PhysRegUse[Reg]) { in HandlePhysRegKill()
388 PhysRegDef[Reg]->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
389 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegKill()
393 if (PhysRegDef[Reg] == PhysRegDef[SubReg]) { in HandlePhysRegKill()
395 PhysRegDef[Reg]->findRegisterDefOperand(SubReg, /*TRI=*/nullptr); in HandlePhysRegKill()
402 PhysRegDef[Reg]->addOperand(MachineOperand::CreateReg(SubReg, in HandlePhysRegKill()
415 } else if (LastRefOrPartRef == PhysRegDef[Reg] && LastRefOrPartRef != MI) { in HandlePhysRegKill()
418 LastPartDef->addOperand(MachineOperand::CreateReg(Reg, false/*IsDef*/, in HandlePhysRegKill()
422 LastRefOrPartRef->findRegisterDefOperand(Reg, TRI, false, false); in HandlePhysRegKill()
423 bool NeedEC = MO->isEarlyClobber() && MO->getReg() != Reg; in HandlePhysRegKill()
426 LastRefOrPartRef->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
430 MO = LastRefOrPartRef->findRegisterDefOperand(Reg, /*TRI=*/nullptr); in HandlePhysRegKill()
436 LastRefOrPartRef->addRegisterKilled(Reg, TRI, true); in HandlePhysRegKill()
444 for (unsigned Reg = 1; Reg != NumRegs; ++Reg) { in HandleRegMask() local
446 if (!PhysRegDef[Reg] && !PhysRegUse[Reg]) in HandleRegMask()
449 if (!MO.clobbersPhysReg(Reg)) in HandleRegMask()
453 unsigned Super = Reg; in HandleRegMask()
454 for (MCPhysReg SR : TRI->superregs(Reg)) in HandleRegMask()
462 void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI, in HandlePhysRegDef() argument
466 if (PhysRegDef[Reg] || PhysRegUse[Reg]) { in HandlePhysRegDef()
467 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) in HandlePhysRegDef()
470 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegDef()
488 HandlePhysRegKill(Reg, MI); in HandlePhysRegDef()
490 for (MCPhysReg SubReg : TRI->subregs(Reg)) { in HandlePhysRegDef()
498 Defs.push_back(Reg); // Remember this def. in HandlePhysRegDef()
504 Register Reg = Defs.pop_back_val(); in UpdatePhysRegDefs() local
505 for (MCPhysReg SubReg : TRI->subregs_inclusive(Reg)) { in UpdatePhysRegDefs()
663 const Register Reg = Register::index2VirtReg(i); in analyze() local
664 for (unsigned j = 0, e2 = VirtRegInfo[Reg].Kills.size(); j != e2; ++j) in analyze()
665 if (VirtRegInfo[Reg].Kills[j] == MRI->getVRegDef(Reg)) in analyze()
666 VirtRegInfo[Reg].Kills[j]->addRegisterDead(Reg, TRI); in analyze()
668 VirtRegInfo[Reg].Kills[j]->addRegisterKilled(Reg, TRI); in analyze()
684 void LiveVariables::recomputeForSingleDefVirtReg(Register Reg) { in recomputeForSingleDefVirtReg() argument
685 assert(Reg.isVirtual()); in recomputeForSingleDefVirtReg()
687 VarInfo &VI = getVarInfo(Reg); in recomputeForSingleDefVirtReg()
691 MachineInstr &DefMI = *MRI->getUniqueVRegDef(Reg); in recomputeForSingleDefVirtReg()
701 for (auto &UseMO : MRI->use_nodbg_operands(Reg)) { in recomputeForSingleDefVirtReg()
725 DefMI.addRegisterDead(Reg, nullptr); in recomputeForSingleDefVirtReg()
728 DefMI.clearRegisterDeads(Reg); in recomputeForSingleDefVirtReg()
758 if (MI.readsVirtualRegister(Reg)) { in recomputeForSingleDefVirtReg()
759 assert(!MI.killsRegister(Reg, /*TRI=*/nullptr)); in recomputeForSingleDefVirtReg()
760 MI.addRegisterKilled(Reg, nullptr); in recomputeForSingleDefVirtReg()
770 void LiveVariables::replaceKillInstruction(Register Reg, MachineInstr &OldMI, in replaceKillInstruction() argument
772 VarInfo &VI = getVarInfo(Reg); in replaceKillInstruction()
782 Register Reg = MO.getReg(); in removeVirtualRegistersKilled() local
783 if (Reg.isVirtual()) { in removeVirtualRegistersKilled()
784 bool removed = getVarInfo(Reg).removeKill(MI); in removeVirtualRegistersKilled()
809 Register Reg, MachineRegisterInfo &MRI) { in isLiveIn() argument
817 const MachineInstr *Def = MRI.getVRegDef(Reg); in isLiveIn()
825 bool LiveVariables::isLiveOut(Register Reg, const MachineBasicBlock &MBB) { in isLiveOut() argument
826 LiveVariables::VarInfo &VI = getVarInfo(Reg); in isLiveOut()
882 Register Reg = Register::index2VirtReg(i); in addNewBlock() local
885 if (Defs.count(Reg)) in addNewBlock()
890 VarInfo &VI = getVarInfo(Reg); in addNewBlock()
891 if (Kills.count(Reg) || VI.AliveBlocks.test(SuccBB->getNumber())) in addNewBlock()