1 //===-- AMDILDeviceInfo.cpp - AMDILDeviceInfo class -----------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //==-----------------------------------------------------------------------===//
11 /// \brief Function that creates DeviceInfo from a device name and other information.
13 //==-----------------------------------------------------------------------===//
14 #include "AMDILDevices.h"
15 #include "AMDGPUSubtarget.h"
19 namespace AMDGPUDeviceInfo {
21 AMDGPUDevice* getDeviceFromName(const std::string &deviceName,
23 bool is64bit, bool is64on32bit) {
24 if (deviceName.c_str()[2] == '7') {
25 switch (deviceName.c_str()[3]) {
27 return new AMDGPU710Device(ptr);
29 return new AMDGPU770Device(ptr);
31 return new AMDGPU7XXDevice(ptr);
33 } else if (deviceName == "cypress") {
35 assert(!is64bit && "This device does not support 64bit pointers!");
36 assert(!is64on32bit && "This device does not support 64bit"
37 " on 32bit pointers!");
39 return new AMDGPUCypressDevice(ptr);
40 } else if (deviceName == "juniper") {
42 assert(!is64bit && "This device does not support 64bit pointers!");
43 assert(!is64on32bit && "This device does not support 64bit"
44 " on 32bit pointers!");
46 return new AMDGPUEvergreenDevice(ptr);
47 } else if (deviceName == "redwood") {
49 assert(!is64bit && "This device does not support 64bit pointers!");
50 assert(!is64on32bit && "This device does not support 64bit"
51 " on 32bit pointers!");
53 return new AMDGPURedwoodDevice(ptr);
54 } else if (deviceName == "cedar") {
56 assert(!is64bit && "This device does not support 64bit pointers!");
57 assert(!is64on32bit && "This device does not support 64bit"
58 " on 32bit pointers!");
60 return new AMDGPUCedarDevice(ptr);
61 } else if (deviceName == "barts" || deviceName == "turks") {
63 assert(!is64bit && "This device does not support 64bit pointers!");
64 assert(!is64on32bit && "This device does not support 64bit"
65 " on 32bit pointers!");
67 return new AMDGPUNIDevice(ptr);
68 } else if (deviceName == "cayman") {
70 assert(!is64bit && "This device does not support 64bit pointers!");
71 assert(!is64on32bit && "This device does not support 64bit"
72 " on 32bit pointers!");
74 return new AMDGPUCaymanDevice(ptr);
75 } else if (deviceName == "caicos") {
77 assert(!is64bit && "This device does not support 64bit pointers!");
78 assert(!is64on32bit && "This device does not support 64bit"
79 " on 32bit pointers!");
81 return new AMDGPUNIDevice(ptr);
82 } else if (deviceName == "SI") {
83 return new AMDGPUSIDevice(ptr);
86 assert(!is64bit && "This device does not support 64bit pointers!");
87 assert(!is64on32bit && "This device does not support 64bit"
88 " on 32bit pointers!");
90 return new AMDGPU7XXDevice(ptr);
93 } // End namespace AMDGPUDeviceInfo
94 } // End namespace llvm