Lines Matching defs:Reg
58 MachineRegisterInfo::setRegClass(Register Reg, const TargetRegisterClass *RC) {
60 VRegInfo[Reg].first = RC;
63 void MachineRegisterInfo::setRegBank(Register Reg,
65 VRegInfo[Reg].first = &RegBank;
69 constrainRegClass(MachineRegisterInfo &MRI, Register Reg,
80 MRI.setRegClass(Reg, NewRC);
85 Register Reg, const TargetRegisterClass *RC, unsigned MinNumRegs) {
86 if (Reg.isPhysical())
88 return ::constrainRegClass(*this, Reg, getRegClass(Reg), RC, MinNumRegs);
92 MachineRegisterInfo::constrainRegAttrs(Register Reg,
95 const LLT RegTy = getType(Reg);
102 const auto &RegCB = getRegClassOrRegBank(Reg);
104 setRegClassOrRegBank(Reg, ConstrainingRegCB);
110 *this, Reg, cast<const TargetRegisterClass *>(RegCB),
117 setType(Reg, ConstrainingRegTy);
122 MachineRegisterInfo::recomputeRegClass(Register Reg) {
124 const TargetRegisterClass *OldRC = getRegClass(Reg);
133 for (MachineOperand &MO : reg_nodbg_operands(Reg)) {
141 setRegClass(Reg, NewRC);
146 Register Reg = Register::index2VirtReg(getNumVirtRegs());
147 VRegInfo.grow(Reg);
148 insertVRegByName(Name, Reg);
149 return Reg;
163 Register Reg = createIncompleteVirtualRegister(Name);
164 VRegInfo[Reg].first = RegClass;
165 noteNewVirtualRegister(Reg);
166 return Reg;
171 Register Reg = createIncompleteVirtualRegister(Name);
172 VRegInfo[Reg].first = RegAttr.RCOrRB;
173 setType(Reg, RegAttr.Ty);
174 noteNewVirtualRegister(Reg);
175 return Reg;
180 Register Reg = createIncompleteVirtualRegister(Name);
181 VRegInfo[Reg].first = VRegInfo[VReg].first;
182 setType(Reg, getType(VReg));
183 noteCloneVirtualRegister(Reg, VReg);
184 return Reg;
195 Register Reg = createIncompleteVirtualRegister(Name);
197 VRegInfo[Reg].first = static_cast<RegisterBank *>(nullptr);
198 setType(Reg, Ty);
199 noteNewVirtualRegister(Reg);
200 return Reg;
209 Register Reg = Register::index2VirtReg(i);
210 if (!VRegInfo[Reg].second)
212 verifyUseList(Reg);
214 << printReg(Reg, getTargetRegisterInfo()) << "...\n";
215 for (MachineInstr &MI : reg_instructions(Reg))
225 void MachineRegisterInfo::verifyUseList(Register Reg) const {
228 for (MachineOperand &M : reg_operands(Reg)) {
232 errs() << printReg(Reg, getTargetRegisterInfo())
241 errs() << printReg(Reg, getTargetRegisterInfo())
247 errs() << printReg(Reg, getTargetRegisterInfo())
252 if (MO->getReg() != Reg) {
253 errs() << printReg(Reg, getTargetRegisterInfo())
284 MO->Contents.Reg.Prev = MO;
285 MO->Contents.Reg.Next = nullptr;
292 MachineOperand *Last = Head->Contents.Reg.Prev;
295 Head->Contents.Reg.Prev = MO;
296 MO->Contents.Reg.Prev = Last;
302 MO->Contents.Reg.Next = Head;
306 MO->Contents.Reg.Next = nullptr;
307 Last->Contents.Reg.Next = MO;
319 MachineOperand *Next = MO->Contents.Reg.Next;
320 MachineOperand *Prev = MO->Contents.Reg.Prev;
326 Prev->Contents.Reg.Next = Next;
328 (Next ? Next : Head)->Contents.Reg.Prev = Prev;
330 MO->Contents.Reg.Prev = nullptr;
331 MO->Contents.Reg.Next = nullptr;
361 MachineOperand *Prev = Src->Contents.Reg.Prev;
362 MachineOperand *Next = Src->Contents.Reg.Next;
371 Prev->Contents.Reg.Next = Dst;
375 (Next ? Next : Head)->Contents.Reg.Prev = Dst;
406 MachineInstr *MachineRegisterInfo::getVRegDef(Register Reg) const {
408 def_instr_iterator I = def_instr_begin(Reg);
419 MachineInstr *MachineRegisterInfo::getUniqueVRegDef(Register Reg) const {
420 if (def_empty(Reg)) return nullptr;
421 def_instr_iterator I = def_instr_begin(Reg);
435 bool MachineRegisterInfo::hasAtMostUserInstrs(Register Reg,
437 return hasNItemsOrLess(use_instr_nodbg_begin(Reg), use_instr_nodbg_end(),
445 void MachineRegisterInfo::clearKillFlags(Register Reg) const {
446 for (MachineOperand &MO : use_operands(Reg))
450 bool MachineRegisterInfo::isLiveIn(Register Reg) const {
452 if ((Register)LI.first == Reg || LI.second == Reg)
507 LaneBitmask MachineRegisterInfo::getMaxLaneMaskForVReg(Register Reg) const {
509 assert(Reg.isVirtual());
510 const TargetRegisterClass &TRC = *getRegClass(Reg);
515 LLVM_DUMP_METHOD void MachineRegisterInfo::dumpUses(Register Reg) const {
516 for (MachineInstr &I : use_instructions(Reg))
546 void MachineRegisterInfo::markUsesInDebugValueAsUndef(Register Reg) const {
547 // Mark any DBG_VALUE* that uses Reg as undef (but don't delete it.)
549 for (MachineInstr &UseMI : llvm::make_early_inc_range(use_instructions(Reg))) {
550 if (UseMI.isDebugValue() && UseMI.hasDebugOperandForReg(Reg))
612 void MachineRegisterInfo::disableCalleeSavedRegister(MCRegister Reg) {
615 assert(Reg && (Reg < TRI->getNumRegs()) &&
631 for (MCRegAliasIterator AI(Reg, TRI, true); AI.isValid(); ++AI)