Lines Matching refs:Reg
92 static unsigned getRegisterSize(const TargetRegisterInfo &TRI, Register Reg) { in getRegisterSize() argument
93 const TargetRegisterClass *RC = TRI.getMinimalPhysRegClass(Reg); in getRegisterSize()
110 static Register performCopyPropagation(Register Reg, in performCopyPropagation() argument
115 int Idx = RI->findRegisterUseOperandIdx(Reg, &TRI, false); in performCopyPropagation()
118 return Reg; in performCopyPropagation()
122 return Reg; in performCopyPropagation()
128 if (It->readsRegister(Reg, &TRI) && !Use) in performCopyPropagation()
130 if (It->modifiesRegister(Reg, &TRI)) { in performCopyPropagation()
137 return Reg; in performCopyPropagation()
140 if (!DestSrc || DestSrc->Destination->getReg() != Reg) in performCopyPropagation()
141 return Reg; in performCopyPropagation()
145 if (getRegisterSize(TRI, Reg) != getRegisterSize(TRI, SrcReg)) in performCopyPropagation()
146 return Reg; in performCopyPropagation()
149 << printReg(Reg, &TRI) << " -> " << printReg(SrcReg, &TRI) in performCopyPropagation()
183 void recordReload(Register Reg, int FI, const MachineBasicBlock *MBB) { in recordReload() argument
184 RegSlotPair RSP(Reg, FI); in recordReload()
191 bool hasReload(Register Reg, int FI, const MachineBasicBlock *MBB) { in hasReload() argument
192 RegSlotPair RSP(Reg, FI); in hasReload()
251 int getFrameIndex(Register Reg, MachineBasicBlock *EHPad) { in getFrameIndex() argument
257 Vec, [Reg](RegSlotPair &RSP) { return Reg == RSP.first; }); in getFrameIndex()
261 << printReg(Reg, &TRI) << " at " in getFrameIndex()
268 unsigned Size = getRegisterSize(TRI, Reg); in getFrameIndex()
290 GlobalIndices[EHPad].push_back(std::make_pair(Reg, FI)); in getFrameIndex()
292 << printReg(Reg, &TRI) << " at landing pad " in getFrameIndex()
367 bool isCalleeSaved(Register Reg) { return (Mask[Reg / 32] >> Reg % 32) & 1; } in isCalleeSaved() argument
388 Register Reg = MO.getReg(); in findRegistersToSpill() local
389 assert(Reg.isPhysical() && "Only physical regs are expected"); in findRegistersToSpill()
391 if (isCalleeSaved(Reg) && (AllowGCPtrInCSR || !GCRegs.contains(Reg))) in findRegistersToSpill()
394 LLVM_DEBUG(dbgs() << "Will spill " << printReg(Reg, &TRI) << " at index " in findRegistersToSpill()
397 if (VisitedRegs.insert(Reg).second) in findRegistersToSpill()
398 RegsToSpill.push_back(Reg); in findRegistersToSpill()
408 for (Register Reg : RegsToSpill) { in spillRegisters() local
409 int FI = CacheFI.getFrameIndex(Reg, EHPad); in spillRegisters()
412 RegToSlotIdx[Reg] = FI; in spillRegisters()
414 LLVM_DEBUG(dbgs() << "Spilling " << printReg(Reg, &TRI) << " to FI " << FI in spillRegisters()
420 Reg = performCopyPropagation(Reg, InsertBefore, IsKill, TII, TRI); in spillRegisters()
421 const TargetRegisterClass *RC = TRI.getMinimalPhysRegClass(Reg); in spillRegisters()
424 TII.storeRegToStackSlot(*MI.getParent(), InsertBefore, Reg, IsKill, FI, in spillRegisters()
429 void insertReloadBefore(unsigned Reg, MachineBasicBlock::iterator It, in insertReloadBefore() argument
431 const TargetRegisterClass *RC = TRI.getMinimalPhysRegClass(Reg); in insertReloadBefore()
432 int FI = RegToSlotIdx[Reg]; in insertReloadBefore()
434 TII.loadRegFromStackSlot(*MBB, It, Reg, FI, RC, &TRI, Register()); in insertReloadBefore()
442 TII.loadRegFromStackSlot(*MBB, It, Reg, FI, RC, &TRI, Register()); in insertReloadBefore()
446 assert(TII.isLoadFromStackSlot(*Reload, Dummy) == Reg); in insertReloadBefore()
457 for (auto Reg : RegsToReload) { in insertReloads() local
458 insertReloadBefore(Reg, InsertPoint, MBB); in insertReloads()
459 LLVM_DEBUG(dbgs() << "Reloading " << printReg(Reg, &TRI) << " from FI " in insertReloads()
460 << RegToSlotIdx[Reg] << " after statepoint\n"); in insertReloads()
462 if (EHPad && !RC.hasReload(Reg, RegToSlotIdx[Reg], EHPad)) { in insertReloads()
463 RC.recordReload(Reg, RegToSlotIdx[Reg], EHPad); in insertReloads()
465 EHPad->SkipPHIsLabelsAndDebug(EHPad->begin(), Reg); in insertReloads()
466 insertReloadBefore(Reg, EHPadInsertPoint, EHPad); in insertReloads()
488 Register Reg = DefMO.getReg(); in rewriteStatepoint() local
495 MIB.addReg(Reg, RegState::Define); in rewriteStatepoint()
500 assert(is_contained(RegsToSpill, Reg)); in rewriteStatepoint()
501 RegsToReload.push_back(Reg); in rewriteStatepoint()
503 if (isCalleeSaved(Reg)) { in rewriteStatepoint()
505 MIB.addReg(Reg, RegState::Define); in rewriteStatepoint()
508 RegsToReload.push_back(Reg); in rewriteStatepoint()