Lines Matching refs:Reg

120   void findNonPHIUsesInBlock(Register Reg, MachineBasicBlock *MBB,
123 void updateLiveRangeInThenRegion(Register Reg, MachineBasicBlock *If,
127 Register Reg, Register NewReg, MachineBasicBlock *Flow,
132 optimizeLiveRange(Register Reg, MachineBasicBlock *If,
137 Register Reg, MachineBasicBlock *LoopHeader,
212 Register Reg, MachineBasicBlock *MBB, in findNonPHIUsesInBlock() argument
214 for (auto &UseMI : MRI->use_nodbg_instructions(Reg)) { in findNonPHIUsesInBlock()
279 Register Reg = MO.getReg(); in collectCandidateRegisters() local
280 if (Reg.isPhysical() || !TRI->isVectorRegister(*MRI, Reg)) in collectCandidateRegisters()
283 LiveVariables::VarInfo &VI = LV->getVarInfo(Reg); in collectCandidateRegisters()
285 if (VI.isLiveIn(*Endif, Reg, *MRI)) { in collectCandidateRegisters()
286 LLVM_DEBUG(dbgs() << "Excluding " << printReg(Reg, TRI) in collectCandidateRegisters()
293 const MachineBasicBlock *DefMBB = MRI->getVRegDef(Reg)->getParent(); in collectCandidateRegisters()
296 KillsInElse.insert(Reg); in collectCandidateRegisters()
300 auto IsLiveThroughThen = [&](Register Reg) { in collectCandidateRegisters() argument
301 for (auto I = MRI->use_nodbg_begin(Reg), E = MRI->use_nodbg_end(); I != E; in collectCandidateRegisters()
322 for (auto Reg : KillsInElse) { in collectCandidateRegisters() local
323 if (!IsLiveThroughThen(Reg)) in collectCandidateRegisters()
324 CandidateRegs.push_back(Reg); in collectCandidateRegisters()
401 Register Reg, MachineBasicBlock *If, MachineBasicBlock *Flow) const { in updateLiveRangeInThenRegion() argument
417 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in updateLiveRangeInThenRegion()
428 for (auto I = MRI->use_nodbg_begin(Reg), E = MRI->use_nodbg_end(); I != E; in updateLiveRangeInThenRegion()
440 findNonPHIUsesInBlock(Reg, MBB, Uses); in updateLiveRangeInThenRegion()
445 LV->HandleVirtRegUse(Reg, MBB, *(*Uses.begin())); in updateLiveRangeInThenRegion()
452 LV->HandleVirtRegUse(Reg, MBB, MI); in updateLiveRangeInThenRegion()
458 LV->MarkVirtRegAliveInBlock(OldVarInfo, MRI->getVRegDef(Reg)->getParent(), in updateLiveRangeInThenRegion()
465 MI->addRegisterKilled(Reg, TRI); in updateLiveRangeInThenRegion()
470 Register Reg, Register NewReg, MachineBasicBlock *Flow, in updateLiveRangeInElseRegion() argument
474 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in updateLiveRangeInElseRegion()
500 Register Reg, MachineBasicBlock *If, MachineBasicBlock *Flow, in optimizeLiveRange() argument
505 LLVM_DEBUG(dbgs() << "Optimizing " << printReg(Reg, TRI) << '\n'); in optimizeLiveRange()
506 const auto *RC = MRI->getRegClass(Reg); in optimizeLiveRange()
513 PHI.addReg(Reg).addMBB(Pred); in optimizeLiveRange()
520 for (auto &O : make_early_inc_range(MRI->use_operands(Reg))) { in optimizeLiveRange()
545 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in optimizeLiveRange()
548 updateLiveRangeInElseRegion(Reg, NewReg, Flow, Endif, ElseBlocks); in optimizeLiveRange()
549 updateLiveRangeInThenRegion(Reg, If, Flow); in optimizeLiveRange()
553 Register Reg, MachineBasicBlock *LoopHeader, in optimizeWaterfallLiveRange() argument
557 LLVM_DEBUG(dbgs() << "Optimizing " << printReg(Reg, TRI) << '\n'); in optimizeWaterfallLiveRange()
558 const auto *RC = MRI->getRegClass(Reg); in optimizeWaterfallLiveRange()
564 for (auto &O : make_early_inc_range(MRI->use_operands(Reg))) { in optimizeWaterfallLiveRange()
579 PHI.addReg(Reg).addMBB(Pred); in optimizeWaterfallLiveRange()
583 LiveVariables::VarInfo &OldVarInfo = LV->getVarInfo(Reg); in optimizeWaterfallLiveRange()
679 for (auto Reg : CandidateRegs) in runOnMachineFunction() local
680 optimizeLiveRange(Reg, &MBB, IfTarget, Endif, ElseBlocks); in runOnMachineFunction()
696 for (auto Reg : CandidateRegs) in runOnMachineFunction() local
697 optimizeWaterfallLiveRange(Reg, LoopHeader, Blocks, Instructions); in runOnMachineFunction()