nv50/ir: Add support for unlimited instruction arguments.
[mesa.git] / src / gallium / drivers / nv50 / codegen / nv50_ir_from_sm4.h
1
2 #ifndef __NV50_IR_FROM_SM4_H__
3 #define __NV50_IR_FROM_SM4_H__
4
5 typedef enum D3D_PRIMITIVE_TOPOLOGY {
6 D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
7 D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
8 D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2,
9 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
10 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
11 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
12 D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
13 D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
14 D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
15 D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
16 D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
17 D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
18 D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
19 D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
20 D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
21 D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
22 D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
23 D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
24 D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
25 D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
26 D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
27 D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
28 D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
29 D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
30 D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
31 D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
32 D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
33 D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
34 D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
35 D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
36 D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
37 D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
38 D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
39 D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
40 D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
41 D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
42 D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
43 D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
44 D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
45 D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
46 D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
47 D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64,
48 } D3D_PRIMITIVE_TOPOLOGY;
49
50 typedef enum D3D_RESOURCE_RETURN_TYPE {
51 D3D_RETURN_TYPE_UNORM = 1,
52 D3D_RETURN_TYPE_SNORM = 2,
53 D3D_RETURN_TYPE_SINT = 3,
54 D3D_RETURN_TYPE_UINT = 4,
55 D3D_RETURN_TYPE_FLOAT = 5,
56 D3D_RETURN_TYPE_MIXED = 6,
57 D3D_RETURN_TYPE_DOUBLE = 7,
58 D3D_RETURN_TYPE_CONTINUED = 8,
59 D3D10_RETURN_TYPE_UNORM = 1,
60 D3D10_RETURN_TYPE_SNORM = 2,
61 D3D10_RETURN_TYPE_SINT = 3,
62 D3D10_RETURN_TYPE_UINT = 4,
63 D3D10_RETURN_TYPE_FLOAT = 5,
64 D3D10_RETURN_TYPE_MIXED = 6,
65 D3D11_RETURN_TYPE_UNORM = 1,
66 D3D11_RETURN_TYPE_SNORM = 2,
67 D3D11_RETURN_TYPE_SINT = 3,
68 D3D11_RETURN_TYPE_UINT = 4,
69 D3D11_RETURN_TYPE_FLOAT = 5,
70 D3D11_RETURN_TYPE_MIXED = 6,
71 D3D11_RETURN_TYPE_DOUBLE = 7,
72 D3D11_RETURN_TYPE_CONTINUED = 8
73 } D3D_RESOURCE_RETURN_TYPE;
74
75 typedef enum D3D_REGISTER_COMPONENT_TYPE {
76 D3D_REGISTER_COMPONENT_UNKNOWN = 0,
77 D3D_REGISTER_COMPONENT_UINT32 = 1,
78 D3D_REGISTER_COMPONENT_SINT32 = 2,
79 D3D_REGISTER_COMPONENT_FLOAT32 = 3,
80 D3D10_REGISTER_COMPONENT_UNKNOWN = 0,
81 D3D10_REGISTER_COMPONENT_UINT32 = 1,
82 D3D10_REGISTER_COMPONENT_SINT32 = 2,
83 D3D10_REGISTER_COMPONENT_FLOAT32 = 3
84 } D3D_REGISTER_COMPONENT_TYPE;
85
86 typedef enum D3D_TESSELLATOR_DOMAIN {
87 D3D_TESSELLATOR_DOMAIN_UNDEFINED = 0,
88 D3D_TESSELLATOR_DOMAIN_ISOLINE = 1,
89 D3D_TESSELLATOR_DOMAIN_TRI = 2,
90 D3D_TESSELLATOR_DOMAIN_QUAD = 3,
91 D3D11_TESSELLATOR_DOMAIN_UNDEFINED = 0,
92 D3D11_TESSELLATOR_DOMAIN_ISOLINE = 1,
93 D3D11_TESSELLATOR_DOMAIN_TRI = 2,
94 D3D11_TESSELLATOR_DOMAIN_QUAD = 3
95 } D3D_TESSELLATOR_DOMAIN;
96
97 typedef enum D3D_TESSELLATOR_PARTITIONING {
98 D3D_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
99 D3D_TESSELLATOR_PARTITIONING_INTEGER = 1,
100 D3D_TESSELLATOR_PARTITIONING_POW2 = 2,
101 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
102 D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4,
103 D3D11_TESSELLATOR_PARTITIONING_UNDEFINED = 0,
104 D3D11_TESSELLATOR_PARTITIONING_INTEGER = 1,
105 D3D11_TESSELLATOR_PARTITIONING_POW2 = 2,
106 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD = 3,
107 D3D11_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN = 4
108 } D3D_TESSELLATOR_PARTITIONING;
109
110 typedef enum D3D_TESSELLATOR_OUTPUT_PRIMITIVE {
111 D3D_TESSELLATOR_OUTPUT_UNDEFINED = 0,
112 D3D_TESSELLATOR_OUTPUT_POINT = 1,
113 D3D_TESSELLATOR_OUTPUT_LINE = 2,
114 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
115 D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4,
116 D3D11_TESSELLATOR_OUTPUT_UNDEFINED = 0,
117 D3D11_TESSELLATOR_OUTPUT_POINT = 1,
118 D3D11_TESSELLATOR_OUTPUT_LINE = 2,
119 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CW = 3,
120 D3D11_TESSELLATOR_OUTPUT_TRIANGLE_CCW = 4
121 } D3D_TESSELLATOR_OUTPUT_PRIMITIVE;
122
123 typedef enum D3D_NAME {
124 D3D_NAME_UNDEFINED = 0,
125 D3D_NAME_POSITION = 1,
126 D3D_NAME_CLIP_DISTANCE = 2,
127 D3D_NAME_CULL_DISTANCE = 3,
128 D3D_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
129 D3D_NAME_VIEWPORT_ARRAY_INDEX = 5,
130 D3D_NAME_VERTEX_ID = 6,
131 D3D_NAME_PRIMITIVE_ID = 7,
132 D3D_NAME_INSTANCE_ID = 8,
133 D3D_NAME_IS_FRONT_FACE = 9,
134 D3D_NAME_SAMPLE_INDEX = 10,
135 D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
136 D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
137 D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
138 D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
139 D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
140 D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
141 D3D_NAME_TARGET = 64,
142 D3D_NAME_DEPTH = 65,
143 D3D_NAME_COVERAGE = 66,
144 D3D_NAME_DEPTH_GREATER_EQUAL = 67,
145 D3D_NAME_DEPTH_LESS_EQUAL = 68,
146 D3D10_NAME_UNDEFINED = 0,
147 D3D10_NAME_POSITION = 1,
148 D3D10_NAME_CLIP_DISTANCE = 2,
149 D3D10_NAME_CULL_DISTANCE = 3,
150 D3D10_NAME_RENDER_TARGET_ARRAY_INDEX = 4,
151 D3D10_NAME_VIEWPORT_ARRAY_INDEX = 5,
152 D3D10_NAME_VERTEX_ID = 6,
153 D3D10_NAME_PRIMITIVE_ID = 7,
154 D3D10_NAME_INSTANCE_ID = 8,
155 D3D10_NAME_IS_FRONT_FACE = 9,
156 D3D10_NAME_SAMPLE_INDEX = 10,
157 D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR = 11,
158 D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR = 12,
159 D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR = 13,
160 D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR = 14,
161 D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR = 15,
162 D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR = 16,
163 D3D10_NAME_TARGET = 64,
164 D3D10_NAME_DEPTH = 65,
165 D3D10_NAME_COVERAGE = 66,
166 D3D11_NAME_DEPTH_GREATER_EQUAL = 67,
167 D3D11_NAME_DEPTH_LESS_EQUAL = 68
168 } D3D_NAME;
169
170 typedef struct _D3D11_SIGNATURE_PARAMETER_DESC {
171 const char* SemanticName;
172 unsigned int SemanticIndex;
173 unsigned int Register;
174 D3D_NAME SystemValueType;
175 D3D_REGISTER_COMPONENT_TYPE ComponentType;
176 unsigned char Mask;
177 unsigned char ReadWriteMask;
178 unsigned int Stream;
179 } D3D11_SIGNATURE_PARAMETER_DESC;
180
181 #include "../../../state_trackers/d3d1x/d3d1xshader/include/sm4.h"
182
183 #endif // __NV50_IR_FROM_SM4_H__