Lines Matching refs:MBB
84 static unsigned findDeadCallerSavedReg(MachineBasicBlock &MBB, in findDeadCallerSavedReg() argument
88 const MachineFunction *MF = MBB.getParent(); in findDeadCallerSavedReg()
141 void emitSPUpdate(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, in emitSPUpdate() argument
151 DebugLoc DL = MBB.findDebugLoc(MBBI); in emitSPUpdate()
159 : findDeadCallerSavedReg(MBB, MBBI, TRI, Is64Bit); in emitSPUpdate()
164 MachineInstr *MI = BuildMI(MBB, MBBI, DL, TII.get(Opc)) in emitSPUpdate()
174 BuildMI(MBB, MBBI, DL, TII.get(Opc), StackPtr) in emitSPUpdate()
186 void mergeSPUpdatesUp(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, in mergeSPUpdatesUp() argument
188 if (MBBI == MBB.begin()) return; in mergeSPUpdatesUp()
197 MBB.erase(PI); in mergeSPUpdatesUp()
203 MBB.erase(PI); in mergeSPUpdatesUp()
209 void mergeSPUpdatesDown(MachineBasicBlock &MBB, in mergeSPUpdatesDown() argument
215 if (MBBI == MBB.end()) return; in mergeSPUpdatesDown()
218 if (NI == MBB.end()) return; in mergeSPUpdatesDown()
226 MBB.erase(NI); in mergeSPUpdatesDown()
233 MBB.erase(NI); in mergeSPUpdatesDown()
242 static int mergeSPUpdates(MachineBasicBlock &MBB, in mergeSPUpdates() argument
246 if ((doMergeWithPrevious && MBBI == MBB.begin()) || in mergeSPUpdates()
247 (!doMergeWithPrevious && MBBI == MBB.end())) in mergeSPUpdates()
259 MBB.erase(PI); in mergeSPUpdates()
265 MBB.erase(PI); in mergeSPUpdates()
354 MachineBasicBlock &MBB = MF.front(); // Prologue goes in entry BB. in emitPrologue() local
355 MachineBasicBlock::iterator MBBI = MBB.begin(); in emitPrologue()
413 BuildMI(MBB, MBBI, DL, in emitPrologue()
455 BuildMI(MBB, MBBI, DL, TII.get(Is64Bit ? X86::PUSH64r : X86::PUSH32r)) in emitPrologue()
462 BuildMI(MBB, MBBI, DL, TII.get(X86::PROLOG_LABEL)).addSym(FrameLabel); in emitPrologue()
482 BuildMI(MBB, MBBI, DL, in emitPrologue()
490 BuildMI(MBB, MBBI, DL, TII.get(X86::PROLOG_LABEL)).addSym(FrameLabel); in emitPrologue()
506 BuildMI(MBB, MBBI, DL, in emitPrologue()
521 while (MBBI != MBB.end() && in emitPrologue()
530 BuildMI(MBB, MBBI, DL, TII.get(X86::PROLOG_LABEL)).addSym(Label); in emitPrologue()
542 DL = MBB.findDebugLoc(MBBI); in emitPrologue()
547 NumBytes -= mergeSPUpdates(MBB, MBBI, StackPtr, true); in emitPrologue()
551 mergeSPUpdatesDown(MBB, MBBI, StackPtr, &NumBytes); in emitPrologue()
588 BuildMI(MBB, MBBI, DL, TII.get(X86::PUSH32r)) in emitPrologue()
595 BuildMI(MBB, MBBI, DL, TII.get(X86::MOV64ri), X86::RAX) in emitPrologue()
600 BuildMI(MBB, MBBI, DL, TII.get(X86::MOV32ri), X86::EAX) in emitPrologue()
604 BuildMI(MBB, MBBI, DL, in emitPrologue()
613 emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, in emitPrologue()
621 MBB.insert(MBBI, MI); in emitPrologue()
624 emitSPUpdate(MBB, MBBI, StackPtr, -(int64_t)NumBytes, Is64Bit, in emitPrologue()
630 BuildMI(MBB, MBBI, DL, TII.get(X86::PROLOG_LABEL)).addSym(Label); in emitPrologue()
653 MachineBasicBlock &MBB) const { in emitEpilogue()
658 MachineBasicBlock::iterator MBBI = MBB.getLastNonDebugInstr(); in emitEpilogue()
659 assert(MBBI != MBB.end() && "Returning block has no instructions"); in emitEpilogue()
710 BuildMI(MBB, MBBI, DL, in emitEpilogue()
718 while (MBBI != MBB.begin()) { in emitEpilogue()
734 mergeSPUpdatesUp(MBB, MBBI, StackPtr, &NumBytes); in emitEpilogue()
743 emitSPUpdate(MBB, MBBI, StackPtr, NumBytes, Is64Bit, TII, *RegInfo); in emitEpilogue()
747 BuildMI(MBB, MBBI, DL, in emitEpilogue()
756 MBB.insert(MBBI, MI); in emitEpilogue()
758 BuildMI(MBB, MBBI, DL, in emitEpilogue()
764 emitSPUpdate(MBB, MBBI, StackPtr, NumBytes, Is64Bit, TII, *RegInfo); in emitEpilogue()
769 MBBI = MBB.getLastNonDebugInstr(); in emitEpilogue()
772 BuildMI(MBB, MBBI, DL, in emitEpilogue()
781 MBBI = MBB.getLastNonDebugInstr(); in emitEpilogue()
798 Offset += mergeSPUpdates(MBB, MBBI, StackPtr, true); in emitEpilogue()
799 emitSPUpdate(MBB, MBBI, StackPtr, Offset, Is64Bit, TII, *RegInfo); in emitEpilogue()
805 BuildMI(MBB, MBBI, DL, TII.get((RetOpcode == X86::TCRETURNdi) in emitEpilogue()
817 BuildMI(MBB, MBBI, DL, TII.get((RetOpcode == X86::TCRETURNmi) in emitEpilogue()
822 BuildMI(MBB, MBBI, DL, TII.get(X86::TAILJMPr64)). in emitEpilogue()
825 BuildMI(MBB, MBBI, DL, TII.get(X86::TAILJMPr)). in emitEpilogue()
834 MBB.erase(MBBI); in emitEpilogue()
839 MBBI = MBB.getLastNonDebugInstr(); in emitEpilogue()
842 delta += mergeSPUpdates(MBB, MBBI, StackPtr, true); in emitEpilogue()
843 emitSPUpdate(MBB, MBBI, StackPtr, delta, Is64Bit, TII, *RegInfo); in emitEpilogue()
882 bool X86FrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB, in spillCalleeSavedRegisters() argument
889 DebugLoc DL = MBB.findDebugLoc(MI); in spillCalleeSavedRegisters()
891 MachineFunction &MF = *MBB.getParent(); in spillCalleeSavedRegisters()
908 MBB.addLiveIn(Reg); in spillCalleeSavedRegisters()
913 BuildMI(MBB, MI, DL, TII.get(Opc)).addReg(Reg, RegState::Kill) in spillCalleeSavedRegisters()
928 MBB.addLiveIn(Reg); in spillCalleeSavedRegisters()
930 TII.storeRegToStackSlot(MBB, MI, Reg, true, CSI[i-1].getFrameIdx(), in spillCalleeSavedRegisters()
937 bool X86FrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB, in restoreCalleeSavedRegisters() argument
944 DebugLoc DL = MBB.findDebugLoc(MI); in restoreCalleeSavedRegisters()
946 MachineFunction &MF = *MBB.getParent(); in restoreCalleeSavedRegisters()
956 TII.loadRegFromStackSlot(MBB, MI, Reg, CSI[i].getFrameIdx(), in restoreCalleeSavedRegisters()
971 BuildMI(MBB, MI, DL, TII.get(Opc), Reg); in restoreCalleeSavedRegisters()