AMDGPU: Report extractelement as free in cost model
[oota-llvm.git] / lib / Target / AMDGPU / AMDGPUMachineFunction.h
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
36   unsigned getShaderType() const {
37     return ShaderType;
38   }
39
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