radeonsi: Handle position input parameter for pixel shaders v2
[mesa.git] / src / gallium / drivers / radeon / 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 // Function that creates DeviceInfo from a device name and other information.
11 //
12 //==-----------------------------------------------------------------------===//
13 #include "AMDILDevices.h"
14 #include "AMDGPUSubtarget.h"
15
16 using namespace llvm;
17 namespace llvm {
18 namespace AMDGPUDeviceInfo {
19 AMDGPUDevice*
20 getDeviceFromName(const std::string &deviceName, AMDGPUSubtarget *ptr,
21 bool is64bit, bool is64on32bit)
22 {
23 if (deviceName.c_str()[2] == '7') {
24 switch (deviceName.c_str()[3]) {
25 case '1':
26 return new AMDGPU710Device(ptr);
27 case '7':
28 return new AMDGPU770Device(ptr);
29 default:
30 return new AMDGPU7XXDevice(ptr);
31 };
32 } else if (deviceName == "cypress") {
33 #if DEBUG
34 assert(!is64bit && "This device does not support 64bit pointers!");
35 assert(!is64on32bit && "This device does not support 64bit"
36 " on 32bit pointers!");
37 #endif
38 return new AMDGPUCypressDevice(ptr);
39 } else if (deviceName == "juniper") {
40 #if DEBUG
41 assert(!is64bit && "This device does not support 64bit pointers!");
42 assert(!is64on32bit && "This device does not support 64bit"
43 " on 32bit pointers!");
44 #endif
45 return new AMDGPUEvergreenDevice(ptr);
46 } else if (deviceName == "redwood") {
47 #if DEBUG
48 assert(!is64bit && "This device does not support 64bit pointers!");
49 assert(!is64on32bit && "This device does not support 64bit"
50 " on 32bit pointers!");
51 #endif
52 return new AMDGPURedwoodDevice(ptr);
53 } else if (deviceName == "cedar") {
54 #if DEBUG
55 assert(!is64bit && "This device does not support 64bit pointers!");
56 assert(!is64on32bit && "This device does not support 64bit"
57 " on 32bit pointers!");
58 #endif
59 return new AMDGPUCedarDevice(ptr);
60 } else if (deviceName == "barts"
61 || 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 return new AMDGPUSIDevice(ptr);
84 } else {
85 #if DEBUG
86 assert(!is64bit && "This device does not support 64bit pointers!");
87 assert(!is64on32bit && "This device does not support 64bit"
88 " on 32bit pointers!");
89 #endif
90 return new AMDGPU7XXDevice(ptr);
91 }
92 }
93 } // End namespace AMDGPUDeviceInfo
94 } // End namespace llvm