Home | History | Annotate | Download | only in Mips
      1 //===-- MipsFrameLowering.h - Define frame lowering for Mips ----*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 //
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef MIPS_FRAMEINFO_H
     15 #define MIPS_FRAMEINFO_H
     16 
     17 #include "Mips.h"
     18 #include "MipsSubtarget.h"
     19 #include "llvm/Target/TargetFrameLowering.h"
     20 
     21 namespace llvm {
     22   class MipsSubtarget;
     23 
     24 class MipsFrameLowering : public TargetFrameLowering {
     25 protected:
     26   const MipsSubtarget &STI;
     27 
     28 public:
     29   explicit MipsFrameLowering(const MipsSubtarget &sti)
     30     : TargetFrameLowering(StackGrowsDown, sti.hasMips64() ? 16 : 8, 0,
     31                           sti.hasMips64() ? 16 : 8), STI(sti) {}
     32 
     33   static const MipsFrameLowering *create(MipsTargetMachine &TM,
     34                                          const MipsSubtarget &ST);
     35 
     36   bool hasFP(const MachineFunction &MF) const;
     37 
     38 protected:
     39   uint64_t estimateStackSize(const MachineFunction &MF) const;
     40 };
     41 
     42 /// Create MipsFrameLowering objects.
     43 const MipsFrameLowering *createMips16FrameLowering(const MipsSubtarget &ST);
     44 const MipsFrameLowering *createMipsSEFrameLowering(const MipsSubtarget &ST);
     45 
     46 } // End llvm namespace
     47 
     48 #endif
     49