Lines Matching refs:MachineInstr
77 MachineInstr *tryToCombine(MachineInstr &Ldst);
80 bool noUseOfAddBeforeLoadOrStore(const MachineInstr *Add,
81 const MachineInstr *Ldst);
85 bool canHoistLoadStoreTo(MachineInstr *Ldst, MachineInstr *To);
95 MachineInstr *canJoinInstructions(MachineInstr *Ldst, MachineInstr *Add,
96 SmallVectorImpl<MachineInstr *> *Uses);
100 bool canFixPastUses(const ArrayRef<MachineInstr *> &Uses,
105 void fixPastUses(ArrayRef<MachineInstr *> Uses, unsigned BaseReg,
111 void changeToAddrMode(MachineInstr &Ldst, unsigned NewOpcode,
134 static bool isAddConstantOp(const MachineInstr &MI, int64_t &Amount) { in isAddConstantOp()
150 static bool dominatesAllUsesOf(const MachineInstr *MI, unsigned VReg, in dominatesAllUsesOf()
158 MachineInstr *User = it->getParent(); in dominatesAllUsesOf()
181 const MachineInstr &MI, in isLoadStoreThatCanHandleDisplacement()
193 bool ARCOptAddrMode::noUseOfAddBeforeLoadOrStore(const MachineInstr *Add, in noUseOfAddBeforeLoadOrStore()
194 const MachineInstr *Ldst) { in noUseOfAddBeforeLoadOrStore()
199 MachineInstr *ARCOptAddrMode::tryToCombine(MachineInstr &Ldst) { in tryToCombine()
238 SmallVector<MachineInstr *, 8> Uses; in tryToCombine()
239 MachineInstr *MoveTo = canJoinInstructions(&Ldst, &Add, &Uses); in tryToCombine()
247 LLVM_DEBUG(MachineInstr *First = &Ldst; MachineInstr *Last = &Add; in tryToCombine()
254 MachineInstr *Result = Ldst.getNextNode(); in tryToCombine()
275 MachineInstr *
276 ARCOptAddrMode::canJoinInstructions(MachineInstr *Ldst, MachineInstr *Add, in canJoinInstructions()
277 SmallVectorImpl<MachineInstr *> *Uses) { in canJoinInstructions()
280 MachineInstr *First = Add; in canJoinInstructions()
281 MachineInstr *Last = Ldst; in canJoinInstructions()
314 SmallVector<MachineInstr *, 4> UsesAfterLdst; in canJoinInstructions()
315 SmallVector<MachineInstr *, 4> UsesAfterAdd; in canJoinInstructions()
316 for (MachineInstr &MI : MRI->use_nodbg_instructions(BaseReg)) { in canJoinInstructions()
327 MachineInstr *Result = nullptr; in canJoinInstructions()
353 bool ARCOptAddrMode::canFixPastUses(const ArrayRef<MachineInstr *> &Uses, in canFixPastUses()
358 for (MachineInstr *MI : Uses) { in canFixPastUses()
374 void ARCOptAddrMode::fixPastUses(ArrayRef<MachineInstr *> Uses, in fixPastUses()
377 for (MachineInstr *MI : Uses) { in fixPastUses()
400 bool ARCOptAddrMode::canHoistLoadStoreTo(MachineInstr *Ldst, MachineInstr *To) { in canHoistLoadStoreTo()
420 MachineInstr *OpDef = MRI->getVRegDef(O.getReg()); in canHoistLoadStoreTo()
452 void ARCOptAddrMode::changeToAddrMode(MachineInstr &Ldst, unsigned NewOpcode, in changeToAddrMode()
488 MachineInstr *Res = tryToCombine(*MI); in processBasicBlock()