• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/contrib/llvm-project/llvm/lib/Target/ARM/

Lines Matching refs:MBBI

68                              MachineBasicBlock::iterator &MBBI,
84 BuildMI(MBB, MBBI, dl, TII.get(ARM::t2MOVi32imm), ScratchReg)
87 MRI.emitLoadConstPool(MBB, MBBI, dl, ScratchReg, 0, NumBytes, ARMCC::AL,
90 BuildMI(MBB, MBBI, dl, TII.get(ARM::tADDhirr), ARM::SP)
99 emitThumbRegPlusImmediate(MBB, MBBI, dl, ARM::SP, ARM::SP, NumBytes, TII,
105 MachineBasicBlock::iterator &MBBI,
109 emitThumbRegPlusImmediate(MBB, MBBI, dl, ARM::SP, ARM::SP, NumBytes, TII,
149 MachineBasicBlock::iterator MBBI = MBB.begin();
183 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, -ArgRegsSaveSize,
188 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
195 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo,
201 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
235 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPUSH) {
236 ++MBBI;
255 tryFoldSPUpdateIntoPushPop(STI, MF, &*std::prev(MBBI), NumBytes)) {
265 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
293 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
304 BuildMI(MBB, MBBI, dl, TII.get(ARM::tADDrSPi), FramePtr)
313 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
320 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
335 MachineBasicBlock::iterator OldMBBI = MBBI;
337 while (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tMOVr)
338 MBBI++;
339 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPUSH) {
340 MBBI++;
344 // the prologue. Reset MBBI back to the last PUSH of the prologue.
345 MBBI = OldMBBI;
362 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
386 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, -NumBytes,
392 BuildMI(MBB, MBBI, dl, TII.get(TargetOpcode::CFI_INSTRUCTION))
414 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::R4)
418 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSRri), ARM::R4)
424 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSLri), ARM::R4)
430 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP)
442 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), BasePtr)
474 MachineBasicBlock::iterator MBBI = MBB.getFirstTerminator();
475 DebugLoc dl = MBBI != MBB.end() ? MBBI->getDebugLoc() : DebugLoc();
492 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo,
496 // Unwind MBBI to point to first LDR / VLDRD.
497 if (MBBI != MBB.begin()) {
499 --MBBI;
500 while (MBBI != MBB.begin() && isCSRestore(*MBBI, CSRegs));
501 if (!isCSRestore(*MBBI, CSRegs))
502 ++MBBI;
519 emitThumbRegPlusImmediate(MBB, MBBI, dl, ARM::R4, FramePtr, -NumBytes,
521 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP)
525 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP)
541 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tBX_RET &&
542 &MBB.front() != &*MBBI && std::prev(MBBI)->getOpcode() == ARM::tPOP) {
543 MachineBasicBlock::iterator PMBBI = std::prev(MBBI);
547 } else if (!tryFoldSPUpdateIntoPushPop(STI, MF, &*MBBI, NumBytes))
548 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, NumBytes,
611 // If MBBI is a return instruction, or is a tPOP followed by a return
618 auto MBBI = MBB.getFirstTerminator();
621 if (MBBI != MBB.end() && MBBI->getOpcode() != ARM::tB)
622 CanRestoreDirectly = (MBBI->getOpcode() == ARM::tBX_RET ||
623 MBBI->getOpcode() == ARM::tPOP_RET);
625 auto MBBI_prev = MBBI;
630 MBBI = MBBI_prev; // Replace the final tPOP with a tPOP_RET.
637 if (!DoIt || MBBI->getOpcode() == ARM::tPOP_RET)
640 BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII.get(ARM::tPOP_RET))
643 for (auto MO: MBBI->operands())
648 MBB.erase(MBBI);
666 if (MBBI != MBB.end()) {
667 dl = MBBI->getDebugLoc();
669 while (InstUpToMBBI != MBBI)
671 // We want to have the liveness right before MBBI.
702 if (!PopReg && MBBI != MBB.begin()) {
703 auto PrevMBBI = MBBI;
709 MBBI = PrevMBBI;
723 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLDRspi))
726 .addImm(MBBI->getNumExplicitOperands() - 2)
729 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr))
734 MBBI++;
736 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo,
745 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr))
751 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPOP_RET) {
755 BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII.get(ARM::tPOP))
758 for (auto MO: MBBI->operands())
769 MBB.erase(MBBI);
770 MBBI = BuildMI(MBB, MBB.end(), dl, TII.get(ARM::tBX_RET))
775 BuildMI(MBB, MBBI, dl, TII.get(ARM::tPOP))
779 emitPrologueEpilogueSPUpdate(MBB, MBBI, TII, dl, *RegInfo, ArgRegsSaveSize,
782 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr))
788 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr))