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