Home | History | Annotate | Download | only in Mips

Lines Matching refs:Slot

1 //===-- MipsDelaySlotFiller.cpp - Mips Delay Slot Filler ------------------===//
35 #define DEBUG_TYPE "delay-slot-filler"
106 /// Return true if MI cannot be moved to delay slot.
115 /// Memory instructions are not allowed to move to delay slot if this flag
140 /// memory instruction can be moved to a delay slot.
151 /// disqualify the delay slot candidate between V and values in Uses and
173 return "Mips Delay Slot Filler";
183 // instructions to fill delay slot. Without this, -verify-machineinstrs
199 /// This function checks if it is valid to move Candidate to the delay slot
206 /// moved to the delay slot. Returns true on success.
213 /// can be moved to the delay slot. Returns true on success.
214 bool searchBackward(MachineBasicBlock &MBB, Iter Slot) const;
217 /// that can be moved to the delay slot. Returns true on success.
218 bool searchForward(MachineBasicBlock &MBB, Iter Slot) const;
221 /// that can be moved to the delay slot and inserts clones of the
223 bool searchSuccBBs(MachineBasicBlock &MBB, Iter Slot) const;
230 /// slot that branches to Dst.
235 /// one of its branches delay slot or its end.
297 // delay slot.
399 // subsequent loads and stores to delay slot.
493 /// We assume there is only one delay slot per delayed instruction.
504 // Delay slot filling is disabled at -O0.
517 // Bundle the NOP to the instruction with the delay slot.
546 "Cannot put calls, returns or branches in delay slot.");
570 bool Filler::searchBackward(MachineBasicBlock &MBB, Iter Slot) const {
578 RegDU.init(*Slot);
580 if (!searchRange(MBB, ReverseIter(Slot), MBB.rend(), RegDU, MemDU, Filler))
583 MBB.splice(std::next(Slot), &MBB, std::next(Filler).base());
584 MIBundleBuilder(MBB, Slot, std::next(Slot, 2));
589 bool Filler::searchForward(MachineBasicBlock &MBB, Iter Slot) const {
591 if (DisableForwardSearch || !Slot->isCall())
598 RegDU.setCallerSaved(*Slot);
600 if (!searchRange(MBB, std::next(Slot), MBB.end(), RegDU, NM, Filler))
603 MBB.splice(std::next(Slot), &MBB, Filler);
604 MIBundleBuilder(MBB, Slot, std::next(Slot, 2));
609 bool Filler::searchSuccBBs(MachineBasicBlock &MBB, Iter Slot) const {
692 // Examine the conditional branch. See if its slot is occupied.