1235633Sdim//===-- MipsFrameLowering.h - Define frame lowering for Mips ----*- 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// 11218885Sdim// 12218885Sdim//===----------------------------------------------------------------------===// 13218885Sdim 14221345Sdim#ifndef MIPS_FRAMEINFO_H 15221345Sdim#define MIPS_FRAMEINFO_H 16218885Sdim 17218885Sdim#include "Mips.h" 18218885Sdim#include "MipsSubtarget.h" 19218885Sdim#include "llvm/Target/TargetFrameLowering.h" 20218885Sdim 21218885Sdimnamespace llvm { 22218885Sdim class MipsSubtarget; 23218885Sdim 24218885Sdimclass MipsFrameLowering : public TargetFrameLowering { 25218885Sdimprotected: 26218885Sdim const MipsSubtarget &STI; 27218885Sdim 28218885Sdimpublic: 29252723Sdim explicit MipsFrameLowering(const MipsSubtarget &sti, unsigned Alignment) 30252723Sdim : TargetFrameLowering(StackGrowsDown, Alignment, 0, Alignment), STI(sti) {} 31218885Sdim 32245431Sdim static const MipsFrameLowering *create(MipsTargetMachine &TM, 33245431Sdim const MipsSubtarget &ST); 34218885Sdim 35218885Sdim bool hasFP(const MachineFunction &MF) const; 36218885Sdim 37245431Sdimprotected: 38245431Sdim uint64_t estimateStackSize(const MachineFunction &MF) const; 39218885Sdim}; 40218885Sdim 41252723Sdim/// Create MipsFrameLowering objects. 42245431Sdimconst MipsFrameLowering *createMips16FrameLowering(const MipsSubtarget &ST); 43245431Sdimconst MipsFrameLowering *createMipsSEFrameLowering(const MipsSubtarget &ST); 44245431Sdim 45218885Sdim} // End llvm namespace 46218885Sdim 47218885Sdim#endif 48