13447SN/A//===-- Mips16FrameLowering.h - Mips16 frame lowering  ----------*- C++ -*-===//
23447SN/A//
33447SN/A// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43447SN/A// See https://llvm.org/LICENSE.txt for license information.
53447SN/A// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63447SN/A//
73447SN/A//===----------------------------------------------------------------------===//
83447SN/A//
93447SN/A//
103447SN/A//
113447SN/A//===----------------------------------------------------------------------===//
123447SN/A
133447SN/A#ifndef LLVM_LIB_TARGET_MIPS_MIPS16FRAMELOWERING_H
143447SN/A#define LLVM_LIB_TARGET_MIPS_MIPS16FRAMELOWERING_H
153447SN/A
163447SN/A#include "MipsFrameLowering.h"
173447SN/A
183447SN/Anamespace llvm {
193447SN/Aclass Mips16FrameLowering : public MipsFrameLowering {
203447SN/Apublic:
213447SN/A  explicit Mips16FrameLowering(const MipsSubtarget &STI);
223447SN/A
233447SN/A  /// emitProlog/emitEpilog - These methods insert prolog and epilog code into
243447SN/A  /// the function.
253447SN/A  void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
263447SN/A  void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
273447SN/A
283447SN/A  bool spillCalleeSavedRegisters(MachineBasicBlock &MBB,
2911707Stpivovarova                                 MachineBasicBlock::iterator MI,
3011707Stpivovarova                                 ArrayRef<CalleeSavedInfo> CSI,
3111707Stpivovarova                                 const TargetRegisterInfo *TRI) const override;
323447SN/A
333447SN/A  bool
3411707Stpivovarova  restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
3511707Stpivovarova                              MachineBasicBlock::iterator MI,
363447SN/A                              MutableArrayRef<CalleeSavedInfo> CSI,
373447SN/A                              const TargetRegisterInfo *TRI) const override;
383447SN/A
393447SN/A  bool hasReservedCallFrame(const MachineFunction &MF) const override;
403447SN/A
413447SN/A  void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,
423447SN/A                            RegScavenger *RS) const override;
433447SN/A};
443447SN/A
453447SN/A} // End llvm namespace
463447SN/A
473447SN/A#endif
483447SN/A