Lines Matching refs:PhysReg

33 static bool isValidRegUseOf(const MachineOperand &MO, MCRegister PhysReg,  in isValidRegUseOf()  argument
37 return TRI->regsOverlap(MO.getReg(), PhysReg); in isValidRegUseOf()
44 static bool isValidRegDefOf(const MachineOperand &MO, MCRegister PhysReg, in isValidRegDefOf() argument
48 return TRI->regsOverlap(MO.getReg(), PhysReg); in isValidRegDefOf()
68 for (MCRegUnitIterator Unit(LI.PhysReg, TRI); Unit.isValid(); ++Unit) { in enterBasicBlock()
264 MCRegister PhysReg) const { in getReachingDef()
272 for (MCRegUnitIterator Unit(PhysReg, TRI); Unit.isValid(); ++Unit) { in getReachingDef()
285 MCRegister PhysReg) const { in getReachingLocalMIDef()
286 return hasLocalDefBefore(MI, PhysReg) in getReachingLocalMIDef()
287 ? getInstFromId(MI->getParent(), getReachingDef(MI, PhysReg)) in getReachingLocalMIDef()
292 MCRegister PhysReg) const { in hasSameReachingDef()
298 return getReachingDef(A, PhysReg) == getReachingDef(B, PhysReg); in hasSameReachingDef()
321 MCRegister PhysReg) const { in getClearance()
323 return InstIds.lookup(MI) - getReachingDef(MI, PhysReg); in getClearance()
327 MCRegister PhysReg) const { in hasLocalDefBefore()
328 return getReachingDef(MI, PhysReg) >= 0; in hasLocalDefBefore()
332 MCRegister PhysReg, in getReachingLocalUses() argument
342 if (getReachingLocalMIDef(&*MI, PhysReg) != Def) in getReachingLocalUses()
346 if (!isValidRegUseOf(MO, PhysReg, TRI)) in getReachingLocalUses()
357 MCRegister PhysReg, in getLiveInUses() argument
362 if (!isValidRegUseOf(MO, PhysReg, TRI)) in getLiveInUses()
364 if (getReachingDef(&MI, PhysReg) >= 0) in getLiveInUses()
372 return isReachingDefLiveOut(&*Last, PhysReg); in getLiveInUses()
375 void ReachingDefAnalysis::getGlobalUses(MachineInstr *MI, MCRegister PhysReg, in getGlobalUses() argument
380 getReachingLocalUses(MI, PhysReg, Uses); in getGlobalUses()
383 if (auto *LiveOut = getLocalLiveOutMIDef(MI->getParent(), PhysReg)) { in getGlobalUses()
391 if (Visited.count(MBB) || !MBB->isLiveIn(PhysReg)) in getGlobalUses()
393 if (getLiveInUses(MBB, PhysReg, Uses)) in getGlobalUses()
401 MCRegister PhysReg, in getGlobalReachingDefs() argument
403 if (auto *Def = getUniqueReachingMIDef(MI, PhysReg)) { in getGlobalReachingDefs()
409 getLiveOuts(MBB, PhysReg, Defs); in getGlobalReachingDefs()
413 MCRegister PhysReg, InstSet &Defs) const { in getLiveOuts() argument
415 getLiveOuts(MBB, PhysReg, Defs, VisitedBBs); in getLiveOuts()
419 MCRegister PhysReg, InstSet &Defs, in getLiveOuts() argument
427 if (LiveRegs.available(MBB->getParent()->getRegInfo(), PhysReg)) in getLiveOuts()
430 if (auto *Def = getLocalLiveOutMIDef(MBB, PhysReg)) in getLiveOuts()
434 getLiveOuts(Pred, PhysReg, Defs, VisitedBBs); in getLiveOuts()
439 MCRegister PhysReg) const { in getUniqueReachingMIDef()
441 MachineInstr *LocalDef = getReachingLocalMIDef(MI, PhysReg); in getUniqueReachingMIDef()
448 getLiveOuts(Pred, PhysReg, Incoming); in getUniqueReachingMIDef()
471 MCRegister PhysReg) const { in isRegUsedAfter()
477 if (!LiveRegs.available(MBB->getParent()->getRegInfo(), PhysReg)) in isRegUsedAfter()
485 if (!LiveRegs.available(MBB->getParent()->getRegInfo(), PhysReg)) in isRegUsedAfter()
492 MCRegister PhysReg) const { in isRegDefinedAfter()
496 getReachingDef(MI, PhysReg) != getReachingDef(&*Last, PhysReg)) in isRegDefinedAfter()
499 if (auto *Def = getLocalLiveOutMIDef(MBB, PhysReg)) in isRegDefinedAfter()
500 return Def == getReachingLocalMIDef(MI, PhysReg); in isRegDefinedAfter()
506 MCRegister PhysReg) const { in isReachingDefLiveOut()
510 if (LiveRegs.available(MBB->getParent()->getRegInfo(), PhysReg)) in isReachingDefLiveOut()
514 int Def = getReachingDef(MI, PhysReg); in isReachingDefLiveOut()
515 if (Last != MBB->end() && getReachingDef(&*Last, PhysReg) != Def) in isReachingDefLiveOut()
520 if (isValidRegDefOf(MO, PhysReg, TRI)) in isReachingDefLiveOut()
528 MCRegister PhysReg) const { in getLocalLiveOutMIDef()
531 if (LiveRegs.available(MBB->getParent()->getRegInfo(), PhysReg)) in getLocalLiveOutMIDef()
538 int Def = getReachingDef(&*Last, PhysReg); in getLocalLiveOutMIDef()
540 if (isValidRegDefOf(MO, PhysReg, TRI)) in getLocalLiveOutMIDef()
652 auto IsDead = [this, &Dead](MachineInstr *Def, MCRegister PhysReg) { in collectKilledOperands() argument
668 getGlobalUses(Def, PhysReg, Uses); in collectKilledOperands()
682 MCRegister PhysReg) const { in isSafeToDefRegAt()
684 return isSafeToDefRegAt(MI, PhysReg, Ignore); in isSafeToDefRegAt()
687 bool ReachingDefAnalysis::isSafeToDefRegAt(MachineInstr *MI, MCRegister PhysReg, in isSafeToDefRegAt() argument
690 if (isRegUsedAfter(MI, PhysReg)) { in isSafeToDefRegAt()
691 if (auto *Def = getReachingLocalMIDef(MI, PhysReg)) { in isSafeToDefRegAt()
693 getGlobalUses(Def, PhysReg, Uses); in isSafeToDefRegAt()
702 if (isRegDefinedAfter(MI, PhysReg)) { in isSafeToDefRegAt()
708 if (isValidRegDefOf(MO, PhysReg, TRI)) in isSafeToDefRegAt()