Lines Matching refs:MBB
137 static unsigned findDeadCallerSavedReg(MachineBasicBlock &MBB, in findDeadCallerSavedReg() argument
140 const MachineFunction *MF = MBB.getParent(); in findDeadCallerSavedReg()
146 if (MBBI == MBB.end()) in findDeadCallerSavedReg()
176 static bool isRegLiveIn(MachineBasicBlock &MBB, unsigned Reg) { in isRegLiveIn() argument
177 return llvm::any_of(MBB.liveins(), in isRegLiveIn()
197 void M68kFrameLowering::BuildStackAlignAND(MachineBasicBlock &MBB, in BuildStackAlignAND() argument
210 BuildMI(MBB, MBBI, DL, TII.get(MovOp), Tmp) in BuildStackAlignAND()
214 MachineInstr *MI = BuildMI(MBB, MBBI, DL, TII.get(AndOp), Tmp) in BuildStackAlignAND()
222 BuildMI(MBB, MBBI, DL, TII.get(MovOp), Reg) in BuildStackAlignAND()
228 MachineFunction &MF, MachineBasicBlock &MBB, in eliminateCallFramePseudoInstr() argument
236 I = MBB.erase(I); in eliminateCallFramePseudoInstr()
262 BuildCFI(MBB, I, DL, in eliminateCallFramePseudoInstr()
277 BuildCFI(MBB, I, DL, in eliminateCallFramePseudoInstr()
288 StackAdjustment += mergeSPUpdates(MBB, I, true); in eliminateCallFramePseudoInstr()
289 StackAdjustment += mergeSPUpdates(MBB, I, false); in eliminateCallFramePseudoInstr()
292 BuildStackAdjustment(MBB, I, DL, StackAdjustment, false); in eliminateCallFramePseudoInstr()
308 MBB, I, DL, in eliminateCallFramePseudoInstr()
324 MachineBasicBlock::iterator B = MBB.begin(); in eliminateCallFramePseudoInstr()
327 BuildStackAdjustment(MBB, CI, DL, -InternalAmt, /*InEpilogue=*/false); in eliminateCallFramePseudoInstr()
335 void M68kFrameLowering::emitSPUpdate(MachineBasicBlock &MBB, in emitSPUpdate() argument
342 DebugLoc DL = MBB.findDebugLoc(MBBI); in emitSPUpdate()
350 if (IsSub && !isRegLiveIn(MBB, M68k::D0)) in emitSPUpdate()
353 Reg = findDeadCallerSavedReg(MBB, MBBI, TRI); in emitSPUpdate()
357 BuildMI(MBB, MBBI, DL, TII.get(Opc), Reg).addImm(Offset); in emitSPUpdate()
359 MachineInstr *MI = BuildMI(MBB, MBBI, DL, TII.get(Opc), StackPtr) in emitSPUpdate()
372 MBB, MBBI, DL, IsSub ? -ThisVal : ThisVal, InEpilogue); in emitSPUpdate()
382 int M68kFrameLowering::mergeSPUpdates(MachineBasicBlock &MBB, in mergeSPUpdates() argument
385 if ((MergeWithPrevious && MBBI == MBB.begin()) || in mergeSPUpdates()
386 (!MergeWithPrevious && MBBI == MBB.end())) in mergeSPUpdates()
395 if (!MergeWithPrevious && NI != MBB.end() && in mergeSPUpdates()
404 MBB.erase(PI); in mergeSPUpdates()
410 MBB.erase(PI); in mergeSPUpdates()
419 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, in BuildStackAdjustment() argument
429 MachineInstrBuilder MI = BuildMI(MBB, MBBI, DL, TII.get(Opc), StackPtr) in BuildStackAdjustment()
438 void M68kFrameLowering::BuildCFI(MachineBasicBlock &MBB, in BuildCFI() argument
442 MachineFunction &MF = *MBB.getParent(); in BuildCFI()
444 BuildMI(MBB, MBBI, DL, TII.get(TargetOpcode::CFI_INSTRUCTION)) in BuildCFI()
449 MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, in emitPrologueCalleeSavedFrameMoves() argument
451 MachineFunction &MF = *MBB.getParent(); in emitPrologueCalleeSavedFrameMoves()
466 BuildCFI(MBB, MBBI, DL, in emitPrologueCalleeSavedFrameMoves()
472 MachineBasicBlock &MBB) const { in emitPrologue()
476 MachineBasicBlock::iterator MBBI = MBB.begin(); in emitPrologue()
505 BuildStackAdjustment(MBB, MBBI, DL, TailCallReturnAddrDelta, in emitPrologue()
546 BuildMI(MBB, MBBI, DL, TII.get(M68k::LINK16)) in emitPrologue()
555 BuildCFI(MBB, MBBI, DL, in emitPrologue()
561 BuildCFI(MBB, MBBI, DL, in emitPrologue()
570 BuildCFI(MBB, MBBI, DL, in emitPrologue()
586 while (MBBI != MBB.end() && MBBI->getFlag(MachineInstr::FrameSetup) && in emitPrologue()
595 BuildCFI(MBB, MBBI, DL, in emitPrologue()
605 BuildStackAlignAND(MBB, MBBI, DL, StackPtr, MaxAlign); in emitPrologue()
611 NumBytes -= mergeSPUpdates(MBB, MBBI, true); in emitPrologue()
615 emitSPUpdate(MBB, MBBI, -(int64_t)NumBytes, /*InEpilogue=*/false); in emitPrologue()
625 BuildMI(MBB, MBBI, DL, TII.get(M68k::MOV32aa), BasePtr) in emitPrologue()
632 M68k::addRegIndirectWithDisp(BuildMI(MBB, MBBI, DL, TII.get(Opm)), in emitPrologue()
646 MBB, MBBI, DL, in emitPrologue()
652 emitPrologueCalleeSavedFrameMoves(MBB, MBBI, DL); in emitPrologue()
669 MachineBasicBlock &MBB) const { in emitEpilogue()
672 MachineBasicBlock::iterator MBBI = MBB.getFirstTerminator(); in emitEpilogue()
674 if (MBBI != MBB.end()) in emitEpilogue()
677 if (MBBI != MBB.end()) in emitEpilogue()
703 while (MBBI != MBB.begin()) { in emitEpilogue()
715 if (MBBI != MBB.end()) in emitEpilogue()
721 NumBytes += mergeSPUpdates(MBB, MBBI, true); in emitEpilogue()
738 BuildMI(MBB, MBBI, DL, TII.get(Opc), StackPtr), FramePtr, false, in emitEpilogue()
742 BuildMI(MBB, MBBI, DL, TII.get(M68k::UNLK)) in emitEpilogue()
748 BuildMI(MBB, MBBI, DL, TII.get(M68k::UNLK)) in emitEpilogue()
753 emitSPUpdate(MBB, MBBI, NumBytes, /*InEpilogue=*/true); in emitEpilogue()
762 MBBI = MBB.getFirstTerminator(); in emitEpilogue()
765 Offset += mergeSPUpdates(MBB, MBBI, true); in emitEpilogue()
766 emitSPUpdate(MBB, MBBI, Offset, /*InEpilogue=*/true); in emitEpilogue()
831 MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, in spillCalleeSavedRegisters() argument
834 auto DL = MBB.findDebugLoc(MI); in spillCalleeSavedRegisters()
846 M68k::addFrameReference(BuildMI(MBB, MI, DL, TII.get(M68k::MOVM32pm)), FI) in spillCalleeSavedRegisters()
851 const MachineFunction &MF = *MBB.getParent(); in spillCalleeSavedRegisters()
857 MBB.addLiveIn(Reg); in spillCalleeSavedRegisters()
866 MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, in restoreCalleeSavedRegisters() argument
869 auto DL = MBB.findDebugLoc(MI); in restoreCalleeSavedRegisters()
881 BuildMI(MBB, MI, DL, TII.get(M68k::MOVM32mp)).addImm(Mask), FI) in restoreCalleeSavedRegisters()