1//===--------------------- AMDILFrameLowering.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// The LLVM Compiler Infrastructure 11// 12// This file is distributed under the University of Illinois Open Source 13// License. See LICENSE.TXT for details. 14// 15//===----------------------------------------------------------------------===// 16// 17// Interface to describe a layout of a stack frame on a AMDIL target machine 18// 19//===----------------------------------------------------------------------===// 20#ifndef _AMDILFRAME_LOWERING_H_ 21#define _AMDILFRAME_LOWERING_H_ 22 23#include "llvm/CodeGen/MachineFunction.h" 24#include "llvm/Target/TargetFrameLowering.h" 25 26/// Information about the stack frame layout on the AMDGPU targets. It holds 27/// the direction of the stack growth, the known stack alignment on entry to 28/// each function, and the offset to the locals area. 29/// See TargetFrameInfo for more comments. 30 31namespace llvm { 32 class AMDGPUFrameLowering : public TargetFrameLowering { 33 public: 34 AMDGPUFrameLowering(StackDirection D, unsigned StackAl, int LAO, unsigned 35 TransAl = 1); 36 virtual ~AMDGPUFrameLowering(); 37 virtual int getFrameIndexOffset(const MachineFunction &MF, 38 int FI) const; 39 virtual const SpillSlot * 40 getCalleeSavedSpillSlots(unsigned &NumEntries) const; 41 virtual void emitPrologue(MachineFunction &MF) const; 42 virtual void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 43 virtual bool hasFP(const MachineFunction &MF) const; 44 }; // class AMDGPUFrameLowering 45} // namespace llvm 46#endif // _AMDILFRAME_LOWERING_H_ 47