Lines Matching refs:Reg

118   void findNonPHIUsesInBlock(Register Reg, MachineBasicBlock *MBB,
121 void updateLiveRangeInThenRegion(Register Reg, MachineBasicBlock *If,
125 Register Reg, Register NewReg, MachineBasicBlock *Flow,
130 optimizeLiveRange(Register Reg, MachineBasicBlock *If,
134 void optimizeWaterfallLiveRange(Register Reg, MachineBasicBlock *If) const;
202 Register Reg, MachineBasicBlock *MBB, in findNonPHIUsesInBlock() argument
204 for (auto &UseMI : MRI->use_nodbg_instructions(Reg)) { in findNonPHIUsesInBlock()
269 Register Reg = MO.getReg(); in collectCandidateRegisters() local
270 if (Reg.isPhysical() || !TRI->isVectorRegister(*MRI, Reg)) in collectCandidateRegisters()
273 LiveVariables::VarInfo &VI = LV->getVarInfo(Reg); in collectCandidateRegisters()
275 if (VI.isLiveIn(*Endif, Reg, *MRI)) { in collectCandidateRegisters()
276 LLVM_DEBUG(dbgs() << "Excluding " << printReg(Reg, TRI) in collectCandidateRegisters()
283 const MachineBasicBlock *DefMBB = MRI->getVRegDef(Reg)->getParent(); in collectCandidateRegisters()
286 KillsInElse.insert(Reg); in collectCandidateRegisters()
290 auto IsLiveThroughThen = [&](Register Reg) { in collectCandidateRegisters() argument
291 for (auto I = MRI->use_nodbg_begin(Reg), E = MRI->use_nodbg_end(); I != E; in collectCandidateRegisters()
312 for (auto Reg : KillsInElse) { in collectCandidateRegisters() local
313 if (!IsLiveThroughThen(Reg)) in collectCandidateRegisters()
314 CandidateRegs.push_back(Reg); in collectCandidateRegisters()
368 Register Reg, MachineBasicBlock *If, MachineBasicBlock *Flow) const { in updateLiveRangeInThenRegion() argument
381 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in updateLiveRangeInThenRegion()
395 for (auto I = MRI->use_nodbg_begin(Reg), E = MRI->use_nodbg_end(); I != E; in updateLiveRangeInThenRegion()
412 findNonPHIUsesInBlock(Reg, MBB, Uses); in updateLiveRangeInThenRegion()
417 LV->HandleVirtRegUse(Reg, MBB, *(*Uses.begin())); in updateLiveRangeInThenRegion()
424 LV->HandleVirtRegUse(Reg, MBB, MI); in updateLiveRangeInThenRegion()
430 LV->MarkVirtRegAliveInBlock(OldVarInfo, MRI->getVRegDef(Reg)->getParent(), in updateLiveRangeInThenRegion()
437 MI->addRegisterKilled(Reg, TRI); in updateLiveRangeInThenRegion()
442 Register Reg, Register NewReg, MachineBasicBlock *Flow, in updateLiveRangeInElseRegion() argument
446 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in updateLiveRangeInElseRegion()
472 Register Reg, MachineBasicBlock *If, MachineBasicBlock *Flow, in optimizeLiveRange() argument
477 LLVM_DEBUG(dbgs() << "Optimizing " << printReg(Reg, TRI) << '\n'); in optimizeLiveRange()
478 const auto *RC = MRI->getRegClass(Reg); in optimizeLiveRange()
485 PHI.addReg(Reg).addMBB(Pred); in optimizeLiveRange()
492 for (auto &O : make_early_inc_range(MRI->use_operands(Reg))) { in optimizeLiveRange()
508 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in optimizeLiveRange()
511 updateLiveRangeInElseRegion(Reg, NewReg, Flow, Endif, ElseBlocks); in optimizeLiveRange()
512 updateLiveRangeInThenRegion(Reg, If, Flow); in optimizeLiveRange()
516 Register Reg, MachineBasicBlock *Loop) const { in optimizeWaterfallLiveRange() argument
518 LLVM_DEBUG(dbgs() << "Optimizing " << printReg(Reg, TRI) << '\n'); in optimizeWaterfallLiveRange()
519 const auto *RC = MRI->getRegClass(Reg); in optimizeWaterfallLiveRange()
525 for (auto &O : make_early_inc_range(MRI->use_operands(Reg))) { in optimizeWaterfallLiveRange()
539 PHI.addReg(Reg).addMBB(Pred); in optimizeWaterfallLiveRange()
543 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in optimizeWaterfallLiveRange()
620 for (auto Reg : CandidateRegs) in runOnMachineFunction() local
621 optimizeLiveRange(Reg, &MBB, IfTarget, Endif, ElseBlocks); in runOnMachineFunction()
630 for (auto Reg : CandidateRegs) in runOnMachineFunction() local
631 optimizeWaterfallLiveRange(Reg, &MBB); in runOnMachineFunction()