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
19namespace llvm {
20
21class AMDGPUMachineFunction : public MachineFunctionInfo {
22  virtual void anchor();
23  unsigned ShaderType;
24
25public:
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
36  unsigned getShaderType() const {
37    return ShaderType;
38  }
39
40  unsigned ScratchSize;
41  bool IsKernel;
42};
43
44}
45#endif
46