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