1235633Sdim//===-- XCoreFrameLowering.h - Frame info for XCore Target ------*- C++ -*-===// 2218885Sdim// 3218885Sdim// The LLVM Compiler Infrastructure 4218885Sdim// 5218885Sdim// This file is distributed under the University of Illinois Open Source 6218885Sdim// License. See LICENSE.TXT for details. 7218885Sdim// 8218885Sdim//===----------------------------------------------------------------------===// 9218885Sdim// 10218885Sdim// This file contains XCore frame information that doesn't fit anywhere else 11218885Sdim// cleanly... 12218885Sdim// 13218885Sdim//===----------------------------------------------------------------------===// 14218885Sdim 15218885Sdim#ifndef XCOREFRAMEINFO_H 16218885Sdim#define XCOREFRAMEINFO_H 17218885Sdim 18218885Sdim#include "llvm/Target/TargetFrameLowering.h" 19218885Sdim#include "llvm/Target/TargetMachine.h" 20218885Sdim 21218885Sdimnamespace llvm { 22218885Sdim class XCoreSubtarget; 23218885Sdim 24218885Sdim class XCoreFrameLowering: public TargetFrameLowering { 25218885Sdim public: 26218885Sdim XCoreFrameLowering(const XCoreSubtarget &STI); 27218885Sdim 28218885Sdim /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 29218885Sdim /// the function. 30218885Sdim void emitPrologue(MachineFunction &MF) const; 31218885Sdim void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 32218885Sdim 33218885Sdim bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 34218885Sdim MachineBasicBlock::iterator MI, 35218885Sdim const std::vector<CalleeSavedInfo> &CSI, 36218885Sdim const TargetRegisterInfo *TRI) const; 37218885Sdim bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, 38218885Sdim MachineBasicBlock::iterator MI, 39218885Sdim const std::vector<CalleeSavedInfo> &CSI, 40218885Sdim const TargetRegisterInfo *TRI) const; 41218885Sdim 42252723Sdim void eliminateCallFramePseudoInstr(MachineFunction &MF, 43252723Sdim MachineBasicBlock &MBB, 44252723Sdim MachineBasicBlock::iterator I) const; 45252723Sdim 46218885Sdim bool hasFP(const MachineFunction &MF) const; 47218885Sdim 48218885Sdim void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, 49218885Sdim RegScavenger *RS = NULL) const; 50218885Sdim 51218885Sdim //! Stack slot size (4 bytes) 52218885Sdim static int stackSlotSize() { 53218885Sdim return 4; 54218885Sdim } 55218885Sdim }; 56218885Sdim} 57218885Sdim 58218885Sdim#endif // XCOREFRAMEINFO_H 59