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) : AMDGPUFrameLowering(D,StackAl,LAO,TransAl)21 AMDGPUFrameLowering(D, StackAl, LAO, TransAl) {} ~SIFrameLowering()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