Lines Matching refs:Use
312 static bool isSafeToMove(const MachineOperand *Def, const MachineOperand *Use, in isSafeToMove() argument
317 const MachineInstr *UseI = Use->getParent(); in isSafeToMove()
345 if (&PriorUse == Use) in isSafeToMove()
445 for (const MachineOperand &Use : MRI.use_nodbg_operands(Reg)) { in oneUseDominatesOtherUses() local
446 if (&Use == &OneUse) in oneUseDominatesOtherUses()
449 const MachineInstr *UseInst = Use.getParent(); in oneUseDominatesOtherUses()
458 if (&OneUse > &Use) in oneUseDominatesOtherUses()
839 MachineOperand &Use = TreeWalker.pop(); in runOnMachineFunction() local
842 if (!Use.isReg()) in runOnMachineFunction()
845 Register Reg = Use.getReg(); in runOnMachineFunction()
846 assert(Use.isUse() && "explicit_uses() should only iterate over uses"); in runOnMachineFunction()
847 assert(!Use.isImplicit() && 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()
889 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(), in runOnMachineFunction()
891 } else if (CanMove && oneUseDominatesOtherUses(Reg, Use, MBB, MRI, MDT, in runOnMachineFunction()
893 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
908 auto *SubsequentUse = &Use; in runOnMachineFunction()
910 SubsequentUse != Use.getParent()->uses().end()) { in runOnMachineFunction()