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()
128 void LiveVariables::HandleVirtRegUse(Register Reg, MachineBasicBlock *MBB, in HandleVirtRegUse() argument
130 assert(MRI->getVRegDef(Reg) && "Register use before def!"); in HandleVirtRegUse()
134 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegUse()
165 if (MBB == MRI->getVRegDef(Reg)->getParent()) in HandleVirtRegUse()
176 MarkVirtRegAliveInBlock(VRInfo, MRI->getVRegDef(Reg)->getParent(), Pred); in HandleVirtRegUse()
179 void LiveVariables::HandleVirtRegDef(Register Reg, MachineInstr &MI) { in HandleVirtRegDef() argument
180 VarInfo &VRInfo = getVarInfo(Reg); in HandleVirtRegDef()
190 LiveVariables::FindLastPartialDef(Register Reg, in FindLastPartialDef() argument
195 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in FindLastPartialDef()
217 if (TRI->isSubRegister(Reg, DefReg)) { in FindLastPartialDef()
229 void LiveVariables::HandlePhysRegUse(Register Reg, MachineInstr &MI) { in HandlePhysRegUse() argument
230 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegUse()
232 if (!LastDef && !PhysRegUse[Reg]) { in HandlePhysRegUse()
242 MachineInstr *LastPartialDef = FindLastPartialDef(Reg, PartDefRegs); in HandlePhysRegUse()
245 LastPartialDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
247 PhysRegDef[Reg] = LastPartialDef; in HandlePhysRegUse()
249 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandlePhysRegUse()
265 } else if (LastDef && !PhysRegUse[Reg] && in HandlePhysRegUse()
266 !LastDef->findRegisterDefOperand(Reg)) in HandlePhysRegUse()
268 LastDef->addOperand(MachineOperand::CreateReg(Reg, true/*IsDef*/, in HandlePhysRegUse()
272 for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true); in HandlePhysRegUse()
279 MachineInstr *LiveVariables::FindLastRefOrPartRef(Register Reg) { in FindLastRefOrPartRef() argument
280 MachineInstr *LastDef = PhysRegDef[Reg]; in FindLastRefOrPartRef()
281 MachineInstr *LastUse = PhysRegUse[Reg]; in FindLastRefOrPartRef()
288 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in FindLastRefOrPartRef()
309 bool LiveVariables::HandlePhysRegKill(Register Reg, MachineInstr *MI) { in HandlePhysRegKill() argument
310 MachineInstr *LastDef = PhysRegDef[Reg]; in HandlePhysRegKill()
311 MachineInstr *LastUse = PhysRegUse[Reg]; in HandlePhysRegKill()
337 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandlePhysRegKill()
362 if (!PhysRegUse[Reg]) { in HandlePhysRegKill()
367 PhysRegDef[Reg]->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
368 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandlePhysRegKill()
373 if (PhysRegDef[Reg] == PhysRegDef[SubReg]) { in HandlePhysRegKill()
374 MachineOperand *MO = PhysRegDef[Reg]->findRegisterDefOperand(SubReg); in HandlePhysRegKill()
381 PhysRegDef[Reg]->addOperand(MachineOperand::CreateReg(SubReg, in HandlePhysRegKill()
395 } else if (LastRefOrPartRef == PhysRegDef[Reg] && LastRefOrPartRef != MI) { in HandlePhysRegKill()
398 LastPartDef->addOperand(MachineOperand::CreateReg(Reg, false/*IsDef*/, in HandlePhysRegKill()
402 LastRefOrPartRef->findRegisterDefOperand(Reg, false, false, TRI); in HandlePhysRegKill()
403 bool NeedEC = MO->isEarlyClobber() && MO->getReg() != Reg; in HandlePhysRegKill()
406 LastRefOrPartRef->addRegisterDead(Reg, TRI, true); in HandlePhysRegKill()
410 MO = LastRefOrPartRef->findRegisterDefOperand(Reg); in HandlePhysRegKill()
416 LastRefOrPartRef->addRegisterKilled(Reg, TRI, true); in HandlePhysRegKill()
424 for (unsigned Reg = 1, NumRegs = TRI->getNumRegs(); Reg != NumRegs; ++Reg) { in HandleRegMask() local
426 if (!PhysRegDef[Reg] && !PhysRegUse[Reg]) in HandleRegMask()
429 if (!MO.clobbersPhysReg(Reg)) in HandleRegMask()
433 unsigned Super = Reg; in HandleRegMask()
434 for (MCSuperRegIterator SR(Reg, TRI); SR.isValid(); ++SR) in HandleRegMask()
441 void LiveVariables::HandlePhysRegDef(Register Reg, MachineInstr *MI, in HandlePhysRegDef() argument
445 if (PhysRegDef[Reg] || PhysRegUse[Reg]) { in HandlePhysRegDef()
446 for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true); in HandlePhysRegDef()
450 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandlePhysRegDef()
470 HandlePhysRegKill(Reg, MI); in HandlePhysRegDef()
472 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandlePhysRegDef()
481 Defs.push_back(Reg); // Remember this def. in HandlePhysRegDef()
487 Register Reg = Defs.back(); in UpdatePhysRegDefs() local
489 for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true); in UpdatePhysRegDefs()
651 const Register Reg = Register::index2VirtReg(i); in runOnMachineFunction() local
652 for (unsigned j = 0, e2 = VirtRegInfo[Reg].Kills.size(); j != e2; ++j) in runOnMachineFunction()
653 if (VirtRegInfo[Reg].Kills[j] == MRI->getVRegDef(Reg)) in runOnMachineFunction()
654 VirtRegInfo[Reg].Kills[j]->addRegisterDead(Reg, TRI); in runOnMachineFunction()
656 VirtRegInfo[Reg].Kills[j]->addRegisterKilled(Reg, TRI); in runOnMachineFunction()
676 void LiveVariables::replaceKillInstruction(Register Reg, MachineInstr &OldMI, in replaceKillInstruction() argument
678 VarInfo &VI = getVarInfo(Reg); in replaceKillInstruction()
689 Register Reg = MO.getReg(); in removeVirtualRegistersKilled() local
690 if (Register::isVirtualRegister(Reg)) { in removeVirtualRegistersKilled()
691 bool removed = getVarInfo(Reg).removeKill(MI); in removeVirtualRegistersKilled()
716 Register Reg, MachineRegisterInfo &MRI) { in isLiveIn() argument
724 const MachineInstr *Def = MRI.getVRegDef(Reg); in isLiveIn()
732 bool LiveVariables::isLiveOut(Register Reg, const MachineBasicBlock &MBB) { in isLiveOut() argument
733 LiveVariables::VarInfo &VI = getVarInfo(Reg); in isLiveOut()
789 Register Reg = Register::index2VirtReg(i); in addNewBlock() local
792 if (Defs.count(Reg)) in addNewBlock()
797 VarInfo &VI = getVarInfo(Reg); in addNewBlock()
798 if (Kills.count(Reg) || VI.AliveBlocks.test(SuccBB->getNumber())) in addNewBlock()