Lines Matching refs:AFI
254 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in getArgumentStackToRestore() local
269 ArgumentPopSize = AFI->getArgumentStackToRestore(); in getArgumentStackToRestore()
388 static void emitAligningInstructions(MachineFunction &MF, ARMFunctionInfo *AFI, in emitAligningInstructions() argument
400 assert(!AFI->isThumb1OnlyFunction() && "Thumb1 not supported"); in emitAligningInstructions()
401 if (!AFI->isThumbFunction()) { in emitAligningInstructions()
455 static int getMaxFPOffset(const ARMSubtarget &STI, const ARMFunctionInfo &AFI) { in getMaxFPOffset() argument
458 if (AFI.isThumb1OnlyFunction()) in getMaxFPOffset()
459 return -AFI.getArgRegsSaveSize() - (2 * 4); in getMaxFPOffset()
462 int FPCXTSaveSize = (STI.hasV8_1MMainlineOps() && AFI.isCmseNSEntryFunction()) ? 4 : 0; in getMaxFPOffset()
463 return - FPCXTSaveSize - AFI.getArgRegsSaveSize() - (8 * 4); in getMaxFPOffset()
470 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in emitPrologue() local
477 assert(!AFI->isThumb1OnlyFunction() && in emitPrologue()
479 bool isARM = !AFI->isThumbFunction(); in emitPrologue()
481 unsigned ArgRegsSaveSize = AFI->getArgRegsSaveSize(); in emitPrologue()
513 if (!AFI->hasStackFrame() && in emitPrologue()
560 if (Reg < ARM::D8 || Reg >= ARM::D8 + AFI->getNumAlignedDPRCS2Regs()) in emitPrologue()
591 assert(getMaxFPOffset(STI, *AFI) <= FPOffset && in emitPrologue()
594 AFI->setFramePtrSpillOffset(MFI.getObjectOffset(FramePtrSpillFI) + in emitPrologue()
597 AFI->setGPRCalleeSavedArea1Offset(GPRCS1Offset); in emitPrologue()
598 AFI->setGPRCalleeSavedArea2Offset(GPRCS2Offset); in emitPrologue()
599 AFI->setDPRCalleeSavedAreaOffset(DPRCSOffset); in emitPrologue()
632 if (AFI->getNumAlignedDPRCS2Regs() > 0) { in emitPrologue()
633 MBBI = skipAlignedDPRCS2Spills(MBBI, AFI->getNumAlignedDPRCS2Regs()); in emitPrologue()
691 if (AFI->getNumAlignedDPRCS2Regs() == 0 && in emitPrologue()
709 AFI->setShouldRestoreSPFromFP(true); in emitPrologue()
721 emitRegPlusImmediate(!AFI->isThumbFunction(), MBB, AfterPush, in emitPrologue()
812 (Reg < ARM::D8 || Reg >= ARM::D8 + AFI->getNumAlignedDPRCS2Regs())) { in emitPrologue()
832 AFI->getFramePtrSpillOffset()); in emitPrologue()
834 AFI->setFPCXTSaveAreaSize(FPCXTSaveSize); in emitPrologue()
835 AFI->setGPRCalleeSavedArea1Size(GPRCS1Size); in emitPrologue()
836 AFI->setGPRCalleeSavedArea2Size(GPRCS2Size); in emitPrologue()
837 AFI->setDPRCalleeSavedGapSize(DPRGapSize); in emitPrologue()
838 AFI->setDPRCalleeSavedAreaSize(DPRCSSize); in emitPrologue()
844 if (!AFI->getNumAlignedDPRCS2Regs() && RegInfo->hasStackRealignment(MF)) { in emitPrologue()
846 assert(!AFI->isThumb1OnlyFunction()); in emitPrologue()
847 if (!AFI->isThumbFunction()) { in emitPrologue()
848 emitAligningInstructions(MF, AFI, TII, MBB, MBBI, dl, ARM::SP, MaxAlign, in emitPrologue()
861 emitAligningInstructions(MF, AFI, TII, MBB, MBBI, dl, ARM::R4, MaxAlign, in emitPrologue()
868 AFI->setShouldRestoreSPFromFP(true); in emitPrologue()
892 AFI->setShouldRestoreSPFromFP(true); in emitPrologue()
898 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in emitEpilogue() local
902 assert(!AFI->isThumb1OnlyFunction() && in emitEpilogue()
904 bool isARM = !AFI->isThumbFunction(); in emitEpilogue()
908 unsigned ReservedArgStack = AFI->getArgRegsSaveSize(); in emitEpilogue()
925 if (!AFI->hasStackFrame()) { in emitEpilogue()
942 AFI->getFPCXTSaveAreaSize() + in emitEpilogue()
943 AFI->getGPRCalleeSavedArea1Size() + in emitEpilogue()
944 AFI->getGPRCalleeSavedArea2Size() + in emitEpilogue()
945 AFI->getDPRCalleeSavedGapSize() + in emitEpilogue()
946 AFI->getDPRCalleeSavedAreaSize()); in emitEpilogue()
950 if (AFI->shouldRestoreSPFromFP()) { in emitEpilogue()
951 NumBytes = AFI->getFramePtrSpillOffset() - NumBytes; in emitEpilogue()
994 if (MBBI != MBB.end() && AFI->getDPRCalleeSavedAreaSize()) { in emitEpilogue()
1001 if (AFI->getDPRCalleeSavedGapSize()) { in emitEpilogue()
1002 assert(AFI->getDPRCalleeSavedGapSize() == 4 && in emitEpilogue()
1004 emitSPUpdate(isARM, MBB, MBBI, dl, TII, AFI->getDPRCalleeSavedGapSize(), in emitEpilogue()
1008 if (AFI->getGPRCalleeSavedArea2Size()) MBBI++; in emitEpilogue()
1009 if (AFI->getGPRCalleeSavedArea1Size()) MBBI++; in emitEpilogue()
1010 if (AFI->getFPCXTSaveAreaSize()) MBBI++; in emitEpilogue()
1038 const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in ResolveFrameIndexReference() local
1040 int FPOffset = Offset - AFI->getFramePtrSpillOffset(); in ResolveFrameIndexReference()
1067 if (hasFP(MF) && AFI->hasStackFrame()) { in ResolveFrameIndexReference()
1075 if (AFI->isThumb2Function()) { in ResolveFrameIndexReference()
1084 } else if (AFI->isThumbFunction()) { in ResolveFrameIndexReference()
1094 if (AFI->isThumb2Function() && FPOffset >= -255 && FPOffset < 0) { in ResolveFrameIndexReference()
1201 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in emitPopInst() local
1233 !isCmseEntry && !isTrap && AFI->getArgumentStackToRestore() == 0 && in emitPopInst()
1238 LdmOpc = AFI->isThumbFunction() ? ARM::t2LDMIA_RET : ARM::LDMIA_RET; in emitPopInst()
1312 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in emitAlignedDPRCS2Spills() local
1346 bool isThumb = AFI->isThumbFunction(); in emitAlignedDPRCS2Spills()
1347 assert(!AFI->isThumb1OnlyFunction() && "Can't realign stack for thumb1"); in emitAlignedDPRCS2Spills()
1348 AFI->setShouldRestoreSPFromFP(true); in emitAlignedDPRCS2Spills()
1365 emitAligningInstructions(MF, AFI, TII, MBB, MI, DL, ARM::R4, MaxAlign, true); in emitAlignedDPRCS2Spills()
1485 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in emitAlignedDPRCS2Restores() local
1502 bool isThumb = AFI->isThumbFunction(); in emitAlignedDPRCS2Restores()
1503 assert(!AFI->isThumb1OnlyFunction() && "Can't realign stack for thumb1"); in emitAlignedDPRCS2Restores()
1576 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in spillCalleeSavedRegisters() local
1578 unsigned PushOpc = AFI->isThumbFunction() ? ARM::t2STMDB_UPD : ARM::STMDB_UPD; in spillCalleeSavedRegisters()
1579 unsigned PushOneOpc = AFI->isThumbFunction() ? in spillCalleeSavedRegisters()
1582 unsigned NumAlignedDPRCS2Regs = AFI->getNumAlignedDPRCS2Regs(); in spillCalleeSavedRegisters()
1616 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in restoreCalleeSavedRegisters() local
1617 bool isVarArg = AFI->getArgRegsSaveSize() > 0; in restoreCalleeSavedRegisters()
1618 unsigned NumAlignedDPRCS2Regs = AFI->getNumAlignedDPRCS2Regs(); in restoreCalleeSavedRegisters()
1625 unsigned PopOpc = AFI->isThumbFunction() ? ARM::t2LDMIA_UPD : ARM::LDMIA_UPD; in restoreCalleeSavedRegisters()
1626 unsigned LdrOpc = AFI->isThumbFunction() ? ARM::t2LDR_POST :ARM::LDR_POST_IMM; in restoreCalleeSavedRegisters()
1660 const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in estimateRSStackSizeLimit() local
1710 if (TFI->hasFP(MF) && AFI->hasStackFrame()) in estimateRSStackSizeLimit()
1814 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in determineCalleeSaves() local
1826 if (AFI->isThumb2Function() && in determineCalleeSaves()
1841 if (AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
1843 if (AFI->getArgRegsSaveSize() > 0) in determineCalleeSaves()
1865 if (STI.hasV8_1MMainlineOps() && AFI->isCmseNSEntryFunction()) in determineCalleeSaves()
1937 if (!LRSpilled && AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
1973 if (AFI->hasStackFrame()) in determineCalleeSaves()
1984 if (AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
2026 int MaxFPOffset = getMaxFPOffset(STI, *AFI); in determineCalleeSaves()
2038 AFI->setHasStackFrame(true); in determineCalleeSaves()
2073 if (AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
2100 int ExitRegDeficit = AFI->getReturnRegsCount() - 4; in determineCalleeSaves()
2101 LLVM_DEBUG(dbgs() << AFI->getReturnRegsCount() in determineCalleeSaves()
2191 bool ExpensiveLRRestore = AFI->isThumb1OnlyFunction() && MFI.hasTailCall(); in determineCalleeSaves()
2205 !AFI->isThumb1OnlyFunction()) in determineCalleeSaves()
2220 if (!AFI->isThumbFunction() || in determineCalleeSaves()
2228 !(Reg == ARM::LR && AFI->isThumb1OnlyFunction())) in determineCalleeSaves()
2233 } else if (!UnspilledCS2GPRs.empty() && !AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
2256 (!AFI->isThumb1OnlyFunction() || isARMLowRegister(Reg))) { in determineCalleeSaves()
2262 if (!AFI->isThumb1OnlyFunction()) { in determineCalleeSaves()
2292 AFI->setLRIsSpilled(SavedRegs.test(ARM::LR)); in determineCalleeSaves()
2302 const ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in getCalleeSaves() local
2303 if (AFI->getPreservesR0()) in getCalleeSaves()
2333 ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>(); in eliminateCallFramePseudoInstr() local
2334 bool isARM = !AFI->isThumbFunction(); in eliminateCallFramePseudoInstr()
2340 assert(!AFI->isThumb1OnlyFunction() && in eliminateCallFramePseudoInstr()