1 //===--- NVPTXFrameLowering.h - Define frame lowering for NVPTX -*- 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 NVPTX_FRAMELOWERING_H 15 #define NVPTX_FRAMELOWERING_H 16 17 #include "llvm/Target/TargetFrameLowering.h" 18 19 namespace llvm { 20 class NVPTXTargetMachine; 21 22 class NVPTXFrameLowering : public TargetFrameLowering { 23 NVPTXTargetMachine &tm; 24 bool is64bit; 25 26 public: 27 explicit NVPTXFrameLowering(NVPTXTargetMachine &_tm, bool _is64bit) 28 : TargetFrameLowering(TargetFrameLowering::StackGrowsUp, 8, 0), tm(_tm), 29 is64bit(_is64bit) {} 30 31 virtual bool hasFP(const MachineFunction &MF) const; 32 virtual void emitPrologue(MachineFunction &MF) const; 33 virtual void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 34 35 void eliminateCallFramePseudoInstr(MachineFunction &MF, 36 MachineBasicBlock &MBB, 37 MachineBasicBlock::iterator I) const; 38 }; 39 40 } // End llvm namespace 41 42 #endif 43