Lines Matching refs:Reg

70 unsigned AggressiveAntiDepState::GetGroup(unsigned Reg) {  in GetGroup()  argument
71 unsigned Node = GroupNodeIndices[Reg]; in GetGroup()
83 for (unsigned Reg = 0; Reg != NumTargetRegs; ++Reg) { in GetGroupRegs() local
84 if ((GetGroup(Reg) == Group) && (RegRefs->count(Reg) > 0)) in GetGroupRegs()
85 Regs.push_back(Reg); in GetGroupRegs()
104 unsigned AggressiveAntiDepState::LeaveGroup(unsigned Reg) { in LeaveGroup() argument
110 GroupNodeIndices[Reg] = idx; in LeaveGroup()
114 bool AggressiveAntiDepState::IsLive(unsigned Reg) { in IsLive() argument
117 return((KillIndices[Reg] != ~0u) && (DefIndices[Reg] == ~0u)); in IsLive()
159 unsigned Reg = *AI; in StartBlock() local
160 State->UnionGroups(Reg, 0); in StartBlock()
161 KillIndices[Reg] = BB->size(); in StartBlock()
162 DefIndices[Reg] = ~0u; in StartBlock()
173 unsigned Reg = *I; in StartBlock() local
174 if (!IsReturnBlock && !Pristine.test(Reg)) in StartBlock()
176 for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI) { in StartBlock()
204 for (unsigned Reg = 0; Reg != TRI->getNumRegs(); ++Reg) { in Observe() local
211 if (State->IsLive(Reg)) { in Observe()
212 LLVM_DEBUG(if (State->GetGroup(Reg) != 0) dbgs() in Observe()
213 << " " << printReg(Reg, TRI) << "=g" << State->GetGroup(Reg) in Observe()
215 State->UnionGroups(Reg, 0); in Observe()
216 } else if ((DefIndices[Reg] < InsertPosIndex) in Observe()
217 && (DefIndices[Reg] >= Count)) { in Observe()
218 DefIndices[Reg] = Count; in Observe()
229 Register Reg = MO.getReg(); in IsImplicitDefUse() local
230 if (Reg == 0) in IsImplicitDefUse()
235 Op = MI.findRegisterUseOperand(Reg, true); in IsImplicitDefUse()
237 Op = MI.findRegisterDefOperand(Reg); in IsImplicitDefUse()
249 const Register Reg = MO.getReg(); in GetPassthruRegs() local
250 for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true); in GetPassthruRegs()
293 void AggressiveAntiDepBreaker::HandleLastUse(unsigned Reg, unsigned KillIdx, in HandleLastUse() argument
306 for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI) in HandleLastUse()
307 if (TRI->isSuperRegister(Reg, *AI) && State->IsLive(*AI)) { in HandleLastUse()
312 if (!State->IsLive(Reg)) { in HandleLastUse()
313 KillIndices[Reg] = KillIdx; in HandleLastUse()
314 DefIndices[Reg] = ~0u; in HandleLastUse()
315 RegRefs.erase(Reg); in HandleLastUse()
316 State->LeaveGroup(Reg); in HandleLastUse()
318 dbgs() << header << printReg(Reg, TRI); in HandleLastUse()
321 LLVM_DEBUG(dbgs() << "->g" << State->GetGroup(Reg) << tag); in HandleLastUse()
326 for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid(); ++SubRegs) { in HandleLastUse()
334 dbgs() << header << printReg(Reg, TRI); in HandleLastUse()
360 Register Reg = MO.getReg(); in PrescanInstruction() local
361 if (Reg == 0) continue; in PrescanInstruction()
363 HandleLastUse(Reg, Count + 1, "", "\tDead Def: ", "\n"); in PrescanInstruction()
370 Register Reg = MO.getReg(); in PrescanInstruction() local
371 if (Reg == 0) continue; in PrescanInstruction()
373 LLVM_DEBUG(dbgs() << " " << printReg(Reg, TRI) << "=g" in PrescanInstruction()
374 << State->GetGroup(Reg)); in PrescanInstruction()
383 LLVM_DEBUG(if (State->GetGroup(Reg) != 0) dbgs() << "->g0(alloc-req)"); in PrescanInstruction()
384 State->UnionGroups(Reg, 0); in PrescanInstruction()
389 for (MCRegAliasIterator AI(Reg, TRI, false); AI.isValid(); ++AI) { in PrescanInstruction()
392 State->UnionGroups(Reg, AliasReg); in PrescanInstruction()
393 LLVM_DEBUG(dbgs() << "->g" << State->GetGroup(Reg) << "(via " in PrescanInstruction()
403 RegRefs.insert(std::make_pair(Reg, RR)); in PrescanInstruction()
413 Register Reg = MO.getReg(); in PrescanInstruction() local
414 if (Reg == 0) continue; in PrescanInstruction()
416 if (MI.isKill() || (PassthruRegs.count(Reg) != 0)) in PrescanInstruction()
420 for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI) { in PrescanInstruction()
427 if (TRI->isSuperRegister(Reg, *AI) && State->IsLive(*AI)) in PrescanInstruction()
466 Register Reg = MO.getReg(); in ScanInstruction() local
467 if (Reg == 0) continue; in ScanInstruction()
469 LLVM_DEBUG(dbgs() << " " << printReg(Reg, TRI) << "=g" in ScanInstruction()
470 << State->GetGroup(Reg)); in ScanInstruction()
475 HandleLastUse(Reg, Count, "(last-use)"); in ScanInstruction()
478 LLVM_DEBUG(if (State->GetGroup(Reg) != 0) dbgs() << "->g0(alloc-req)"); in ScanInstruction()
479 State->UnionGroups(Reg, 0); in ScanInstruction()
487 RegRefs.insert(std::make_pair(Reg, RR)); in ScanInstruction()
501 Register Reg = MO.getReg(); in ScanInstruction() local
502 if (Reg == 0) continue; in ScanInstruction()
505 LLVM_DEBUG(dbgs() << "=" << printReg(Reg, TRI)); in ScanInstruction()
506 State->UnionGroups(FirstReg, Reg); in ScanInstruction()
508 LLVM_DEBUG(dbgs() << " " << printReg(Reg, TRI)); in ScanInstruction()
509 FirstReg = Reg; in ScanInstruction()
517 BitVector AggressiveAntiDepBreaker::GetRenameRegisters(unsigned Reg) { in GetRenameRegisters() argument
524 for (const auto &Q : make_range(State->GetRegRefs().equal_range(Reg))) { in GetRenameRegisters()
568 unsigned Reg = Regs[i]; in FindSuitableFreeRegisters() local
569 if ((SuperReg == 0) || TRI->isSuperRegister(SuperReg, Reg)) in FindSuitableFreeRegisters()
570 SuperReg = Reg; in FindSuitableFreeRegisters()
573 if (RegRefs.count(Reg) > 0) { in FindSuitableFreeRegisters()
574 LLVM_DEBUG(dbgs() << "\t\t" << printReg(Reg, TRI) << ":"); in FindSuitableFreeRegisters()
576 BitVector &BV = RenameRegisterMap[Reg]; in FindSuitableFreeRegisters()
578 BV = GetRenameRegisters(Reg); in FindSuitableFreeRegisters()
591 unsigned Reg = Regs[i]; in FindSuitableFreeRegisters() local
592 if (Reg == SuperReg) continue; in FindSuitableFreeRegisters()
593 bool IsSub = TRI->isSubRegister(SuperReg, Reg); in FindSuitableFreeRegisters()
653 unsigned Reg = Regs[i]; in FindSuitableFreeRegisters() local
655 if (Reg == SuperReg) { in FindSuitableFreeRegisters()
658 unsigned NewSubRegIdx = TRI->getSubRegIndex(SuperReg, Reg); in FindSuitableFreeRegisters()
666 if (!RenameRegisterMap[Reg].test(NewReg)) { in FindSuitableFreeRegisters()
675 if (State->IsLive(NewReg) || (KillIndices[Reg] > DefIndices[NewReg])) { in FindSuitableFreeRegisters()
683 (KillIndices[Reg] > DefIndices[AliasReg])) { in FindSuitableFreeRegisters()
696 for (const auto &Q : make_range(RegRefs.equal_range(Reg))) { in FindSuitableFreeRegisters()
711 for (const auto &Q : make_range(RegRefs.equal_range(Reg))) { in FindSuitableFreeRegisters()
723 RenameMap.insert(std::pair<unsigned, unsigned>(Reg, NewReg)); in FindSuitableFreeRegisters()
792 for (unsigned Reg = 0; Reg < TRI->getNumRegs(); ++Reg) { in BreakAntiDependencies() local
793 if (!State->IsLive(Reg)) in BreakAntiDependencies()
794 LLVM_DEBUG(dbgs() << " " << printReg(Reg, TRI)); in BreakAntiDependencies()