Lines Matching refs:Insert

270 static MachineInstr *GetVRegDef(unsigned Reg, const MachineInstr *Insert,  in GetVRegDef()  argument
279 LIS.getInstructionIndex(*Insert))) in GetVRegDef()
317 static bool IsSafeToMove(const MachineInstr *Def, const MachineInstr *Insert, in IsSafeToMove() argument
319 assert(Def->getParent() == Insert->getParent()); in IsSafeToMove()
329 if (MO.isDead() && Insert->definesRegister(Reg) && in IsSafeToMove()
330 !Insert->readsRegister(Reg)) in IsSafeToMove()
362 MachineBasicBlock::const_iterator D(Def), I(Insert); in IsSafeToMove()
474 MachineInstr *Insert, LiveIntervals &LIS, in MoveForSingleUse() argument
480 MBB.splice(Insert, &MBB, Def); in MoveForSingleUse()
481 DefDIs.move(Insert); in MoveForSingleUse()
519 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in RematerializeCheapDef() argument
528 TII->reMaterialize(MBB, Insert, NewReg, 0, Def, *TRI); in RematerializeCheapDef()
530 MachineInstr *Clone = &*std::prev(Insert); in RematerializeCheapDef()
556 DefDIs.move(&*Insert); in RematerializeCheapDef()
559 DefDIs.clone(&*Insert, NewReg); in RematerializeCheapDef()
587 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in MoveAndTeeForMultiUse() argument
594 MBB.splice(Insert, &MBB, Def); in MoveAndTeeForMultiUse()
602 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(), in MoveAndTeeForMultiUse()
611 DefDIs.move(Insert); in MoveAndTeeForMultiUse()
630 DefDIs.clone(Insert, TeeReg); in MoveAndTeeForMultiUse()
647 explicit TreeWalkerState(MachineInstr *Insert) { in TreeWalkerState() argument
648 const iterator_range<mop_iterator> &Range = Insert->explicit_uses(); in TreeWalkerState()
728 void MaybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker, in MaybeCommute() argument
734 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in MaybeCommute()
737 } else if (!Declined && TreeWalker.HasRemainingOperands(Insert)) { in MaybeCommute()
740 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) { in MaybeCommute()
742 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in MaybeCommute()
743 TreeWalker.ResetTopOperands(Insert); in MaybeCommute()
780 MachineInstr *Insert = &*MII; in runOnMachineFunction() local
783 if (Insert->getOpcode() == TargetOpcode::INLINEASM) in runOnMachineFunction()
787 if (Insert->getOpcode() == TargetOpcode::DBG_VALUE) in runOnMachineFunction()
793 TreeWalkerState TreeWalker(Insert); in runOnMachineFunction()
809 MachineInstr *Def = GetVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
830 bool CanMove = SameBlock && IsSafeToMove(Def, Insert, AA, MRI) && in runOnMachineFunction()
833 Insert = MoveForSingleUse(Reg, Op, Def, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
835 Insert = in runOnMachineFunction()
836 RematerializeCheapDef(Reg, Op, *Def, MBB, Insert->getIterator(), in runOnMachineFunction()
840 Insert = MoveAndTeeForMultiUse(Reg, Op, Def, MBB, Insert, LIS, MFI, in runOnMachineFunction()
846 Commuting.MaybeCommute(Insert, TreeWalker, TII); in runOnMachineFunction()
854 if (Insert->getOpcode() == TargetOpcode::IMPLICIT_DEF) in runOnMachineFunction()
855 ConvertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()
860 TreeWalker.PushOperands(Insert); in runOnMachineFunction()
865 if (Insert != &*MII) { in runOnMachineFunction()
867 MII = MachineBasicBlock::iterator(Insert).getReverse(); in runOnMachineFunction()