brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · b06a6f9 Raw
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