Lines Matching refs:Use
313 static bool isSafeToMove(const MachineOperand *Def, const MachineOperand *Use, in isSafeToMove() argument
318 const MachineInstr *UseI = Use->getParent(); in isSafeToMove()
346 if (&PriorUse == Use) in isSafeToMove()
446 for (const MachineOperand &Use : MRI.use_nodbg_operands(Reg)) { in oneUseDominatesOtherUses() local
447 if (&Use == &OneUse) in oneUseDominatesOtherUses()
450 const MachineInstr *UseInst = Use.getParent(); in oneUseDominatesOtherUses()
459 if (&OneUse > &Use) in oneUseDominatesOtherUses()
842 MachineOperand &Use = TreeWalker.pop(); in runOnMachineFunction() local
845 if (!Use.isReg()) in runOnMachineFunction()
848 Register Reg = Use.getReg(); in runOnMachineFunction()
849 assert(Use.isUse() && "explicit_uses() should only iterate over uses"); in runOnMachineFunction()
850 assert(!Use.isImplicit() && 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()
893 rematerializeCheapDef(Reg, Use, *DefI, MBB, Insert->getIterator(), in runOnMachineFunction()
895 } else if (CanMove && oneUseDominatesOtherUses(Reg, Use, MBB, MRI, MDT, in runOnMachineFunction()
897 Insert = moveAndTeeForMultiUse(Reg, Use, DefI, MBB, Insert, LIS, MFI, in runOnMachineFunction()
912 auto *SubsequentUse = &Use; in runOnMachineFunction()
914 SubsequentUse != Use.getParent()->uses().end()) { in runOnMachineFunction()