1bb481f882093fb738d2bb15610c79364bada5496Jia Liu//===-- MipsFrameLowering.h - Define frame lowering for Mips ----*- C++ -*-===// 233464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 333464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// The LLVM Compiler Infrastructure 433464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 533464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// This file is distributed under the University of Illinois Open Source 633464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// License. See LICENSE.TXT for details. 733464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 84552c9a3b34ad9b2085635266348d0d9b95514a6Akira Hatanaka//===----------------------------------------------------------------------===// 933464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 1033464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 1133464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov// 124552c9a3b34ad9b2085635266348d0d9b95514a6Akira Hatanaka//===----------------------------------------------------------------------===// 1333464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 1449eaf76c53e47c838703916a2119b845c59b36a7Bruno Cardoso Lopes#ifndef MIPS_FRAMEINFO_H 1549eaf76c53e47c838703916a2119b845c59b36a7Bruno Cardoso Lopes#define MIPS_FRAMEINFO_H 1633464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 1733464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov#include "Mips.h" 1833464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov#include "MipsSubtarget.h" 1916c29b5f285f375be53dabaa73e3e91107485fe4Anton Korobeynikov#include "llvm/Target/TargetFrameLowering.h" 2033464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 2133464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikovnamespace llvm { 2233464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov class MipsSubtarget; 2333464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 2416c29b5f285f375be53dabaa73e3e91107485fe4Anton Korobeynikovclass MipsFrameLowering : public TargetFrameLowering { 2533464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikovprotected: 2633464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov const MipsSubtarget &STI; 2733464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 2833464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikovpublic: 2916c29b5f285f375be53dabaa73e3e91107485fe4Anton Korobeynikov explicit MipsFrameLowering(const MipsSubtarget &sti) 30bddf83614a5e32297458e96375c533d231a5cd37Akira Hatanaka : TargetFrameLowering(StackGrowsDown, sti.hasMips64() ? 16 : 8, 0, 31bddf83614a5e32297458e96375c533d231a5cd37Akira Hatanaka sti.hasMips64() ? 16 : 8), STI(sti) {} 3233464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 33af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanaka static const MipsFrameLowering *create(MipsTargetMachine &TM, 34af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanaka const MipsSubtarget &ST); 35af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanaka 36d0c38176690e9602a93a20a43f1bd084564a8116Anton Korobeynikov bool hasFP(const MachineFunction &MF) const; 3733464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov}; 3833464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 39af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanaka/// Create MipsInstrInfo objects. 40af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanakaconst MipsFrameLowering *createMips16FrameLowering(const MipsSubtarget &ST); 41af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanakaconst MipsFrameLowering *createMipsSEFrameLowering(const MipsSubtarget &ST); 42af2662606745bdebaa2cb43096274ce3d33b665fAkira Hatanaka 4333464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov} // End llvm namespace 4433464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov 4533464912237efaa0ed7060829e66b59055bdd48bAnton Korobeynikov#endif 46