Home | History | Annotate | Download | only in AMDGPU
      1 //===--------------------- SIFrameLowering.h --------------------*- 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 #ifndef LLVM_LIB_TARGET_AMDGPU_SIFRAMELOWERING_H
     11 #define LLVM_LIB_TARGET_AMDGPU_SIFRAMELOWERING_H
     12 
     13 #include "AMDGPUFrameLowering.h"
     14 
     15 namespace llvm {
     16 
     17 class SIFrameLowering final : public AMDGPUFrameLowering {
     18 public:
     19   SIFrameLowering(StackDirection D, unsigned StackAl, int LAO,
     20                   unsigned TransAl = 1) :
     21     AMDGPUFrameLowering(D, StackAl, LAO, TransAl) {}
     22   ~SIFrameLowering() override {}
     23 
     24   void emitPrologue(MachineFunction &MF,
     25                     MachineBasicBlock &MBB) const override;
     26   void emitEpilogue(MachineFunction &MF,
     27                     MachineBasicBlock &MBB) const override;
     28 
     29   void processFunctionBeforeFrameFinalized(
     30     MachineFunction &MF,
     31     RegScavenger *RS = nullptr) const override;
     32 
     33 private:
     34   /// \brief Emits debugger prologue.
     35   void emitDebuggerPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const;
     36 };
     37 
     38 }
     39 
     40 #endif
     41