1 //===-- R600MachineFunctionInfo.h - R600 Machine Function Info ----*- 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 /// \file
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_R600_AMDGPUMACHINEFUNCTION_H
14 #define LLVM_LIB_TARGET_R600_AMDGPUMACHINEFUNCTION_H
15 
16 #include "llvm/CodeGen/MachineFunction.h"
17 #include <map>
18 
19 namespace llvm {
20 
21 class AMDGPUMachineFunction : public MachineFunctionInfo {
22   virtual void anchor();
23   unsigned ShaderType;
24 
25 public:
26   AMDGPUMachineFunction(const MachineFunction &MF);
27   /// A map to keep track of local memory objects and their offsets within
28   /// the local memory space.
29   std::map<const GlobalValue *, unsigned> LocalMemoryObjects;
30   /// Number of bytes in the LDS that are being used.
31   unsigned LDSSize;
32 
33   /// Start of implicit kernel args
34   unsigned ABIArgOffset;
35 
getShaderType()36   unsigned getShaderType() const {
37     return ShaderType;
38   }
39 
isKernel()40   bool isKernel() const {
41     // FIXME: Assume everything is a kernel until function calls are supported.
42     return true;
43   }
44 
45   unsigned ScratchSize;
46   bool IsKernel;
47 };
48 
49 }
50 #endif
51