Lines Matching defs:Insert

263 static MachineInstr *getVRegDef(unsigned Reg, const MachineInstr *Insert,
272 LIS.getInstructionIndex(*Insert)))
306 // Test whether it's safe to move Def to just before Insert.
312 const MachineInstr *Insert,
317 assert(DefI->getParent() == Insert->getParent());
318 assert(UseI->getParent() == Insert->getParent());
357 if (NextI == Insert)
372 // If the register is dead here and at Insert, ignore it.
373 if (MO.isDead() && Insert->definesRegister(Reg, /*TRI=*/nullptr) &&
374 !Insert->readsRegister(Reg, /*TRI=*/nullptr))
405 // Scan through the intervening instructions between DefI and Insert.
406 MachineBasicBlock::const_iterator D(DefI), I(Insert);
523 MachineInstr *Insert, LiveIntervals &LIS,
529 DefDIs.sink(Insert);
572 MachineBasicBlock::instr_iterator Insert, LiveIntervals &LIS,
581 DefDIs.cloneSink(&*Insert, NewReg);
583 MachineInstr *Clone = getPrevNonDebugInst(&*Insert);
619 /// INST ..., Reg, ... // Insert
625 /// DefReg = INST ... // Def (to become the new Insert)
627 /// INST ..., TeeReg, ... // Insert
635 MachineInstr *Insert, LiveIntervals &LIS, WebAssemblyFunctionInfo &MFI,
645 DefDIs.sink(Insert);
650 MachineInstr *Tee = BuildMI(MBB, Insert, Insert->getDebugLoc(),
679 DefDIs.cloneSink(Insert, TeeReg, /* CloneDef */ false);
696 explicit TreeWalkerState(MachineInstr *Insert) {
697 const iterator_range<mop_iterator> &Range = Insert->explicit_uses();
773 /// it, commute Insert's operands and prepare to revisit it.
774 void maybeCommute(MachineInstr *Insert, TreeWalkerState &TreeWalker,
780 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1);
783 } else if (!Declined && TreeWalker.hasRemainingOperands(Insert)) {
786 if (TII->findCommutedOpIndices(*Insert, Operand0, Operand1)) {
788 TII->commuteInstruction(*Insert, /*NewMI=*/false, Operand0, Operand1);
789 TreeWalker.resetTopOperands(Insert);
825 MachineInstr *Insert = &*MII;
828 if (Insert->isInlineAsm())
832 if (Insert->isDebugValue())
838 TreeWalkerState TreeWalker(Insert);
854 MachineInstr *DefI = getVRegDef(Reg, Insert, MRI, LIS);
879 bool CanMove = SameBlock && isSafeToMove(Def, &Use, Insert, MFI, MRI) &&
882 Insert = moveForSingleUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, MRI);
890 Insert =
891 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(),
895 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI,
901 Commuting.maybeCommute(Insert, TreeWalker, TII);
909 auto *SubsequentDef = Insert->defs().begin();
911 while (SubsequentDef != Insert->defs().end() &&
928 if (Insert->getOpcode() == TargetOpcode::IMPLICIT_DEF)
929 convertImplicitDefToConstZero(Insert, MRI, TII, MF, LIS);
934 TreeWalker.pushOperands(Insert);
939 if (Insert != &*MII) {
941 MII = MachineBasicBlock::iterator(Insert).getReverse();