Lines Matching refs:Insert
264 static MachineInstr *getVRegDef(unsigned Reg, const MachineInstr *Insert, in getVRegDef() argument
273 LIS.getInstructionIndex(*Insert))) in getVRegDef()
313 const MachineInstr *Insert, in isSafeToMove() argument
318 assert(DefI->getParent() == Insert->getParent()); in isSafeToMove()
319 assert(UseI->getParent() == Insert->getParent()); in isSafeToMove()
358 if (NextI == Insert) in isSafeToMove()
374 if (MO.isDead() && Insert->definesRegister(Reg) && in isSafeToMove()
375 !Insert->readsRegister(Reg)) in isSafeToMove()
407 MachineBasicBlock::const_iterator D(DefI), I(Insert); in isSafeToMove()
522 MachineInstr *Insert, LiveIntervals &LIS, in moveForSingleUse() argument
528 DefDIs.sink(Insert); in moveForSingleUse()
571 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in rematerializeCheapDef() argument
580 DefDIs.cloneSink(&*Insert, NewReg); in rematerializeCheapDef()
582 MachineInstr *Clone = getPrevNonDebugInst(&*Insert); in rematerializeCheapDef()
634 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in moveAndTeeForMultiUse() argument
644 DefDIs.sink(Insert); in moveAndTeeForMultiUse()
649 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(), in moveAndTeeForMultiUse()
678 DefDIs.cloneSink(Insert, TeeReg, /* CloneDef */ false); in moveAndTeeForMultiUse()
695 explicit TreeWalkerState(MachineInstr *Insert) { in TreeWalkerState() argument
696 const iterator_range<mop_iterator> &Range = Insert->explicit_uses(); in TreeWalkerState()
773 void maybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker, in maybeCommute() argument
779 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
782 } else if (!Declined && TreeWalker.hasRemainingOperands(Insert)) { in maybeCommute()
785 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) { in maybeCommute()
787 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
788 TreeWalker.resetTopOperands(Insert); in maybeCommute()
824 MachineInstr *Insert = &*MII; in runOnMachineFunction() local
827 if (Insert->isInlineAsm()) in runOnMachineFunction()
831 if (Insert->isDebugValue()) in runOnMachineFunction()
837 TreeWalkerState TreeWalker(Insert); in runOnMachineFunction()
853 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
877 bool CanMove = SameBlock && isSafeToMove(Def, &Use, Insert, MFI, MRI) && in runOnMachineFunction()
880 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
888 Insert = in runOnMachineFunction()
889 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(), in runOnMachineFunction()
893 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
899 Commuting.maybeCommute(Insert, TreeWalker, TII); in runOnMachineFunction()
907 auto *SubsequentDef = Insert->defs().begin(); in runOnMachineFunction()
909 while (SubsequentDef != Insert->defs().end() && in runOnMachineFunction()
926 if (Insert->getOpcode() == TargetOpcode::IMPLICIT_DEF) in runOnMachineFunction()
927 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()
932 TreeWalker.pushOperands(Insert); in runOnMachineFunction()
937 if (Insert != &*MII) { in runOnMachineFunction()
939 MII = MachineBasicBlock::iterator(Insert).getReverse(); in runOnMachineFunction()