Lines Matching refs:Copy
197 auto &Copy = I.first->second; in trackCopy() local
198 if (!is_contained(Copy.DefRegs, Def)) in trackCopy()
199 Copy.DefRegs.push_back(Def); in trackCopy()
327 bool eraseIfRedundant(MachineInstr &Copy, MCRegister Src, MCRegister Def);
330 bool isForwardableRegClassCopy(const MachineInstr &Copy,
332 bool isBackwardPropagatableRegClassCopy(const MachineInstr &Copy,
365 if (MachineInstr *Copy = Tracker.findCopyForUnit(*RUI, *TRI)) { in ReadRegister() local
367 LLVM_DEBUG(dbgs() << "MCP: Copy is used - not dead: "; Copy->dump()); in ReadRegister()
368 MaybeDeadCopies.remove(Copy); in ReadRegister()
370 CopyDbgUsers[Copy].insert(&Reader); in ReadRegister()
401 bool MachineCopyPropagation::eraseIfRedundant(MachineInstr &Copy, in eraseIfRedundant() argument
410 Tracker.findAvailCopy(Copy, Def, *TRI, *TII, UseCopyInstr); in eraseIfRedundant()
421 LLVM_DEBUG(dbgs() << "MCP: copy is a NOP, removing: "; Copy.dump()); in eraseIfRedundant()
425 Optional<DestSourcePair> CopyOperands = isCopyInstr(Copy, *TII, UseCopyInstr); in eraseIfRedundant()
431 make_range(PrevCopy->getIterator(), Copy.getIterator())) in eraseIfRedundant()
434 Copy.eraseFromParent(); in eraseIfRedundant()
441 const MachineInstr &Copy, const MachineInstr &UseI, unsigned UseIdx) { in isBackwardPropagatableRegClassCopy() argument
443 Optional<DestSourcePair> CopyOperands = isCopyInstr(Copy, *TII, UseCopyInstr); in isBackwardPropagatableRegClassCopy()
458 bool MachineCopyPropagation::isForwardableRegClassCopy(const MachineInstr &Copy, in isForwardableRegClassCopy() argument
462 Optional<DestSourcePair> CopyOperands = isCopyInstr(Copy, *TII, UseCopyInstr); in isForwardableRegClassCopy()
585 MachineInstr *Copy = Tracker.findAvailCopy(MI, MOUse.getReg().asMCReg(), in forwardUses() local
587 if (!Copy) in forwardUses()
591 isCopyInstr(*Copy, *TII, UseCopyInstr); in forwardUses()
608 if (!isForwardableRegClassCopy(*Copy, MI, OpIdx)) in forwardUses()
632 << "\n in " << MI << " from " << *Copy); in forwardUses()
643 make_range(Copy->getIterator(), std::next(MI.getIterator()))) in forwardUses()
885 MachineInstr *Copy = Tracker.findAvailBackwardCopy( in propagateDefs() local
887 if (!Copy) in propagateDefs()
891 isCopyInstr(*Copy, *TII, UseCopyInstr); in propagateDefs()
898 if (!isBackwardPropagatableRegClassCopy(*Copy, MI, OpIdx)) in propagateDefs()
909 << MI << " from " << *Copy); in propagateDefs()
915 MaybeDeadCopies.insert(Copy); in propagateDefs()
976 if (auto *Copy = Tracker.findCopyDefViaUnit(*RUI, *TRI)) { in BackwardCopyPropagateBlock() local
977 CopyDbgUsers[Copy].insert(&MI); in BackwardCopyPropagateBlock()
988 for (auto *Copy : MaybeDeadCopies) { in BackwardCopyPropagateBlock() local
991 isCopyInstr(*Copy, *TII, UseCopyInstr); in BackwardCopyPropagateBlock()
994 SmallVector<MachineInstr *> MaybeDeadDbgUsers(CopyDbgUsers[Copy].begin(), in BackwardCopyPropagateBlock()
995 CopyDbgUsers[Copy].end()); in BackwardCopyPropagateBlock()
998 Copy->eraseFromParent(); in BackwardCopyPropagateBlock()