66 lines · c
1//===-- XCoreFrameLowering.h - Frame info for XCore Target ------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains XCore frame information that doesn't fit anywhere else10// cleanly...11//12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_LIB_TARGET_XCORE_XCOREFRAMELOWERING_H15#define LLVM_LIB_TARGET_XCORE_XCOREFRAMELOWERING_H16 17#include "llvm/CodeGen/TargetFrameLowering.h"18#include "llvm/Target/TargetMachine.h"19 20namespace llvm {21 class XCoreSubtarget;22 23 class XCoreFrameLowering: public TargetFrameLowering {24 public:25 XCoreFrameLowering(const XCoreSubtarget &STI);26 27 /// emitProlog/emitEpilog - These methods insert prolog and epilog code into28 /// the function.29 void emitPrologue(MachineFunction &MF,30 MachineBasicBlock &MBB) const override;31 void emitEpilogue(MachineFunction &MF,32 MachineBasicBlock &MBB) const override;33 34 bool35 spillCalleeSavedRegisters(MachineBasicBlock &MBB,36 MachineBasicBlock::iterator MI,37 ArrayRef<CalleeSavedInfo> CSI,38 const TargetRegisterInfo *TRI) const override;39 bool40 restoreCalleeSavedRegisters(MachineBasicBlock &MBB,41 MachineBasicBlock::iterator MI,42 MutableArrayRef<CalleeSavedInfo> CSI,43 const TargetRegisterInfo *TRI) const override;44 45 MachineBasicBlock::iterator46 eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB,47 MachineBasicBlock::iterator I) const override;48 49 void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,50 RegScavenger *RS = nullptr) const override;51 52 void processFunctionBeforeFrameFinalized(MachineFunction &MF,53 RegScavenger *RS = nullptr) const override;54 55 //! Stack slot size (4 bytes)56 static int stackSlotSize() {57 return 4;58 }59 60 protected:61 bool hasFPImpl(const MachineFunction &MF) const override;62 };63}64 65#endif66