[llvm] [PATCH] [Xtensa] Implement FrameLowering methods and stack operation lowering. (PR #92960)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed May 22 03:41:45 PDT 2024
================
@@ -57,3 +205,31 @@ MachineBasicBlock::iterator XtensaFrameLowering::eliminateCallFramePseudoInstr(
return MBB.erase(I);
}
+
+void XtensaFrameLowering::determineCalleeSaves(MachineFunction &MF,
+ BitVector &SavedRegs,
+ RegScavenger *RS) const {
+ MachineFrameInfo &MFI = MF.getFrameInfo();
+ const XtensaRegisterInfo *RegInfo = static_cast<const XtensaRegisterInfo *>(
+ MF.getSubtarget().getRegisterInfo());
+ unsigned FP = RegInfo->getFrameRegister(MF);
+
+ TargetFrameLowering::determineCalleeSaves(MF, SavedRegs, RS);
+
+ // Mark $fp as used if function has dedicated frame pointer.
+ if (hasFP(MF))
+ SavedRegs.set(FP);
+
+ // Set scavenging frame index if necessary.
+ uint64_t MaxSPOffset = MFI.estimateStackSize(MF);
+
+ if (isInt<12>(MaxSPOffset))
+ return;
+
+ const TargetRegisterClass &RC = Xtensa::ARRegClass;
+ const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo();
----------------
arsenm wrote:
Ditto
https://github.com/llvm/llvm-project/pull/92960
More information about the llvm-commits
mailing list