Home | History | Annotate | Line # | Download | only in AMDGPU
      1 //===--------------------- AMDGPUFrameLowering.h ----------------*- C++ -*-===//
      2 //
      3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      4 // See https://llvm.org/LICENSE.txt for license information.
      5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      6 //
      7 //===----------------------------------------------------------------------===//
      8 //
      9 /// \file
     10 /// Interface to describe a layout of a stack frame on an AMDGPU target.
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 #ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUFRAMELOWERING_H
     15 #define LLVM_LIB_TARGET_AMDGPU_AMDGPUFRAMELOWERING_H
     16 
     17 #include "llvm/CodeGen/TargetFrameLowering.h"
     18 
     19 namespace llvm {
     20 
     21 /// Information about the stack frame layout on the AMDGPU targets.
     22 ///
     23 /// It holds the direction of the stack growth, the known stack alignment on
     24 /// entry to each function, and the offset to the locals area.
     25 /// See TargetFrameInfo for more comments.
     26 class AMDGPUFrameLowering : public TargetFrameLowering {
     27 public:
     28   AMDGPUFrameLowering(StackDirection D, Align StackAl, int LAO,
     29                       Align TransAl = Align(1));
     30   ~AMDGPUFrameLowering() override;
     31 
     32   /// \returns The number of 32-bit sub-registers that are used when storing
     33   /// values to the stack.
     34   unsigned getStackWidth(const MachineFunction &MF) const;
     35 };
     36 
     37 } // end namespace llvm
     38 
     39 #endif // LLVM_LIB_TARGET_AMDGPU_AMDGPUFRAMELOWERING_H
     40