Lines Matching defs:TRI
122 const TargetRegisterInfo &TRI) {
125 for (MCRegUnit Unit : TRI.regunits(Reg)) {
134 void invalidateRegister(MCRegister Reg, const TargetRegisterInfo &TRI,
146 auto Dest = TRI.regunits(CopyOperands->Destination->getReg().asMCReg());
147 auto Src = TRI.regunits(CopyOperands->Source->getReg().asMCReg());
152 for (MCRegUnit Unit : TRI.regunits(Reg)) {
166 void clobberRegister(MCRegister Reg, const TargetRegisterInfo &TRI,
168 for (MCRegUnit Unit : TRI.regunits(Reg)) {
173 markRegsUnavailable(I->second.DefRegs, TRI);
183 markRegsUnavailable(Def, TRI);
197 for (MCRegUnit SrcUnit : TRI.regunits(Src)) {
227 void trackCopy(MachineInstr *MI, const TargetRegisterInfo &TRI,
237 for (MCRegUnit Unit : TRI.regunits(Def))
242 for (MCRegUnit Unit : TRI.regunits(Src)) {
256 const TargetRegisterInfo &TRI,
267 const TargetRegisterInfo &TRI) {
273 MCRegUnit RU = *TRI.regunits(CI->second.DefRegs[0]).begin();
274 return findCopyForUnit(RU, TRI, true);
278 const TargetRegisterInfo &TRI,
281 MCRegUnit RU = *TRI.regunits(Reg).begin();
282 MachineInstr *AvailCopy = findCopyDefViaUnit(RU, TRI);
291 if (!TRI.isSubRegisterEq(AvailSrc, Reg))
306 const TargetRegisterInfo &TRI,
310 MCRegUnit RU = *TRI.regunits(Reg).begin();
312 findCopyForUnit(RU, TRI, /*MustBeAvailable=*/true);
321 if (!TRI.isSubRegisterEq(AvailDef, Reg))
339 const TargetRegisterInfo &TRI,
342 MCRegUnit RU = *TRI.regunits(Reg).begin();
351 if (!TRI.isSubRegisterEq(Def, Reg))
361 << printReg(Def, &TRI) << "\n");
370 const TargetRegisterInfo &TRI) {
371 MCRegUnit RU = *TRI.regunits(Reg).begin();
384 const TargetRegisterInfo *TRI = nullptr;
456 for (MCRegUnit Unit : TRI->regunits(Reg)) {
457 if (MachineInstr *Copy = Tracker.findCopyForUnit(Unit, *TRI)) {
476 for (MCRegUnit Unit : TRI->regunits(LI.PhysReg)) {
477 if (MachineInstr *Copy = Tracker.findCopyForUnit(Unit, *TRI))
491 MCRegister Def, const TargetRegisterInfo *TRI,
500 if (!TRI->isSubRegister(PreviousSrc, Src))
502 unsigned SubIdx = TRI->getSubRegIndex(PreviousSrc, Src);
503 return SubIdx == TRI->getSubRegIndex(PreviousDef, Def);
518 Tracker.findAvailCopy(Copy, Def, *TRI, *TII, UseCopyInstr);
526 if (!isNopCopy(*PrevCopy, Src, Def, TRI, TII, UseCopyInstr))
541 MI.clearRegisterKills(CopyDef, TRI);
562 UseI.getRegClassConstraint(UseIdx, TII, TRI))
583 UseI.getRegClassConstraint(UseIdx, TII, TRI))
613 for (const TargetRegisterClass *RC : TRI->regclasses()) {
616 if (TRI->getCrossCopyRegClass(RC) != RC) {
629 for (const TargetRegisterClass *RC : TRI->regclasses()) {
631 TRI->getCrossCopyRegClass(RC) != RC)
649 MIUse.isUse() && TRI->regsOverlap(Use.getReg(), MIUse.getReg()))
663 TRI->regsOverlap(Def, MIDef.getReg()))
701 *TRI, *TII, UseCopyInstr);
715 unsigned SubRegIdx = TRI->getSubRegIndex(CopyDstReg, MOUse.getReg());
718 ForwardedReg = TRI->getSubReg(CopySrcReg, SubRegIdx);
721 << TRI->getSubRegIndexName(SubRegIdx) << '\n');
740 MI.modifiesRegister(CopySrcReg, TRI) &&
741 !MI.definesRegister(CopySrcReg, /*TRI=*/nullptr)) {
752 LLVM_DEBUG(dbgs() << "MCP: Replacing " << printReg(MOUse.getReg(), TRI)
753 << "\n with " << printReg(ForwardedReg, TRI)
767 KMI.clearRegisterKills(CopySrcReg, TRI);
787 if (!TRI->regsOverlap(RegDef, RegSrc)) {
843 Tracker.clobberRegister(Def, *TRI, *TII, UseCopyInstr);
850 Tracker.clobberRegister(Reg, *TRI, *TII, UseCopyInstr);
853 Tracker.trackCopy(&MI, *TRI, *TII, UseCopyInstr);
868 Tracker.clobberRegister(Reg, *TRI, *TII, UseCopyInstr);
919 Tracker.clobberRegister(Reg, *TRI, *TII, UseCopyInstr);
932 Tracker.clobberRegister(Reg, *TRI, *TII, UseCopyInstr);
1012 MI, MODef.getReg().asMCReg(), *TRI, *TII, UseCopyInstr);
1033 LLVM_DEBUG(dbgs() << "MCP: Replacing " << printReg(MODef.getReg(), TRI)
1034 << "\n with " << printReg(Def, TRI) << "\n in "
1060 if (!TRI->regsOverlap(DefReg, SrcReg)) {
1064 Tracker.invalidateRegister(SrcReg.asMCReg(), *TRI, *TII,
1066 Tracker.invalidateRegister(DefReg.asMCReg(), *TRI, *TII,
1068 Tracker.trackCopy(&MI, *TRI, *TII, UseCopyInstr);
1080 Tracker.invalidateRegister(Reg, *TRI, *TII, UseCopyInstr);
1092 Tracker.invalidateRegister(MO.getReg().asMCReg(), *TRI, *TII,
1100 for (MCRegUnit Unit : TRI->regunits(MO.getReg().asMCReg())) {
1101 if (auto *Copy = Tracker.findCopyDefViaUnit(Unit, *TRI)) {
1106 Tracker.invalidateRegister(MO.getReg().asMCReg(), *TRI, *TII,
1221 for (const TargetRegisterClass *RC : TRI->regclasses()) {
1273 return Src && Def && !TRI->regsOverlap(Src, Def) &&
1319 Tracker.findLastSeenUseInCopy(Reg.asMCReg(), *TRI);
1333 if (Tracker.findLastSeenDefInCopy(MI, Reg.asMCReg(), *TRI, *TII,
1339 Tracker.clobberRegister(Reg, *TRI, *TII, UseCopyInstr);
1340 LLVM_DEBUG(dbgs() << "MCP: Removed tracking of " << printReg(Reg, TRI)
1352 Tracker.findLastSeenDefInCopy(MI, Src.asMCReg(), *TRI, *TII, UseCopyInstr);
1391 Tracker.findLastSeenUseInCopy(Def.asMCReg(), *TRI);
1432 Tracker.clobberRegister(Src.asMCReg(), *TRI, *TII, UseCopyInstr);
1433 LLVM_DEBUG(dbgs() << "MCP: Removed tracking of " << printReg(Src, TRI)
1436 Tracker.trackCopy(&MI, *TRI, *TII, UseCopyInstr);
1472 TRI = MF.getSubtarget().getRegisterInfo();