XCoreFrameLowering.h revision 226633
1101776Stjr//===-- XCoreFrameLowering.h - Frame info for XCore Target -------*- C++ -*-==// 2129583Stjr// 3101776Stjr// The LLVM Compiler Infrastructure 4101776Stjr// 5101776Stjr// This file is distributed under the University of Illinois Open Source 6101776Stjr// License. See LICENSE.TXT for details. 7101776Stjr// 8101776Stjr//===----------------------------------------------------------------------===// 9101776Stjr// 10101776Stjr// This file contains XCore frame information that doesn't fit anywhere else 11101776Stjr// cleanly... 12101776Stjr// 13101776Stjr//===----------------------------------------------------------------------===// 14101776Stjr 15101776Stjr#ifndef XCOREFRAMEINFO_H 16101776Stjr#define XCOREFRAMEINFO_H 17101776Stjr 18101776Stjr#include "llvm/Target/TargetFrameLowering.h" 19101776Stjr#include "llvm/Target/TargetMachine.h" 20101776Stjr 21101776Stjrnamespace llvm { 22101776Stjr class XCoreSubtarget; 23101776Stjr 24101776Stjr class XCoreFrameLowering: public TargetFrameLowering { 25101776Stjr const XCoreSubtarget &STI; 26101776Stjr public: 27101776Stjr XCoreFrameLowering(const XCoreSubtarget &STI); 28101776Stjr 29101776Stjr /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 30101776Stjr /// the function. 31101776Stjr void emitPrologue(MachineFunction &MF) const; 32103539Stjr void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 33101776Stjr 34103523Stjr bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 35101776Stjr MachineBasicBlock::iterator MI, 36101776Stjr const std::vector<CalleeSavedInfo> &CSI, 37101776Stjr const TargetRegisterInfo *TRI) const; 38101776Stjr bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, 39101776Stjr MachineBasicBlock::iterator MI, 40103676Stjr const std::vector<CalleeSavedInfo> &CSI, 41103676Stjr const TargetRegisterInfo *TRI) const; 42103676Stjr 43101776Stjr bool hasFP(const MachineFunction &MF) const; 44103676Stjr 45101776Stjr void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, 46103523Stjr RegScavenger *RS = NULL) const; 47103523Stjr 48101776Stjr void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; 49121851Stjr 50103539Stjr //! Stack slot size (4 bytes) 51103539Stjr static int stackSlotSize() { 52103539Stjr return 4; 53103539Stjr } 54103539Stjr }; 55103539Stjr} 56103539Stjr 57103539Stjr#endif // XCOREFRAMEINFO_H 58129583Stjr