Lines Matching defs:Src

174       auto Src = TRI.regunits(CopyOperands->Source->getReg().asMCReg());
176 RegUnitsToInvalidate.insert(Src.begin(), Src.end());
207 MCRegister Src = CopyOperands->Source->getReg().asMCReg();
211 // Since we clobber the destination of a copy, the semantic of Src's
213 // to remove the record from the copy maps that indicates Src defined
223 for (MCRegUnit SrcUnit : TRI.regunits(Src)) {
234 // entries solely record the Def is defined by Src. If an
272 Register Src = CopyOperands->Source->getReg();
275 if (Src != Reg)
303 MCRegister Src = CopyOperands->Source->getReg().asMCReg();
312 for (MCRegUnit Unit : TRI.regunits(Src)) {
488 bool eraseIfRedundant(MachineInstr &Copy, MCRegister Src, MCRegister Def);
555 /// Return true if \p PreviousCopy did copy register \p Src to register \p Def.
557 /// all even though Src and Def are subregisters of the registers used in
561 static bool isNopCopy(const MachineInstr &PreviousCopy, MCRegister Src,
569 if (Src == PreviousSrc && Def == PreviousDef)
571 if (!TRI->isSubRegister(PreviousSrc, Src))
573 unsigned SubIdx = TRI->getSubRegIndex(PreviousSrc, Src);
578 /// register \p Src to the register \p Def; This may happen indirectly by
581 MCRegister Src, MCRegister Def) {
584 if (MRI->isReserved(Src) || MRI->isReserved(Def))
597 if (!isNopCopy(*PrevCopy, Src, Def, TRI, TII, UseCopyInstr))
602 // Copy was redundantly redefining either Src or Def. Remove earlier kill
609 assert(CopyDef == Src || CopyDef == Def);
884 MCRegister Src = RegSrc.asMCReg();
901 if (eraseIfRedundant(MI, Def, Src) || eraseIfRedundant(MI, Src, Def))
906 // Src may have been changed by forwardUses()
908 Src = CopyOperands->Source->getReg().asMCReg();
910 // If Src is defined by a previous copy, the previous copy cannot be
912 ReadRegister(Src, MI, RegularUse);
1078 Register Src = CopyOperands.Source->getReg();
1080 if (!Def || !Src)
1083 if (MRI.isReserved(Def) || MRI.isReserved(Src))
1119 Register Src = CopyOperands->Source->getReg();
1121 if (MODef.getReg() != Src)
1143 for (auto *SrcUser : Tracker.getSrcUsers(Src, *TRI)) {
1145 if (!MO.isReg() || !MO.isUse() || MO.getReg() != Src)
1230 Register Src = CopyOperands->Source->getReg();
1235 MRI->updateDbgUsersToReg(Src.asMCReg(), Def.asMCReg(), MaybeDeadDbgUsers);
1286 // the COPY defines the Src of the reload COPY backward. If such pair is found,
1334 auto CheckCopyConstraint = [this](Register Def, Register Src) {
1336 if (RC->contains(Def) && RC->contains(Src))
1385 Register Src = CopyOperands->Source->getReg();
1387 return Src && Def && !TRI->regsOverlap(Src, Def) &&
1460 Register Src = CopyOperands->Source->getReg();
1466 Tracker.findLastSeenDefInCopy(MI, Src.asMCReg(), *TRI, *TII, UseCopyInstr);
1532 // The COPY defines Src is no longer considered as a candidate of a
1546 Tracker.clobberRegister(Src.asMCReg(), *TRI, *TII, UseCopyInstr);
1547 LLVM_DEBUG(dbgs() << "MCP: Removed tracking of " << printReg(Src, TRI)