Lines Matching refs:Insert
265 static MachineInstr *getVRegDef(unsigned Reg, const MachineInstr *Insert, in getVRegDef() argument
274 LIS.getInstructionIndex(*Insert))) in getVRegDef()
314 const MachineInstr *Insert, in isSafeToMove() argument
319 assert(DefI->getParent() == Insert->getParent()); in isSafeToMove()
320 assert(UseI->getParent() == Insert->getParent()); in isSafeToMove()
359 if (NextI == Insert) in isSafeToMove()
375 if (MO.isDead() && Insert->definesRegister(Reg, /*TRI=*/nullptr) && in isSafeToMove()
376 !Insert->readsRegister(Reg, /*TRI=*/nullptr)) in isSafeToMove()
408 MachineBasicBlock::const_iterator D(DefI), I(Insert); in isSafeToMove()
525 MachineInstr *Insert, LiveIntervals &LIS, in moveForSingleUse() argument
531 DefDIs.sink(Insert); in moveForSingleUse()
574 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in rematerializeCheapDef() argument
583 DefDIs.cloneSink(&*Insert, NewReg); in rematerializeCheapDef()
585 MachineInstr *Clone = getPrevNonDebugInst(&*Insert); in rematerializeCheapDef()
637 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in moveAndTeeForMultiUse() argument
647 DefDIs.sink(Insert); in moveAndTeeForMultiUse()
652 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(), in moveAndTeeForMultiUse()
681 DefDIs.cloneSink(Insert, TeeReg, /* CloneDef */ false); in moveAndTeeForMultiUse()
698 explicit TreeWalkerState(MachineInstr *Insert) { in TreeWalkerState() argument
699 const iterator_range<mop_iterator> &Range = Insert->explicit_uses(); in TreeWalkerState()
776 void maybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker, in maybeCommute() argument
782 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
785 } else if (!Declined && TreeWalker.hasRemainingOperands(Insert)) { in maybeCommute()
788 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) { in maybeCommute()
790 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
791 TreeWalker.resetTopOperands(Insert); in maybeCommute()
827 MachineInstr *Insert = &*MII; in runOnMachineFunction() local
830 if (Insert->isInlineAsm()) in runOnMachineFunction()
834 if (Insert->isDebugValue()) in runOnMachineFunction()
840 TreeWalkerState TreeWalker(Insert); in runOnMachineFunction()
856 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
881 bool CanMove = SameBlock && isSafeToMove(Def, &Use, Insert, MFI, MRI) && in runOnMachineFunction()
884 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
892 Insert = in runOnMachineFunction()
893 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(), in runOnMachineFunction()
897 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
903 Commuting.maybeCommute(Insert, TreeWalker, TII); in runOnMachineFunction()
911 auto *SubsequentDef = Insert->defs().begin(); in runOnMachineFunction()
913 while (SubsequentDef != Insert->defs().end() && in runOnMachineFunction()
930 if (Insert->getOpcode() == TargetOpcode::IMPLICIT_DEF) in runOnMachineFunction()
931 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()
936 TreeWalker.pushOperands(Insert); in runOnMachineFunction()
941 if (Insert != &*MII) { in runOnMachineFunction()
943 MII = MachineBasicBlock::iterator(Insert).getReverse(); in runOnMachineFunction()