Lines Matching refs:ARM
78 if (ScratchReg == ARM::NoRegister) in emitPrologueEpilogueSPUpdate()
83 unsigned XOInstr = ST.useMovt() ? ARM::t2MOVi32imm : ARM::tMOVi32imm; in emitPrologueEpilogueSPUpdate()
90 BuildMI(MBB, MBBI, dl, TII.get(ARM::tADDhirr), ARM::SP) in emitPrologueEpilogueSPUpdate()
91 .addReg(ARM::SP) in emitPrologueEpilogueSPUpdate()
99 emitThumbRegPlusImmediate(MBB, MBBI, dl, ARM::SP, ARM::SP, NumBytes, TII, in emitPrologueEpilogueSPUpdate()
109 emitThumbRegPlusImmediate(MBB, MBBI, dl, ARM::SP, ARM::SP, NumBytes, TII, in emitCallSPUpdate()
136 if (Opc == ARM::ADJCALLSTACKDOWN || Opc == ARM::tADJCALLSTACKDOWN) { in eliminateCallFramePseudoInstr()
139 assert(Opc == ARM::ADJCALLSTACKUP || Opc == ARM::tADJCALLSTACKUP); in eliminateCallFramePseudoInstr()
184 ARM::NoRegister, MachineInstr::FrameSetup); in emitPrologue()
197 ARM::NoRegister, MachineInstr::FrameSetup); in emitPrologue()
208 bool HasFrameRecordArea = hasFP(MF) && ARM::hGPRRegClass.contains(FramePtr); in emitPrologue()
216 case ARM::R11: in emitPrologue()
222 case ARM::R8: in emitPrologue()
223 case ARM::R9: in emitPrologue()
224 case ARM::R10: in emitPrologue()
230 case ARM::LR: in emitPrologue()
236 case ARM::R4: in emitPrologue()
237 case ARM::R5: in emitPrologue()
238 case ARM::R6: in emitPrologue()
239 case ARM::R7: in emitPrologue()
257 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPUSH) { in emitPrologue()
267 while (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tMOVr && in emitPrologue()
270 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPUSH && in emitPrologue()
316 BuildMI(MBB, AfterPush, dl, TII.get(ARM::tMOVr), FramePtr) in emitPrologue()
317 .addReg(ARM::SP) in emitPrologue()
323 BuildMI(MBB, AfterPush, dl, TII.get(ARM::tADDrSPi), FramePtr) in emitPrologue()
324 .addReg(ARM::SP) in emitPrologue()
364 case ARM::R8: in emitPrologue()
365 case ARM::R9: in emitPrologue()
366 case ARM::R10: in emitPrologue()
367 case ARM::R11: in emitPrologue()
368 case ARM::R12: in emitPrologue()
372 case ARM::R0: in emitPrologue()
373 case ARM::R1: in emitPrologue()
374 case ARM::R2: in emitPrologue()
375 case ARM::R3: in emitPrologue()
376 case ARM::R4: in emitPrologue()
377 case ARM::R5: in emitPrologue()
378 case ARM::R6: in emitPrologue()
379 case ARM::R7: in emitPrologue()
380 case ARM::LR: in emitPrologue()
398 case ARM::R8: in emitPrologue()
399 case ARM::R9: in emitPrologue()
400 case ARM::R10: in emitPrologue()
401 case ARM::R11: in emitPrologue()
402 case ARM::R12: { in emitPrologue()
422 unsigned ScratchRegister = ARM::NoRegister; in emitPrologue()
458 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::R4) in emitPrologue()
459 .addReg(ARM::SP, RegState::Kill) in emitPrologue()
462 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSRri), ARM::R4) in emitPrologue()
463 .addDef(ARM::CPSR) in emitPrologue()
464 .addReg(ARM::R4, RegState::Kill) in emitPrologue()
468 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLSLri), ARM::R4) in emitPrologue()
469 .addDef(ARM::CPSR) in emitPrologue()
470 .addReg(ARM::R4, RegState::Kill) in emitPrologue()
474 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP) in emitPrologue()
475 .addReg(ARM::R4, RegState::Kill) in emitPrologue()
486 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), BasePtr) in emitPrologue()
487 .addReg(ARM::SP) in emitPrologue()
521 NumBytes - ArgRegsSaveSize, ARM::NoRegister, in emitEpilogue()
542 unsigned ScratchRegister = ARM::NoRegister; in emitEpilogue()
558 assert(ScratchRegister != ARM::NoRegister && in emitEpilogue()
562 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP) in emitEpilogue()
567 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr), ARM::SP) in emitEpilogue()
572 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tBX_RET && in emitEpilogue()
573 &MBB.front() != &*MBBI && std::prev(MBBI)->getOpcode() == ARM::tPOP) { in emitEpilogue()
607 if (CSI.getReg() == ARM::LR) in needPopSpecialFixUp()
652 if (MBBI != MBB.end() && MBBI->getOpcode() != ARM::tB) in emitPopSpecialFixUp()
653 CanRestoreDirectly = (MBBI->getOpcode() == ARM::tBX_RET || in emitPopSpecialFixUp()
654 MBBI->getOpcode() == ARM::tPOP_RET); in emitPopSpecialFixUp()
658 assert(MBBI_prev->getOpcode() == ARM::tPOP); in emitPopSpecialFixUp()
660 if ((*MBB.succ_begin())->begin()->getOpcode() == ARM::tBX_RET) in emitPopSpecialFixUp()
668 if (!DoIt || MBBI->getOpcode() == ARM::tPOP_RET) in emitPopSpecialFixUp()
671 BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII.get(ARM::tPOP_RET)) in emitPopSpecialFixUp()
678 MIB.addReg(ARM::PC, RegState::Define); in emitPopSpecialFixUp()
712 TRI.getAllocatableSet(MF, TRI.getRegClass(ARM::tGPRRegClassID)); in emitPopSpecialFixUp()
716 if (STI.getFramePointerReg() == ARM::R7) in emitPopSpecialFixUp()
717 PopFriendly.set(ARM::R7); in emitPopSpecialFixUp()
723 TRI.getAllocatableSet(MF, TRI.getRegClass(ARM::hGPRRegClassID)); in emitPopSpecialFixUp()
725 GPRsNoLRSP.reset(ARM::LR); in emitPopSpecialFixUp()
726 GPRsNoLRSP.reset(ARM::SP); in emitPopSpecialFixUp()
727 GPRsNoLRSP.reset(ARM::PC); in emitPopSpecialFixUp()
738 if (PrevMBBI->getOpcode() == ARM::tPOP) { in emitPopSpecialFixUp()
757 BuildMI(MBB, MBBI, dl, TII.get(ARM::tLDRspi)) in emitPopSpecialFixUp()
759 .addReg(ARM::SP) in emitPopSpecialFixUp()
764 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr)) in emitPopSpecialFixUp()
765 .addReg(ARM::LR, RegState::Define) in emitPopSpecialFixUp()
773 ArgRegsSaveSize + 4, ARM::NoRegister, in emitPopSpecialFixUp()
781 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr)) in emitPopSpecialFixUp()
788 if (MBBI != MBB.end() && MBBI->getOpcode() == ARM::tPOP_RET) { in emitPopSpecialFixUp()
792 BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII.get(ARM::tPOP)) in emitPopSpecialFixUp()
798 MO.getReg() != ARM::PC) { in emitPopSpecialFixUp()
808 MBBI = BuildMI(MBB, MBB.end(), dl, TII.get(ARM::tBX_RET)) in emitPopSpecialFixUp()
814 BuildMI(MBB, MBBI, dl, TII.get(ARM::tPOP)) in emitPopSpecialFixUp()
820 ARM::NoRegister, MachineInstr::FrameDestroy); in emitPopSpecialFixUp()
822 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr)) in emitPopSpecialFixUp()
823 .addReg(ARM::LR, RegState::Define) in emitPopSpecialFixUp()
829 BuildMI(MBB, MBBI, dl, TII.get(ARM::tMOVr)) in emitPopSpecialFixUp()
838 static const SmallVector<Register> OrderedLowRegs = {ARM::R4, ARM::R5, ARM::R6,
839 ARM::R7, ARM::LR};
840 static const SmallVector<Register> OrderedHighRegs = {ARM::R8, ARM::R9,
841 ARM::R10, ARM::R11};
843 ARM::R0, ARM::R1, ARM::R2, ARM::R3, ARM::R4,
844 ARM::R5, ARM::R6, ARM::R7, ARM::LR};
850 if (ARM::tGPRRegClass.contains(Reg) || Reg == ARM::LR) { in splitLowAndHighRegs()
852 } else if (ARM::hGPRRegClass.contains(Reg) && Reg != ARM::LR) { in splitLowAndHighRegs()
882 BuildMI(MBB, MI, DL, TII.get(ARM::tPUSH)).add(predOps(ARMCC::AL)); in pushRegsToStack()
917 MachineInstrBuilder PushMIB = BuildMI(MF, DL, TII.get(ARM::tPUSH)) in pushRegsToStack()
930 BuildMI(MBB, MI, DL, TII.get(ARM::tMOVr)) in pushRegsToStack()
989 LowScratchReg = ARM::R0; in popRegsFromStack()
990 BuildMI(MBB, MI, DL, TII.get(ARM::tMOVr)) in popRegsFromStack()
991 .addReg(ARM::R12, RegState::Define) in popRegsFromStack()
1006 MachineInstrBuilder PopMIB = BuildMI(MBB, MI, DL, TII.get(ARM::tPOP)) in popRegsFromStack()
1016 BuildMI(MBB, MI, DL, TII.get(ARM::tMOVr)) in popRegsFromStack()
1033 BuildMI(MBB, MI, DL, TII.get(ARM::tMOVr)) in popRegsFromStack()
1035 .addReg(ARM::R12, RegState::Kill) in popRegsFromStack()
1042 MachineInstrBuilder MIB = BuildMI(MF, DL, TII.get(ARM::tPOP)) in popRegsFromStack()
1051 if (Reg == ARM::LR) { in popRegsFromStack()
1053 MI->getOpcode() == ARM::TCRETURNdi || in popRegsFromStack()
1054 MI->getOpcode() == ARM::TCRETURNri) in popRegsFromStack()
1074 Reg = ARM::PC; in popRegsFromStack()
1075 (*MIB).setDesc(TII.get(ARM::tPOP_RET)); in popRegsFromStack()
1106 bool NeedsFrameRecordPush = hasFP(MF) && ARM::hGPRRegClass.contains(FPReg); in spillCalleeSavedRegisters()
1112 if (NeedsFrameRecordPush && (Reg == FPReg || Reg == ARM::LR)) in spillCalleeSavedRegisters()
1118 pushRegsToStack(MBB, MI, TII, FrameRecord, {ARM::LR}); in spillCalleeSavedRegisters()
1125 if ((ARM::tGPRRegClass.contains(Reg) || Reg == ARM::LR) && in spillCalleeSavedRegisters()
1128 for (unsigned ArgReg : {ARM::R0, ARM::R1, ARM::R2, ARM::R3}) in spillCalleeSavedRegisters()
1153 bool NeedsFrameRecordPop = hasFP(MF) && ARM::hGPRRegClass.contains(FPReg); in restoreCalleeSavedRegisters()
1159 if (NeedsFrameRecordPop && (Reg == FPReg || Reg == ARM::LR)) in restoreCalleeSavedRegisters()
1164 if (Reg == ARM::LR) in restoreCalleeSavedRegisters()
1174 if ((ARM::tGPRRegClass.contains(Reg)) && !(hasFP(MF) && Reg == FPReg)) in restoreCalleeSavedRegisters()
1177 if (Terminator != MBB.end() && Terminator->getOpcode() == ARM::tBX_RET) { in restoreCalleeSavedRegisters()
1178 UnusedReturnRegs.insert(ARM::R0); in restoreCalleeSavedRegisters()
1179 UnusedReturnRegs.insert(ARM::R1); in restoreCalleeSavedRegisters()
1180 UnusedReturnRegs.insert(ARM::R2); in restoreCalleeSavedRegisters()
1181 UnusedReturnRegs.insert(ARM::R3); in restoreCalleeSavedRegisters()
1195 assert((!SpilledGPRs.count(ARM::LR) || FrameRecord.empty()) && in restoreCalleeSavedRegisters()