Lines Matching refs:Insert
266 static MachineInstr *getVRegDef(unsigned Reg, const MachineInstr *Insert, in getVRegDef() argument
275 LIS.getInstructionIndex(*Insert))) in getVRegDef()
314 const MachineInstr *Insert, AliasAnalysis &AA, in isSafeToMove() argument
319 assert(DefI->getParent() == Insert->getParent()); in isSafeToMove()
320 assert(UseI->getParent() == Insert->getParent()); in isSafeToMove()
354 if (NextI == Insert) in isSafeToMove()
370 if (MO.isDead() && Insert->definesRegister(Reg) && in isSafeToMove()
371 !Insert->readsRegister(Reg)) in isSafeToMove()
403 MachineBasicBlock::const_iterator D(DefI), I(Insert); in isSafeToMove()
515 MachineInstr *Insert, LiveIntervals &LIS, in moveForSingleUse() argument
521 MBB.splice(Insert, &MBB, Def); in moveForSingleUse()
522 DefDIs.move(Insert); in moveForSingleUse()
560 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS, in rematerializeCheapDef() argument
569 TII->reMaterialize(MBB, Insert, NewReg, 0, Def, *TRI); in rematerializeCheapDef()
571 MachineInstr *Clone = &*std::prev(Insert); in rematerializeCheapDef()
597 DefDIs.move(&*Insert); in rematerializeCheapDef()
600 DefDIs.clone(&*Insert, NewReg); in rematerializeCheapDef()
628 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI, in moveAndTeeForMultiUse() argument
635 MBB.splice(Insert, &MBB, Def); in moveAndTeeForMultiUse()
643 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(), in moveAndTeeForMultiUse()
652 DefDIs.move(Insert); in moveAndTeeForMultiUse()
671 DefDIs.clone(Insert, TeeReg); in moveAndTeeForMultiUse()
688 explicit TreeWalkerState(MachineInstr *Insert) { in TreeWalkerState() argument
689 const iterator_range<mop_iterator> &Range = Insert->explicit_uses(); in TreeWalkerState()
766 void maybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker, in maybeCommute() argument
772 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
775 } else if (!Declined && TreeWalker.hasRemainingOperands(Insert)) { in maybeCommute()
778 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) { in maybeCommute()
780 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1); in maybeCommute()
781 TreeWalker.resetTopOperands(Insert); in maybeCommute()
818 MachineInstr *Insert = &*MII; in runOnMachineFunction() local
821 if (Insert->isInlineAsm()) in runOnMachineFunction()
825 if (Insert->isDebugValue()) in runOnMachineFunction()
831 TreeWalkerState TreeWalker(Insert); in runOnMachineFunction()
847 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS); in runOnMachineFunction()
872 isSafeToMove(Def, &Use, Insert, AA, MFI, MRI) && in runOnMachineFunction()
875 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI); in runOnMachineFunction()
883 Insert = in runOnMachineFunction()
884 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(), in runOnMachineFunction()
888 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
894 Commuting.maybeCommute(Insert, TreeWalker, TII); in runOnMachineFunction()
902 auto *SubsequentDef = Insert->defs().begin(); in runOnMachineFunction()
904 while (SubsequentDef != Insert->defs().end() && in runOnMachineFunction()
921 if (Insert->getOpcode() == TargetOpcode::IMPLICIT_DEF) in runOnMachineFunction()
922 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS); in runOnMachineFunction()
927 TreeWalker.pushOperands(Insert); in runOnMachineFunction()
932 if (Insert != &*MII) { in runOnMachineFunction()
934 MII = MachineBasicBlock::iterator(Insert).getReverse(); in runOnMachineFunction()