Path: blob/main/contrib/llvm-project/llvm/lib/Target/Xtensa/XtensaFrameLowering.h
35271 views
//===- XtensaFrameLowering.h - Define frame lowering for Xtensa --*- C++ -*-==//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===-----------------------------------------------------------------------==//78#ifndef LLVM_LIB_TARGET_XTENSA_XTENSAFRAMELOWERING_H9#define LLVM_LIB_TARGET_XTENSA_XTENSAFRAMELOWERING_H1011#include "llvm/CodeGen/TargetFrameLowering.h"1213namespace llvm {14class XtensaTargetMachine;15class XtensaSubtarget;16class XtensaInstrInfo;17class XtensaRegisterInfo;1819class XtensaFrameLowering : public TargetFrameLowering {20const XtensaInstrInfo &TII;21const XtensaRegisterInfo *TRI;2223public:24XtensaFrameLowering(const XtensaSubtarget &STI);2526bool hasFP(const MachineFunction &MF) const override;2728/// emitProlog/emitEpilog - These methods insert prolog and epilog code into29/// the function.30void emitPrologue(MachineFunction &, MachineBasicBlock &) const override;31void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;3233MachineBasicBlock::iterator34eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,35MachineBasicBlock::iterator I) const override;3637bool spillCalleeSavedRegisters(MachineBasicBlock &MBB,38MachineBasicBlock::iterator MI,39ArrayRef<CalleeSavedInfo> CSI,40const TargetRegisterInfo *TRI) const override;41bool42restoreCalleeSavedRegisters(MachineBasicBlock &MBB,43MachineBasicBlock::iterator MI,44MutableArrayRef<CalleeSavedInfo> CSI,45const TargetRegisterInfo *TRI) const override;4647void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,48RegScavenger *RS) const override;4950void processFunctionBeforeFrameFinalized(MachineFunction &MF,51RegScavenger *RS) const override;52};5354} // namespace llvm5556#endif /* LLVM_LIB_TARGET_XTENSA_XTENSAFRAMELOWERING_H */575859