Lines Matching refs:Copy

168       auto &Copy = I.first->second;  in trackCopy()  local
169 if (!is_contained(Copy.DefRegs, Def)) in trackCopy()
170 Copy.DefRegs.push_back(Def); in trackCopy()
281 bool eraseIfRedundant(MachineInstr &Copy, MCRegister Src, MCRegister Def);
284 bool isForwardableRegClassCopy(const MachineInstr &Copy,
286 bool isBackwardPropagatableRegClassCopy(const MachineInstr &Copy,
319 if (MachineInstr *Copy = Tracker.findCopyForUnit(*RUI, *TRI)) { in ReadRegister() local
321 LLVM_DEBUG(dbgs() << "MCP: Copy is used - not dead: "; Copy->dump()); in ReadRegister()
322 MaybeDeadCopies.remove(Copy); in ReadRegister()
324 CopyDbgUsers[Copy].insert(&Reader); in ReadRegister()
351 bool MachineCopyPropagation::eraseIfRedundant(MachineInstr &Copy, in eraseIfRedundant() argument
359 MachineInstr *PrevCopy = Tracker.findAvailCopy(Copy, Def, *TRI); in eraseIfRedundant()
369 LLVM_DEBUG(dbgs() << "MCP: copy is a NOP, removing: "; Copy.dump()); in eraseIfRedundant()
373 assert(Copy.isCopy()); in eraseIfRedundant()
374 Register CopyDef = Copy.getOperand(0).getReg(); in eraseIfRedundant()
377 make_range(PrevCopy->getIterator(), Copy.getIterator())) in eraseIfRedundant()
380 Copy.eraseFromParent(); in eraseIfRedundant()
387 const MachineInstr &Copy, const MachineInstr &UseI, unsigned UseIdx) { in isBackwardPropagatableRegClassCopy() argument
388 Register Def = Copy.getOperand(0).getReg(); in isBackwardPropagatableRegClassCopy()
402 bool MachineCopyPropagation::isForwardableRegClassCopy(const MachineInstr &Copy, in isForwardableRegClassCopy() argument
406 Register CopySrcReg = Copy.getOperand(1).getReg(); in isForwardableRegClassCopy()
508 MachineInstr *Copy = in forwardUses() local
510 if (!Copy) in forwardUses()
513 Register CopyDstReg = Copy->getOperand(0).getReg(); in forwardUses()
514 const MachineOperand &CopySrc = Copy->getOperand(1); in forwardUses()
529 if (!isForwardableRegClassCopy(*Copy, MI, OpIdx)) in forwardUses()
552 << "\n in " << MI << " from " << *Copy); in forwardUses()
562 make_range(Copy->getIterator(), std::next(MI.getIterator()))) in forwardUses()
791 MachineInstr *Copy = in propagateDefs() local
793 if (!Copy) in propagateDefs()
796 Register Def = Copy->getOperand(0).getReg(); in propagateDefs()
797 Register Src = Copy->getOperand(1).getReg(); in propagateDefs()
802 if (!isBackwardPropagatableRegClassCopy(*Copy, MI, OpIdx)) in propagateDefs()
813 << MI << " from " << *Copy); in propagateDefs()
816 MODef.setIsRenamable(Copy->getOperand(0).isRenamable()); in propagateDefs()
819 MaybeDeadCopies.insert(Copy); in propagateDefs()
880 if (auto *Copy = Tracker.findCopyDefViaUnit(*RUI, *TRI)) { in BackwardCopyPropagateBlock() local
881 CopyDbgUsers[Copy].insert(MI); in BackwardCopyPropagateBlock()
891 for (auto *Copy : MaybeDeadCopies) { in BackwardCopyPropagateBlock() local
893 Register Src = Copy->getOperand(1).getReg(); in BackwardCopyPropagateBlock()
894 Register Def = Copy->getOperand(0).getReg(); in BackwardCopyPropagateBlock()
895 SmallVector<MachineInstr *> MaybeDeadDbgUsers(CopyDbgUsers[Copy].begin(), in BackwardCopyPropagateBlock()
896 CopyDbgUsers[Copy].end()); in BackwardCopyPropagateBlock()
899 Copy->eraseFromParent(); in BackwardCopyPropagateBlock()