149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski//===--- NVPTXFrameLowering.h - Define frame lowering for NVPTX -*- C++ -*-===// 249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// The LLVM Compiler Infrastructure 449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 549683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// This file is distributed under the University of Illinois Open Source 649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// License. See LICENSE.TXT for details. 749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski//===----------------------------------------------------------------------===// 949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 1049683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 1149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski// 1249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski//===----------------------------------------------------------------------===// 1349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#ifndef NVPTX_FRAMELOWERING_H 1549683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#define NVPTX_FRAMELOWERING_H 1649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#include "llvm/Target/TargetFrameLowering.h" 1849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 1949683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskinamespace llvm { 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hinesclass NVPTXSubtarget; 2149683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskiclass NVPTXFrameLowering : public TargetFrameLowering { 2249683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski bool is64bit; 2349683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 2449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinskipublic: 25cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines explicit NVPTXFrameLowering(NVPTXSubtarget &STI); 2649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool hasFP(const MachineFunction &MF) const override; 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void emitPrologue(MachineFunction &MF) const override; 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 30700ed80d3da5e98e05ceb90e9bfb66058581a6dbEli Bendersky 31700ed80d3da5e98e05ceb90e9bfb66058581a6dbEli Bendersky void eliminateCallFramePseudoInstr(MachineFunction &MF, 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MachineBasicBlock &MBB, 33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MachineBasicBlock::iterator I) const override; 3449683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski}; 3549683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 3649683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski} // End llvm namespace 3749683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski 3849683f3c961379fbc088871a5d6304950f1f1cbcJustin Holewinski#endif 39