Lines Matching refs:MachineInstr
83 static bool canHandle(const MachineInstr *MI);
88 bool canReorder(const MachineInstr *A, const MachineInstr *B);
101 Optional<ArrayRef<MachineInstr *>::iterator> PotentialDependence;
105 Optional<ArrayRef<MachineInstr *>::iterator> PotentialDependence) in DependenceResult()
117 DependenceResult computeDependence(const MachineInstr *MI,
118 ArrayRef<MachineInstr *> Block);
123 MachineInstr *MemOperation;
126 MachineInstr *CheckOperation;
139 MachineInstr *OnlyDependency;
142 explicit NullCheck(MachineInstr *memOperation, MachineInstr *checkOperation, in NullCheck()
146 MachineInstr *onlyDependency) in NullCheck()
151 MachineInstr *getMemOperation() const { return MemOperation; } in getMemOperation()
153 MachineInstr *getCheckOperation() const { return CheckOperation; } in getCheckOperation()
161 MachineInstr *getOnlyDependency() const { return OnlyDependency; } in getOnlyDependency()
171 MachineInstr *insertFaultingInstr(MachineInstr *MI, MachineBasicBlock *MBB,
184 AliasResult areMemoryOpsAliased(const MachineInstr &MI,
185 const MachineInstr *PrevMI) const;
199 SuitabilityResult isSuitableMemoryOp(const MachineInstr &MI,
201 ArrayRef<MachineInstr *> PrevInsts);
206 bool canDependenceHoistingClobberLiveIns(MachineInstr *DependenceMI,
212 bool canHoistInst(MachineInstr *FaultingMI,
213 ArrayRef<MachineInstr *> InstsSeenSoFar,
214 MachineBasicBlock *NullSucc, MachineInstr *&Dependence);
238 bool ImplicitNullChecks::canHandle(const MachineInstr *MI) { in canHandle()
253 ImplicitNullChecks::computeDependence(const MachineInstr *MI, in computeDependence()
254 ArrayRef<MachineInstr *> Block) { in computeDependence()
258 Optional<ArrayRef<MachineInstr *>::iterator> Dep; in computeDependence()
276 bool ImplicitNullChecks::canReorder(const MachineInstr *A, in canReorder()
277 const MachineInstr *B) { in canReorder()
331 ImplicitNullChecks::areMemoryOpsAliased(const MachineInstr &MI, in areMemoryOpsAliased()
332 const MachineInstr *PrevMI) const { in areMemoryOpsAliased()
366 ImplicitNullChecks::isSuitableMemoryOp(const MachineInstr &MI, in isSuitableMemoryOp()
368 ArrayRef<MachineInstr *> PrevInsts) { in isSuitableMemoryOp()
407 MachineInstr *ModifyingMI = nullptr; in isSuitableMemoryOp()
410 const MachineInstr *CurrMI = &*It; in isSuitableMemoryOp()
412 ModifyingMI = const_cast<MachineInstr *>(CurrMI); in isSuitableMemoryOp()
482 MachineInstr *DependenceMI, MachineBasicBlock *NullSucc) { in canDependenceHoistingClobberLiveIns()
513 bool ImplicitNullChecks::canHoistInst(MachineInstr *FaultingMI, in canHoistInst()
514 ArrayRef<MachineInstr *> InstsSeenSoFar, in canHoistInst()
516 MachineInstr *&Dependence) { in canHoistInst()
678 SmallVector<MachineInstr *, 8> InstsSeenSoFar; in analyzeBlockForNullChecks()
684 MachineInstr *Dependence; in analyzeBlockForNullChecks()
709 MachineInstr *ImplicitNullChecks::insertFaultingInstr( in insertFaultingInstr()
710 MachineInstr *MI, MachineBasicBlock *MBB, MachineBasicBlock *HandlerMBB) { in insertFaultingInstr()
776 MachineInstr *FaultingInstr = insertFaultingInstr( in rewriteNullChecks()