Lines Matching refs:Insert
227 static MachineInstr *GetVRegDef(unsigned Reg, const MachineInstr *Insert, in GetVRegDef() argument
237 LIS.getInstructionIndex(*Insert))) in GetVRegDef()
276 static bool IsSafeToMove(const MachineInstr *Def, const MachineInstr *Insert, in IsSafeToMove() argument
279 assert(Def->getParent() == Insert->getParent()); in IsSafeToMove()
288 if (MO.isDead() && Insert->definesRegister(Reg) && in IsSafeToMove()
289 !Insert->readsRegister(Reg)) in IsSafeToMove()
316 VNInfo *InsVNI = LI.getVNInfoBefore(LIS.getInstructionIndex(*Insert)); in IsSafeToMove()
330 MachineBasicBlock::const_iterator D(Def), I(Insert); in IsSafeToMove()
437 MachineInstr *Insert, LiveIntervals &LIS, in MoveForSingleUse() argument
442 MBB.splice(Insert, &MBB, Def); in MoveForSingleUse()
478 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in RematerializeCheapDef() argument
485 TII->reMaterialize(MBB, Insert, NewReg, 0, Def, *TRI); in RematerializeCheapDef()
487 MachineInstr *Clone = &*std::prev(Insert); in RematerializeCheapDef()
538 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in MoveAndTeeForMultiUse() argument
543 MBB.splice(Insert, &MBB, Def); in MoveAndTeeForMultiUse()
551 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(), in MoveAndTeeForMultiUse()
591 explicit TreeWalkerState(MachineInstr *Insert) { in TreeWalkerState() argument
592 const iterator_range<mop_iterator> &Range = Insert->explicit_uses(); in TreeWalkerState()
672 void MaybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker, in MaybeCommute() argument
678 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in MaybeCommute()
681 } else if (!Declined && TreeWalker.HasRemainingOperands(Insert)) { in MaybeCommute()
684 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) { in MaybeCommute()
686 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in MaybeCommute()
687 TreeWalker.ResetTopOperands(Insert); in MaybeCommute()
724 MachineInstr *Insert = &*MII; in runOnMachineFunction() local
727 if (Insert->getOpcode() == TargetOpcode::INLINEASM) in runOnMachineFunction()
731 if (Insert->getOpcode() == TargetOpcode::DBG_VALUE) in runOnMachineFunction()
737 TreeWalkerState TreeWalker(Insert); in runOnMachineFunction()
754 MachineInstr *Def = GetVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
778 bool CanMove = SameBlock && IsSafeToMove(Def, Insert, AA, LIS, MRI) && in runOnMachineFunction()
781 Insert = MoveForSingleUse(Reg, Op, Def, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
783 Insert = in runOnMachineFunction()
784 RematerializeCheapDef(Reg, Op, *Def, MBB, Insert->getIterator(), in runOnMachineFunction()
788 Insert = MoveAndTeeForMultiUse(Reg, Op, Def, MBB, Insert, LIS, MFI, in runOnMachineFunction()
794 Commuting.MaybeCommute(Insert, TreeWalker, TII); in runOnMachineFunction()
802 TreeWalker.PushOperands(Insert); in runOnMachineFunction()
807 if (Insert != &*MII) { in runOnMachineFunction()
810 llvm::make_reverse_iterator(MachineBasicBlock::iterator(Insert))); in runOnMachineFunction()