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()
157 const MachineInstr *User = Use.getParent(); in dominatesAllUsesOf()
180 const MachineInstr &MI, in isLoadStoreThatCanHandleDisplacement()
192 bool ARCOptAddrMode::noUseOfAddBeforeLoadOrStore(const MachineInstr *Add, in noUseOfAddBeforeLoadOrStore()
193 const MachineInstr *Ldst) { in noUseOfAddBeforeLoadOrStore()
198 MachineInstr *ARCOptAddrMode::tryToCombine(MachineInstr &Ldst) { in tryToCombine()
237 SmallVector<MachineInstr *, 8> Uses; in tryToCombine()
238 MachineInstr *MoveTo = canJoinInstructions(&Ldst, &Add, &Uses); in tryToCombine()
246 LLVM_DEBUG(MachineInstr *First = &Ldst; MachineInstr *Last = &Add; in tryToCombine()
253 MachineInstr *Result = Ldst.getNextNode(); in tryToCombine()
274 MachineInstr *
275 ARCOptAddrMode::canJoinInstructions(MachineInstr *Ldst, MachineInstr *Add, in canJoinInstructions()
276 SmallVectorImpl<MachineInstr *> *Uses) { in canJoinInstructions()
279 MachineInstr *First = Add; in canJoinInstructions()
280 MachineInstr *Last = Ldst; in canJoinInstructions()
313 SmallVector<MachineInstr *, 4> UsesAfterLdst; in canJoinInstructions()
314 SmallVector<MachineInstr *, 4> UsesAfterAdd; in canJoinInstructions()
315 for (MachineInstr &MI : MRI->use_nodbg_instructions(BaseReg)) { in canJoinInstructions()
326 MachineInstr *Result = nullptr; in canJoinInstructions()
352 bool ARCOptAddrMode::canFixPastUses(const ArrayRef<MachineInstr *> &Uses, in canFixPastUses()
357 for (MachineInstr *MI : Uses) { in canFixPastUses()
373 void ARCOptAddrMode::fixPastUses(ArrayRef<MachineInstr *> Uses, in fixPastUses()
376 for (MachineInstr *MI : Uses) { in fixPastUses()
399 bool ARCOptAddrMode::canHoistLoadStoreTo(MachineInstr *Ldst, MachineInstr *To) { in canHoistLoadStoreTo()
419 MachineInstr *OpDef = MRI->getVRegDef(O.getReg()); in canHoistLoadStoreTo()
451 void ARCOptAddrMode::changeToAddrMode(MachineInstr &Ldst, unsigned NewOpcode, in changeToAddrMode()
487 MachineInstr *Res = tryToCombine(*MI); in processBasicBlock()