Remove unused stdio.h includes
[oota-llvm.git] / lib / Target / R600 / AMDGPUSubtarget.cpp
1 //===-- AMDGPUSubtarget.cpp - AMDGPU Subtarget Information ----------------===//
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 /// \brief Implements the AMDGPU specific subclass of TargetSubtarget.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #include "AMDGPUSubtarget.h"
16
17 using namespace llvm;
18
19 #define GET_SUBTARGETINFO_ENUM
20 #define GET_SUBTARGETINFO_TARGET_DESC
21 #define GET_SUBTARGETINFO_CTOR
22 #include "AMDGPUGenSubtargetInfo.inc"
23
24 AMDGPUSubtarget::AMDGPUSubtarget(StringRef TT, StringRef CPU, StringRef FS) :
25   AMDGPUGenSubtargetInfo(TT, CPU, FS), DumpCode(false) {
26     InstrItins = getInstrItineraryForCPU(CPU);
27
28   // Default card
29   StringRef GPU = CPU;
30   Is64bit = false;
31   DefaultSize[0] = 64;
32   DefaultSize[1] = 1;
33   DefaultSize[2] = 1;
34   HasVertexCache = false;
35   TexVTXClauseSize = 0;
36   Gen = AMDGPUSubtarget::R600;
37   FP64 = false;
38   CaymanISA = false;
39   ParseSubtargetFeatures(GPU, FS);
40   DevName = GPU;
41 }
42
43 bool
44 AMDGPUSubtarget::is64bit() const  {
45   return Is64bit;
46 }
47 bool
48 AMDGPUSubtarget::hasVertexCache() const {
49   return HasVertexCache;
50 }
51 short
52 AMDGPUSubtarget::getTexVTXClauseSize() const {
53   return TexVTXClauseSize;
54 }
55 enum AMDGPUSubtarget::Generation
56 AMDGPUSubtarget::getGeneration() const {
57   return Gen;
58 }
59 bool
60 AMDGPUSubtarget::hasHWFP64() const {
61   return FP64;
62 }
63 bool
64 AMDGPUSubtarget::hasCaymanISA() const {
65   return CaymanISA;
66 }
67 bool
68 AMDGPUSubtarget::isTargetELF() const {
69   return false;
70 }
71 size_t
72 AMDGPUSubtarget::getDefaultSize(uint32_t dim) const {
73   if (dim > 3) {
74     return 1;
75   } else {
76     return DefaultSize[dim];
77   }
78 }
79
80 std::string
81 AMDGPUSubtarget::getDataLayout() const {
82   std::string DataLayout = std::string(
83    "e"
84    "-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32"
85    "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128"
86    "-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-v2048:2048:2048"
87    "-n32:64"
88   );
89
90   if (hasHWFP64()) {
91     DataLayout.append("-f64:64:64");
92   }
93
94   if (is64bit()) {
95     DataLayout.append("-p:64:64:64");
96   } else {
97     DataLayout.append("-p:32:32:32");
98   }
99
100   return DataLayout;
101 }
102
103 std::string
104 AMDGPUSubtarget::getDeviceName() const {
105   return DevName;
106 }