1f4a2713aSLionel Sambuc //===--- NVPTXFrameLowering.h - Define frame lowering for NVPTX -*- C++ -*-===// 2f4a2713aSLionel Sambuc // 3f4a2713aSLionel Sambuc // The LLVM Compiler Infrastructure 4f4a2713aSLionel Sambuc // 5f4a2713aSLionel Sambuc // This file is distributed under the University of Illinois Open Source 6f4a2713aSLionel Sambuc // License. See LICENSE.TXT for details. 7f4a2713aSLionel Sambuc // 8f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===// 9f4a2713aSLionel Sambuc // 10f4a2713aSLionel Sambuc // 11f4a2713aSLionel Sambuc // 12f4a2713aSLionel Sambuc //===----------------------------------------------------------------------===// 13f4a2713aSLionel Sambuc 14*0a6a1f1dSLionel Sambuc #ifndef LLVM_LIB_TARGET_NVPTX_NVPTXFRAMELOWERING_H 15*0a6a1f1dSLionel Sambuc #define LLVM_LIB_TARGET_NVPTX_NVPTXFRAMELOWERING_H 16f4a2713aSLionel Sambuc 17f4a2713aSLionel Sambuc #include "llvm/Target/TargetFrameLowering.h" 18f4a2713aSLionel Sambuc 19f4a2713aSLionel Sambuc namespace llvm { 20*0a6a1f1dSLionel Sambuc class NVPTXSubtarget; 21f4a2713aSLionel Sambuc class NVPTXFrameLowering : public TargetFrameLowering { 22f4a2713aSLionel Sambuc bool is64bit; 23f4a2713aSLionel Sambuc 24f4a2713aSLionel Sambuc public: 25*0a6a1f1dSLionel Sambuc explicit NVPTXFrameLowering(NVPTXSubtarget &STI); 26f4a2713aSLionel Sambuc 27*0a6a1f1dSLionel Sambuc bool hasFP(const MachineFunction &MF) const override; 28*0a6a1f1dSLionel Sambuc void emitPrologue(MachineFunction &MF) const override; 29*0a6a1f1dSLionel Sambuc void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 30f4a2713aSLionel Sambuc 31f4a2713aSLionel Sambuc void eliminateCallFramePseudoInstr(MachineFunction &MF, 32f4a2713aSLionel Sambuc MachineBasicBlock &MBB, 33*0a6a1f1dSLionel Sambuc MachineBasicBlock::iterator I) const override; 34f4a2713aSLionel Sambuc }; 35f4a2713aSLionel Sambuc 36f4a2713aSLionel Sambuc } // End llvm namespace 37f4a2713aSLionel Sambuc 38f4a2713aSLionel Sambuc #endif 39