1284677Sdim//===-- R600MachineFunctionInfo.h - R600 Machine Function Info ----*- C++ -*-=//
2284677Sdim//
3284677Sdim//                     The LLVM Compiler Infrastructure
4284677Sdim//
5284677Sdim// This file is distributed under the University of Illinois Open Source
6284677Sdim// License. See LICENSE.TXT for details.
7284677Sdim//
8284677Sdim//===----------------------------------------------------------------------===//
9284677Sdim//
10284677Sdim/// \file
11284677Sdim//===----------------------------------------------------------------------===//
12284677Sdim
13284677Sdim#ifndef LLVM_LIB_TARGET_R600_AMDGPUMACHINEFUNCTION_H
14284677Sdim#define LLVM_LIB_TARGET_R600_AMDGPUMACHINEFUNCTION_H
15284677Sdim
16284677Sdim#include "llvm/CodeGen/MachineFunction.h"
17284677Sdim#include <map>
18284677Sdim
19284677Sdimnamespace llvm {
20284677Sdim
21284677Sdimclass AMDGPUMachineFunction : public MachineFunctionInfo {
22284677Sdim  virtual void anchor();
23284677Sdim  unsigned ShaderType;
24284677Sdim
25284677Sdimpublic:
26284677Sdim  AMDGPUMachineFunction(const MachineFunction &MF);
27284677Sdim  /// A map to keep track of local memory objects and their offsets within
28284677Sdim  /// the local memory space.
29284677Sdim  std::map<const GlobalValue *, unsigned> LocalMemoryObjects;
30284677Sdim  /// Number of bytes in the LDS that are being used.
31284677Sdim  unsigned LDSSize;
32284677Sdim
33284677Sdim  /// Start of implicit kernel args
34284677Sdim  unsigned ABIArgOffset;
35284677Sdim
36284677Sdim  unsigned getShaderType() const {
37284677Sdim    return ShaderType;
38284677Sdim  }
39284677Sdim
40296417Sdim  bool isKernel() const {
41296417Sdim    // FIXME: Assume everything is a kernel until function calls are supported.
42296417Sdim    return true;
43296417Sdim  }
44296417Sdim
45284677Sdim  unsigned ScratchSize;
46284677Sdim  bool IsKernel;
47284677Sdim};
48284677Sdim
49285181Sdim}
50284677Sdim#endif
51