]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - contrib/llvm/lib/Target/R600/AMDILDeviceInfo.cpp
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / contrib / llvm / lib / Target / R600 / AMDILDeviceInfo.cpp
1 //===-- AMDILDeviceInfo.cpp - AMDILDeviceInfo class -----------------------===//
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 Function that creates DeviceInfo from a device name and other information.
12 //
13 //==-----------------------------------------------------------------------===//
14 #include "AMDILDevices.h"
15 #include "AMDGPUSubtarget.h"
16
17 using namespace llvm;
18 namespace llvm {
19 namespace AMDGPUDeviceInfo {
20
21 AMDGPUDevice* getDeviceFromName(const std::string &deviceName,
22                                 AMDGPUSubtarget *ptr,
23                                 bool is64bit, bool is64on32bit) {
24   if (deviceName.c_str()[2] == '7') {
25     switch (deviceName.c_str()[3]) {
26     case '1':
27       return new AMDGPU710Device(ptr);
28     case '7':
29       return new AMDGPU770Device(ptr);
30     default:
31       return new AMDGPU7XXDevice(ptr);
32     }
33   } else if (deviceName == "cypress") {
34 #if DEBUG
35     assert(!is64bit && "This device does not support 64bit pointers!");
36     assert(!is64on32bit && "This device does not support 64bit"
37           " on 32bit pointers!");
38 #endif
39     return new AMDGPUCypressDevice(ptr);
40   } else if (deviceName == "juniper") {
41 #if DEBUG
42     assert(!is64bit && "This device does not support 64bit pointers!");
43     assert(!is64on32bit && "This device does not support 64bit"
44           " on 32bit pointers!");
45 #endif
46     return new AMDGPUEvergreenDevice(ptr);
47   } else if (deviceName == "redwood" || deviceName == "sumo") {
48 #if DEBUG
49     assert(!is64bit && "This device does not support 64bit pointers!");
50     assert(!is64on32bit && "This device does not support 64bit"
51           " on 32bit pointers!");
52 #endif
53     return new AMDGPURedwoodDevice(ptr);
54   } else if (deviceName == "cedar") {
55 #if DEBUG
56     assert(!is64bit && "This device does not support 64bit pointers!");
57     assert(!is64on32bit && "This device does not support 64bit"
58           " on 32bit pointers!");
59 #endif
60     return new AMDGPUCedarDevice(ptr);
61   } else if (deviceName == "barts" || deviceName == "turks") {
62 #if DEBUG
63     assert(!is64bit && "This device does not support 64bit pointers!");
64     assert(!is64on32bit && "This device does not support 64bit"
65           " on 32bit pointers!");
66 #endif
67     return new AMDGPUNIDevice(ptr);
68   } else if (deviceName == "cayman") {
69 #if DEBUG
70     assert(!is64bit && "This device does not support 64bit pointers!");
71     assert(!is64on32bit && "This device does not support 64bit"
72           " on 32bit pointers!");
73 #endif
74     return new AMDGPUCaymanDevice(ptr);
75   } else if (deviceName == "caicos") {
76 #if DEBUG
77     assert(!is64bit && "This device does not support 64bit pointers!");
78     assert(!is64on32bit && "This device does not support 64bit"
79           " on 32bit pointers!");
80 #endif
81     return new AMDGPUNIDevice(ptr);
82   } else if (deviceName == "SI" ||
83              deviceName == "tahiti" || deviceName == "pitcairn" ||
84              deviceName == "verde"  || deviceName == "oland" ||
85              deviceName == "hainan") {
86     return new AMDGPUSIDevice(ptr);
87   } else {
88 #if DEBUG
89     assert(!is64bit && "This device does not support 64bit pointers!");
90     assert(!is64on32bit && "This device does not support 64bit"
91           " on 32bit pointers!");
92 #endif
93     return new AMDGPU7XXDevice(ptr);
94   }
95 }
96 } // End namespace AMDGPUDeviceInfo
97 } // End namespace llvm