1d99a50dde74a6e0b148ce7e94ed81d5626a0f68
[mesa.git] / src / mesa / pipe / tgsi / exec / tgsi_token.h
1 #if !defined TGSI_TOKEN_H
2 #define TGSI_TOKEN_H
3
4 #if defined __cplusplus
5 extern "C" {
6 #endif // defined __cplusplus
7
8 struct tgsi_version
9 {
10 unsigned MajorVersion : 8;
11 unsigned MinorVersion : 8;
12 unsigned Padding : 16;
13 };
14
15 struct tgsi_header
16 {
17 unsigned HeaderSize : 8;
18 unsigned BodySize : 24;
19 };
20
21 #define TGSI_PROCESSOR_FRAGMENT 0
22 #define TGSI_PROCESSOR_VERTEX 1
23 #define TGSI_PROCESSOR_GEOMETRY 2
24
25 struct tgsi_processor
26 {
27 unsigned Processor : 4; /* TGSI_PROCESSOR_ */
28 unsigned Padding : 28;
29 };
30
31 #define TGSI_TOKEN_TYPE_DECLARATION 0
32 #define TGSI_TOKEN_TYPE_IMMEDIATE 1
33 #define TGSI_TOKEN_TYPE_INSTRUCTION 2
34
35 struct tgsi_token
36 {
37 unsigned Type : 4; /* TGSI_TOKEN_TYPE_ */
38 unsigned Size : 8; /* UINT */
39 unsigned Padding : 19;
40 unsigned Extended : 1; /* BOOL */
41 };
42
43 #define TGSI_FILE_NULL 0
44 #define TGSI_FILE_CONSTANT 1
45 #define TGSI_FILE_INPUT 2
46 #define TGSI_FILE_OUTPUT 3
47 #define TGSI_FILE_TEMPORARY 4
48 #define TGSI_FILE_SAMPLER 5
49 #define TGSI_FILE_ADDRESS 6
50 #define TGSI_FILE_IMMEDIATE 7
51
52 #define TGSI_DECLARE_RANGE 0
53 #define TGSI_DECLARE_MASK 1
54
55 #define TGSI_WRITEMASK_NONE 0x00
56 #define TGSI_WRITEMASK_X 0x01
57 #define TGSI_WRITEMASK_Y 0x02
58 #define TGSI_WRITEMASK_XY 0x03
59 #define TGSI_WRITEMASK_Z 0x04
60 #define TGSI_WRITEMASK_XZ 0x05
61 #define TGSI_WRITEMASK_YZ 0x06
62 #define TGSI_WRITEMASK_XYZ 0x07
63 #define TGSI_WRITEMASK_W 0x08
64 #define TGSI_WRITEMASK_XW 0x09
65 #define TGSI_WRITEMASK_YW 0x0A
66 #define TGSI_WRITEMASK_XYW 0x0B
67 #define TGSI_WRITEMASK_ZW 0x0C
68 #define TGSI_WRITEMASK_XZW 0x0D
69 #define TGSI_WRITEMASK_YZW 0x0E
70 #define TGSI_WRITEMASK_XYZW 0x0F
71
72 struct tgsi_declaration
73 {
74 unsigned Type : 4; /* TGSI_TOKEN_TYPE_DECLARATION */
75 unsigned Size : 8; /* UINT */
76 unsigned File : 4; /* one of TGSI_FILE_x */
77 unsigned Declare : 4; /* one of TGSI_DECLARE_x */
78 unsigned UsageMask : 4; /* bitmask of TGSI_WRITEMASK_x flags */
79 unsigned Interpolate : 1; /* BOOL, any interpolation info? */
80 unsigned Semantic : 1; /* BOOL, any semantic info? */
81 unsigned Padding : 5;
82 unsigned Extended : 1; /* BOOL */
83 };
84
85 struct tgsi_declaration_range
86 {
87 unsigned First : 16; /* UINT */
88 unsigned Last : 16; /* UINT */
89 };
90
91 struct tgsi_declaration_mask
92 {
93 unsigned Mask : 32; /* UINT */
94 };
95
96 #define TGSI_INTERPOLATE_CONSTANT 0
97 #define TGSI_INTERPOLATE_LINEAR 1
98 #define TGSI_INTERPOLATE_PERSPECTIVE 2
99
100 struct tgsi_declaration_interpolation
101 {
102 unsigned Interpolate : 4; /* TGSI_INTERPOLATE_ */
103 unsigned Padding : 28;
104 };
105
106 #define TGSI_SEMANTIC_POSITION 0
107 #define TGSI_SEMANTIC_COLOR 1
108 #define TGSI_SEMANTIC_BCOLOR 2 /**< back-face color */
109 #define TGSI_SEMANTIC_FOG 3
110 #define TGSI_SEMANTIC_PSIZE 4
111 #define TGSI_SEMANTIC_GENERIC 5
112 #define TGSI_SEMANTIC_COUNT 6 /**< number of semantic values */
113
114 struct tgsi_declaration_semantic
115 {
116 unsigned SemanticName : 8; /* one of TGSI_SEMANTIC_ */
117 unsigned SemanticIndex : 16; /* UINT */
118 unsigned Padding : 8;
119 };
120
121 #define TGSI_IMM_FLOAT32 0
122
123 struct tgsi_immediate
124 {
125 unsigned Type : 4; /* TGSI_TOKEN_TYPE_IMMEDIATE */
126 unsigned Size : 8; /* UINT */
127 unsigned DataType : 4; /* TGSI_IMM_ */
128 unsigned Padding : 15;
129 unsigned Extended : 1; /* BOOL */
130 };
131
132 struct tgsi_immediate_float32
133 {
134 float Float;
135 };
136
137 /*
138 * GL_NV_vertex_program
139 */
140 #define TGSI_OPCODE_ARL 0
141 #define TGSI_OPCODE_MOV 1
142 #define TGSI_OPCODE_LIT 2
143 #define TGSI_OPCODE_RCP 3
144 #define TGSI_OPCODE_RSQ 4
145 #define TGSI_OPCODE_EXP 5
146 #define TGSI_OPCODE_LOG 6
147 #define TGSI_OPCODE_MUL 7
148 #define TGSI_OPCODE_ADD 8
149 #define TGSI_OPCODE_DP3 9
150 #define TGSI_OPCODE_DP4 10
151 #define TGSI_OPCODE_DST 11
152 #define TGSI_OPCODE_MIN 12
153 #define TGSI_OPCODE_MAX 13
154 #define TGSI_OPCODE_SLT 14
155 #define TGSI_OPCODE_SGE 15
156 #define TGSI_OPCODE_MAD 16
157
158 /*
159 * GL_ATI_fragment_shader
160 */
161 /* TGSI_OPCODE_MOV */
162 /* TGSI_OPCODE_ADD */
163 /* TGSI_OPCODE_MUL */
164 #define TGSI_OPCODE_SUB 17
165 #define TGSI_OPCODE_DOT3 TGSI_OPCODE_DP3
166 #define TGSI_OPCODE_DOT4 TGSI_OPCODE_DP4
167 /* TGSI_OPCODE_MAD */
168 #define TGSI_OPCODE_LERP 18
169 #define TGSI_OPCODE_CND 19
170 #define TGSI_OPCODE_CND0 20
171 #define TGSI_OPCODE_DOT2ADD 21
172
173 /*
174 * GL_EXT_vertex_shader
175 */
176 #define TGSI_OPCODE_INDEX 22
177 #define TGSI_OPCODE_NEGATE 23
178 /* TGSI_OPCODE_DOT3 */
179 /* TGSI_OPCODE_DOT4 */
180 /* TGSI_OPCODE_MUL */
181 /* TGSI_OPCODE_ADD */
182 #define TGSI_OPCODE_MADD TGSI_OPCODE_MAD
183 #define TGSI_OPCODE_FRAC 24
184 /* TGSI_OPCODE_MAX */
185 /* TGSI_OPCODE_MIN */
186 #define TGSI_OPCODE_SETGE TGSI_OPCODE_SGE
187 #define TGSI_OPCODE_SETLT TGSI_OPCODE_SLT
188 #define TGSI_OPCODE_CLAMP 25
189 #define TGSI_OPCODE_FLOOR 26
190 #define TGSI_OPCODE_ROUND 27
191 #define TGSI_OPCODE_EXPBASE2 28
192 #define TGSI_OPCODE_LOGBASE2 29
193 #define TGSI_OPCODE_POWER 30
194 #define TGSI_OPCODE_RECIP TGSI_OPCODE_RCP
195 #define TGSI_OPCODE_RECIPSQRT TGSI_OPCODE_RSQ
196 /* TGSI_OPCODE_SUB */
197 #define TGSI_OPCODE_CROSSPRODUCT 31
198 #define TGSI_OPCODE_MULTIPLYMATRIX 32
199 /* TGSI_OPCODE_MOV */
200
201 /*
202 * GL_NV_vertex_program1_1
203 */
204 /* TGSI_OPCODE_ARL */
205 /* TGSI_OPCODE_MOV */
206 /* TGSI_OPCODE_LIT */
207 #define TGSI_OPCODE_ABS 33
208 /* TGSI_OPCODE_RCP */
209 /* TGSI_OPCODE_RSQ */
210 /* TGSI_OPCODE_EXP */
211 /* TGSI_OPCODE_LOG */
212 #define TGSI_OPCODE_RCC 34
213 /* TGSI_OPCODE_MUL */
214 /* TGSI_OPCODE_ADD */
215 /* TGSI_OPCODE_DP3 */
216 /* TGSI_OPCODE_DP4 */
217 /* TGSI_OPCODE_DST */
218 /* TGSI_OPCODE_MIN */
219 /* TGSI_OPCODE_MAX */
220 /* TGSI_OPCODE_SLT */
221 /* TGSI_OPCODE_SGE */
222 #define TGSI_OPCODE_DPH 35
223 /* TGSI_OPCODE_SUB */
224 /* TGSI_OPCODE_MAD */
225
226 /*
227 * GL_NV_fragment_program
228 */
229 /* TGSI_OPCODE_ADD */
230 #define TGSI_OPCODE_COS 36
231 #define TGSI_OPCODE_DDX 37
232 #define TGSI_OPCODE_DDY 38
233 /* TGSI_OPCODE_DP3 */
234 /* TGSI_OPCODE_DP4 */
235 /* TGSI_OPCODE_DST */
236 #define TGSI_OPCODE_EX2 TGSI_OPCODE_EXPBASE2
237 #define TGSI_OPCODE_FLR TGSI_OPCODE_FLOOR
238 #define TGSI_OPCODE_FRC TGSI_OPCODE_FRAC
239 #define TGSI_OPCODE_KIL 39
240 #define TGSI_OPCODE_LG2 TGSI_OPCODE_LOGBASE2
241 /* TGSI_OPCODE_LIT */
242 #define TGSI_OPCODE_LRP TGSI_OPCODE_LERP
243 /* TGSI_OPCODE_MAD */
244 /* TGSI_OPCODE_MAX */
245 /* TGSI_OPCODE_MIN */
246 /* TGSI_OPCODE_MOV */
247 /* TGSI_OPCODE_MUL */
248 #define TGSI_OPCODE_PK2H 40
249 #define TGSI_OPCODE_PK2US 41
250 #define TGSI_OPCODE_PK4B 42
251 #define TGSI_OPCODE_PK4UB 43
252 #define TGSI_OPCODE_POW TGSI_OPCODE_POWER
253 /* TGSI_OPCODE_RCP */
254 #define TGSI_OPCODE_RFL 44
255 /* TGSI_OPCODE_RSQ */
256 #define TGSI_OPCODE_SEQ 45
257 #define TGSI_OPCODE_SFL 46
258 /* TGSI_OPCODE_SGE */
259 #define TGSI_OPCODE_SGT 47
260 #define TGSI_OPCODE_SIN 48
261 #define TGSI_OPCODE_SLE 49
262 /* TGSI_OPCODE_SLT */
263 #define TGSI_OPCODE_SNE 50
264 #define TGSI_OPCODE_STR 51
265 /* TGSI_OPCODE_SUB */
266 #define TGSI_OPCODE_TEX 52
267 #define TGSI_OPCODE_TXD 53
268 #define TGSI_OPCODE_TXP 132
269 #define TGSI_OPCODE_UP2H 54
270 #define TGSI_OPCODE_UP2US 55
271 #define TGSI_OPCODE_UP4B 56
272 #define TGSI_OPCODE_UP4UB 57
273 #define TGSI_OPCODE_X2D 58
274
275 /*
276 * GL_NV_vertex_program2
277 */
278 /* TGSI_OPCODE_ABS */
279 /* TGSI_OPCODE_ADD */
280 #define TGSI_OPCODE_ARA 59
281 /* TGSI_OPCODE_ARL */
282 #define TGSI_OPCODE_ARR 60
283 #define TGSI_OPCODE_BRA 61
284 #define TGSI_OPCODE_CAL 62
285 /* TGSI_OPCODE_COS */
286 /* TGSI_OPCODE_DP3 */
287 /* TGSI_OPCODE_DP4 */
288 /* TGSI_OPCODE_DPH */
289 /* TGSI_OPCODE_DST */
290 /* TGSI_OPCODE_EX2 */
291 /* TGSI_OPCODE_EXP */
292 /* TGSI_OPCODE_FLR */
293 /* TGSI_OPCODE_FRC */
294 /* TGSI_OPCODE_LG2 */
295 /* TGSI_OPCODE_LIT */
296 /* TGSI_OPCODE_LOG */
297 /* TGSI_OPCODE_MAD */
298 /* TGSI_OPCODE_MAX */
299 /* TGSI_OPCODE_MIN */
300 /* TGSI_OPCODE_MOV */
301 /* TGSI_OPCODE_MUL */
302 /* TGSI_OPCODE_RCC */
303 /* TGSI_OPCODE_RCP */
304 #define TGSI_OPCODE_RET 63
305 /* TGSI_OPCODE_RSQNV - use TGSI_OPCODE_RSQ */
306 /* TGSI_OPCODE_SEQ */
307 /* TGSI_OPCODE_SFL */
308 /* TGSI_OPCODE_SGE */
309 /* TGSI_OPCODE_SGT */
310 /* TGSI_OPCODE_SIN */
311 /* TGSI_OPCODE_SLE */
312 /* TGSI_OPCODE_SLT */
313 /* TGSI_OPCODE_SNE */
314 #define TGSI_OPCODE_SSG 64
315 /* TGSI_OPCODE_STR */
316 /* TGSI_OPCODE_SUB */
317
318 /*
319 * GL_ARB_vertex_program
320 */
321 /* TGSI_OPCODE_ABS */
322 /* TGSI_OPCODE_ADD */
323 /* TGSI_OPCODE_ARL */
324 /* TGSI_OPCODE_DP3 */
325 /* TGSI_OPCODE_DP4 */
326 /* TGSI_OPCODE_DPH */
327 /* TGSI_OPCODE_DST */
328 /* TGSI_OPCODE_EX2 */
329 /* TGSI_OPCODE_EXP */
330 /* TGSI_OPCODE_FLR */
331 /* TGSI_OPCODE_FRC */
332 /* TGSI_OPCODE_LG2 */
333 /* TGSI_OPCODE_LIT */
334 /* TGSI_OPCODE_LOG */
335 /* TGSI_OPCODE_MAD */
336 /* TGSI_OPCODE_MAX */
337 /* TGSI_OPCODE_MIN */
338 /* TGSI_OPCODE_MOV */
339 /* TGSI_OPCODE_MUL */
340 /* TGSI_OPCODE_POW */
341 /* TGSI_OPCODE_RCP */
342 /* TGSI_OPCODE_RSQ */
343 /* TGSI_OPCODE_SGE */
344 /* TGSI_OPCODE_SLT */
345 /* TGSI_OPCODE_SUB */
346 #define TGSI_OPCODE_SWZ TGSI_OPCODE_MOV
347 #define TGSI_OPCODE_XPD TGSI_OPCODE_CROSSPRODUCT
348
349 /*
350 * GL_ARB_fragment_program
351 */
352 /* TGSI_OPCODE_ABS */
353 /* TGSI_OPCODE_ADD */
354 #define TGSI_OPCODE_CMP 65
355 /* TGSI_OPCODE_COS */
356 /* TGSI_OPCODE_DP3 */
357 /* TGSI_OPCODE_DP4 */
358 /* TGSI_OPCODE_DPH */
359 /* TGSI_OPCODE_DST */
360 /* TGSI_OPCODE_EX2 */
361 /* TGSI_OPCODE_FLR */
362 /* TGSI_OPCODE_FRC */
363 /* TGSI_OPCODE_LG2 */
364 /* TGSI_OPCODE_LIT */
365 /* TGSI_OPCODE_LRP */
366 /* TGSI_OPCODE_MAD */
367 /* TGSI_OPCODE_MAX */
368 /* TGSI_OPCODE_MIN */
369 /* TGSI_OPCODE_MOV */
370 /* TGSI_OPCODE_MUL */
371 /* TGSI_OPCODE_POW */
372 /* TGSI_OPCODE_RCP */
373 /* TGSI_OPCODE_RSQ */
374 #define TGSI_OPCODE_SCS 66
375 /* TGSI_OPCODE_SGE */
376 /* TGSI_OPCODE_SIN */
377 /* TGSI_OPCODE_SLT */
378 /* TGSI_OPCODE_SUB */
379 /* TGSI_OPCODE_SWZ */
380 /* TGSI_OPCODE_XPD */
381 /* TGSI_OPCODE_TEX */
382 /* TGSI_OPCODE_TXP */
383 #define TGSI_OPCODE_TXB 67
384 /* TGSI_OPCODE_KIL */
385
386 /*
387 * GL_NV_fragment_program_option
388 */
389 /* TGSI_OPCODE_ABS */
390 /* TGSI_OPCODE_FLR */
391 /* TGSI_OPCODE_FRC */
392 /* TGSI_OPCODE_LIT */
393 /* TGSI_OPCODE_MOV */
394 /* TGSI_OPCODE_DDX */
395 /* TGSI_OPCODE_DDY */
396 /* TGSI_OPCODE_PK2H */
397 /* TGSI_OPCODE_PK2US */
398 /* TGSI_OPCODE_PK4B */
399 /* TGSI_OPCODE_PK4UB */
400 /* TGSI_OPCODE_COS */
401 /* TGSI_OPCODE_EX2 */
402 /* TGSI_OPCODE_LG2 */
403 /* TGSI_OPCODE_RCP */
404 /* TGSI_OPCODE_RSQ */
405 /* TGSI_OPCODE_SIN */
406 /* TGSI_OPCODE_SCS */
407 /* TGSI_OPCODE_UP2H */
408 /* TGSI_OPCODE_UP2US */
409 /* TGSI_OPCODE_UP4B */
410 /* TGSI_OPCODE_UP4UB */
411 /* TGSI_OPCODE_POW */
412 /* TGSI_OPCODE_ADD */
413 /* TGSI_OPCODE_DP3 */
414 /* TGSI_OPCODE_DP4 */
415 /* TGSI_OPCODE_DPH */
416 /* TGSI_OPCODE_DST */
417 /* TGSI_OPCODE_MAX */
418 /* TGSI_OPCODE_MIN */
419 /* TGSI_OPCODE_MUL */
420 /* TGSI_OPCODE_SGE */
421 /* TGSI_OPCODE_SLT */
422 /* TGSI_OPCODE_SUB */
423 /* TGSI_OPCODE_XPD */
424 /* TGSI_OPCODE_RFL */
425 /* TGSI_OPCODE_SEQ */
426 /* TGSI_OPCODE_SFL */
427 /* TGSI_OPCODE_SGT */
428 /* TGSI_OPCODE_SLE */
429 /* TGSI_OPCODE_SNE */
430 /* TGSI_OPCODE_STR */
431 /* TGSI_OPCODE_CMP */
432 /* TGSI_OPCODE_LRP */
433 /* TGSI_OPCODE_MAD */
434 /* TGSI_OPCODE_X2D */
435 /* TGSI_OPCODE_SWZ */
436 /* TGSI_OPCODE_TEX */
437 /* TGSI_OPCODE_TXP */
438 /* TGSI_OPCODE_TXB */
439 /* TGSI_OPCODE_KIL */
440 /* TGSI_OPCODE_TXD */
441
442 /*
443 * GL_NV_fragment_program2
444 */
445 /* TGSI_OPCODE_ABS */
446 /* TGSI_OPCODE_FLR */
447 /* TGSI_OPCODE_FRC */
448 /* TGSI_OPCODE_LIT */
449 /* TGSI_OPCODE_MOV */
450 /* TGSI_OPCODE_DDX */
451 /* TGSI_OPCODE_DDY */
452 /* TGSI_OPCODE_PK2H */
453 /* TGSI_OPCODE_PK2US */
454 /* TGSI_OPCODE_PK4B */
455 /* TGSI_OPCODE_PK4UB */
456 #define TGSI_OPCODE_NRM 68
457 #define TGSI_OPCODE_DIV 69
458 /* TGSI_OPCODE_COS */
459 /* TGSI_OPCODE_EX2 */
460 /* TGSI_OPCODE_LG2 */
461 /* TGSI_OPCODE_RCP */
462 /* TGSI_OPCODE_RSQ */
463 /* TGSI_OPCODE_SIN */
464 /* TGSI_OPCODE_SCS */
465 /* TGSI_OPCODE_UP2H */
466 /* TGSI_OPCODE_UP2US */
467 /* TGSI_OPCODE_UP4B */
468 /* TGSI_OPCODE_UP4UB */
469 /* TGSI_OPCODE_POW */
470 /* TGSI_OPCODE_ADD */
471 /* TGSI_OPCODE_DP3 */
472 /* TGSI_OPCODE_DP4 */
473 /* TGSI_OPCODE_DPH */
474 /* TGSI_OPCODE_DST */
475 /* TGSI_OPCODE_MAX */
476 /* TGSI_OPCODE_MIN */
477 /* TGSI_OPCODE_MUL */
478 /* TGSI_OPCODE_SGE */
479 /* TGSI_OPCODE_SLT */
480 /* TGSI_OPCODE_SUB */
481 /* TGSI_OPCODE_XPD */
482 /* TGSI_OPCODE_RFL */
483 /* TGSI_OPCODE_SEQ */
484 /* TGSI_OPCODE_SFL */
485 /* TGSI_OPCODE_SGT */
486 /* TGSI_OPCODE_SLE */
487 /* TGSI_OPCODE_SNE */
488 /* TGSI_OPCODE_STR */
489 #define TGSI_OPCODE_DP2 70
490 /* TGSI_OPCODE_CMP */
491 /* TGSI_OPCODE_LRP */
492 /* TGSI_OPCODE_MAD */
493 /* TGSI_OPCODE_X2D */
494 #define TGSI_OPCODE_DP2A TGSI_OPCODE_DOT2ADD
495 /* TGSI_OPCODE_SWZ */
496 /* TGSI_OPCODE_TEX */
497 /* TGSI_OPCODE_TXP */
498 /* TGSI_OPCODE_TXB */
499 #define TGSI_OPCODE_TXL 71
500 /* TGSI_OPCODE_KIL */
501 /* TGSI_OPCODE_TXD */
502 /* TGSI_OPCODE_CAL */
503 /* TGSI_OPCODE_RET */
504 #define TGSI_OPCODE_BRK 72
505 #define TGSI_OPCODE_IF 73
506 #define TGSI_OPCODE_LOOP 74
507 #define TGSI_OPCODE_REP 75
508 #define TGSI_OPCODE_ELSE 76
509 #define TGSI_OPCODE_ENDIF 77
510 #define TGSI_OPCODE_ENDLOOP 78
511 #define TGSI_OPCODE_ENDREP 79
512
513 /*
514 * GL_NV_vertex_program2_option
515 */
516 /* TGSI_OPCODE_ARL */
517 /* TGSI_OPCODE_ABS */
518 /* TGSI_OPCODE_FLR */
519 /* TGSI_OPCODE_FRC */
520 /* TGSI_OPCODE_LIT */
521 /* TGSI_OPCODE_MOV */
522 /* TGSI_OPCODE_SSG */
523 /* TGSI_OPCODE_EX2 */
524 /* TGSI_OPCODE_EXP */
525 /* TGSI_OPCODE_LG2 */
526 /* TGSI_OPCODE_LOG */
527 /* TGSI_OPCODE_RCP */
528 /* TGSI_OPCODE_RSQ */
529 /* TGSI_OPCODE_COS */
530 /* TGSI_OPCODE_RCC */
531 /* TGSI_OPCODE_SIN */
532 /* TGSI_OPCODE_POW */
533 /* TGSI_OPCODE_ADD */
534 /* TGSI_OPCODE_DP3 */
535 /* TGSI_OPCODE_DP4 */
536 /* TGSI_OPCODE_DPH */
537 /* TGSI_OPCODE_DST */
538 /* TGSI_OPCODE_MAX */
539 /* TGSI_OPCODE_MIN */
540 /* TGSI_OPCODE_MUL */
541 /* TGSI_OPCODE_SGE */
542 /* TGSI_OPCODE_SLT */
543 /* TGSI_OPCODE_SUB */
544 /* TGSI_OPCODE_XPD */
545 /* TGSI_OPCODE_SEQ */
546 /* TGSI_OPCODE_SFL */
547 /* TGSI_OPCODE_SGT */
548 /* TGSI_OPCODE_SLE */
549 /* TGSI_OPCODE_SNE */
550 /* TGSI_OPCODE_STR */
551 /* TGSI_OPCODE_MAD */
552 /* TGSI_OPCODE_SWZ */
553 /* TGSI_OPCODE_ARR */
554 /* TGSI_OPCODE_ARA */
555 /* TGSI_OPCODE_BRA */
556 /* TGSI_OPCODE_CAL */
557 /* TGSI_OPCODE_RET */
558
559 /*
560 * GL_NV_vertex_program3
561 */
562 /* TGSI_OPCODE_ARL */
563 /* TGSI_OPCODE_ABS */
564 /* TGSI_OPCODE_FLR */
565 /* TGSI_OPCODE_FRC */
566 /* TGSI_OPCODE_LIT */
567 /* TGSI_OPCODE_MOV */
568 /* TGSI_OPCODE_SSG */
569 /* TGSI_OPCODE_EX2 */
570 /* TGSI_OPCODE_EXP */
571 /* TGSI_OPCODE_LG2 */
572 /* TGSI_OPCODE_LOG */
573 /* TGSI_OPCODE_RCP */
574 /* TGSI_OPCODE_RSQ */
575 /* TGSI_OPCODE_COS */
576 /* TGSI_OPCODE_RCC */
577 /* TGSI_OPCODE_SIN */
578 /* TGSI_OPCODE_POW */
579 /* TGSI_OPCODE_ADD */
580 /* TGSI_OPCODE_DP3 */
581 /* TGSI_OPCODE_DP4 */
582 /* TGSI_OPCODE_DPH */
583 /* TGSI_OPCODE_DST */
584 /* TGSI_OPCODE_MAX */
585 /* TGSI_OPCODE_MIN */
586 /* TGSI_OPCODE_MUL */
587 /* TGSI_OPCODE_SGE */
588 /* TGSI_OPCODE_SLT */
589 /* TGSI_OPCODE_SUB */
590 /* TGSI_OPCODE_XPD */
591 /* TGSI_OPCODE_SEQ */
592 /* TGSI_OPCODE_SFL */
593 /* TGSI_OPCODE_SGT */
594 /* TGSI_OPCODE_SLE */
595 /* TGSI_OPCODE_SNE */
596 /* TGSI_OPCODE_STR */
597 /* TGSI_OPCODE_MAD */
598 /* TGSI_OPCODE_SWZ */
599 /* TGSI_OPCODE_ARR */
600 /* TGSI_OPCODE_ARA */
601 /* TGSI_OPCODE_BRA */
602 /* TGSI_OPCODE_CAL */
603 /* TGSI_OPCODE_RET */
604 #define TGSI_OPCODE_PUSHA 80
605 #define TGSI_OPCODE_POPA 81
606 /* TGSI_OPCODE_TEX */
607 /* TGSI_OPCODE_TXP */
608 /* TGSI_OPCODE_TXB */
609 /* TGSI_OPCODE_TXL */
610
611 /*
612 * GL_NV_gpu_program4
613 */
614 /* TGSI_OPCODE_ABS */
615 #define TGSI_OPCODE_CEIL 82
616 /* TGSI_OPCODE_FLR */
617 /* TGSI_OPCODE_FRC */
618 #define TGSI_OPCODE_I2F 83
619 /* TGSI_OPCODE_LIT */
620 /* TGSI_OPCODE_MOV */
621 #define TGSI_OPCODE_NOT 84
622 /* TGSI_OPCODE_NRM */
623 /* TGSI_OPCODE_PK2H */
624 /* TGSI_OPCODE_PK2US */
625 /* TGSI_OPCODE_PK4B */
626 /* TGSI_OPCODE_PK4UB */
627 /* TGSI_OPCODE_ROUND */
628 /* TGSI_OPCODE_SSG */
629 #define TGSI_OPCODE_TRUNC 85
630 /* TGSI_OPCODE_COS */
631 /* TGSI_OPCODE_EX2 */
632 /* TGSI_OPCODE_LG2 */
633 /* TGSI_OPCODE_RCC */
634 /* TGSI_OPCODE_RCP */
635 /* TGSI_OPCODE_RSQ */
636 /* TGSI_OPCODE_SCS */
637 /* TGSI_OPCODE_SIN */
638 /* TGSI_OPCODE_UP2H */
639 /* TGSI_OPCODE_UP2US */
640 /* TGSI_OPCODE_UP4B */
641 /* TGSI_OPCODE_UP4UB */
642 /* TGSI_OPCODE_POW */
643 /* TGSI_OPCODE_DIV */
644 #define TGSI_OPCODE_SHL 86
645 #define TGSI_OPCODE_SHR 87
646 /* TGSI_OPCODE_ADD */
647 #define TGSI_OPCODE_AND 88
648 /* TGSI_OPCODE_DP3 */
649 /* TGSI_OPCODE_DP4 */
650 /* TGSI_OPCODE_DPH */
651 /* TGSI_OPCODE_DST */
652 /* TGSI_OPCODE_MAX */
653 /* TGSI_OPCODE_MIN */
654 /* TGSI_OPCODE_MUL */
655 #define TGSI_OPCODE_OR 89
656 /* TGSI_OPCODE_RFL */
657 /* TGSI_OPCODE_SEQ */
658 /* TGSI_OPCODE_SFL */
659 /* TGSI_OPCODE_SGE */
660 /* TGSI_OPCODE_SGT */
661 /* TGSI_OPCODE_SLE */
662 /* TGSI_OPCODE_SLT */
663 /* TGSI_OPCODE_SNE */
664 /* TGSI_OPCODE_STR */
665 /* TGSI_OPCODE_SUB */
666 /* TGSI_OPCODE_XPD */
667 /* TGSI_OPCODE_DP2 */
668 #define TGSI_OPCODE_MOD 90
669 #define TGSI_OPCODE_XOR 91
670 /* TGSI_OPCODE_CMP */
671 /* TGSI_OPCODE_DP2A */
672 /* TGSI_OPCODE_LRP */
673 /* TGSI_OPCODE_MAD */
674 #define TGSI_OPCODE_SAD 92
675 /* TGSI_OPCODE_X2D */
676 /* TGSI_OPCODE_SWZ */
677 /* TGSI_OPCODE_TEX */
678 /* TGSI_OPCODE_TXB */
679 #define TGSI_OPCODE_TXF 93
680 /* TGSI_OPCODE_TXL */
681 /* TGSI_OPCODE_TXP */
682 #define TGSI_OPCODE_TXQ 94
683 /* TGSI_OPCODE_TXD */
684 /* TGSI_OPCODE_CAL */
685 /* TGSI_OPCODE_RET */
686 /* TGSI_OPCODE_BRK */
687 #define TGSI_OPCODE_CONT 95
688 /* TGSI_OPCODE_IF */
689 /* TGSI_OPCODE_REP */
690 /* TGSI_OPCODE_ELSE */
691 /* TGSI_OPCODE_ENDIF */
692 /* TGSI_OPCODE_ENDREP */
693
694 /*
695 * GL_NV_vertex_program4
696 */
697 /* Same as GL_NV_gpu_program4 */
698
699 /*
700 * GL_NV_fragment_program4
701 */
702 /* Same as GL_NV_gpu_program4 */
703 /* TGSI_OPCODE_KIL */
704 /* TGSI_OPCODE_DDX */
705 /* TGSI_OPCODE_DDY */
706
707 /*
708 * GL_NV_geometry_program4
709 */
710 /* Same as GL_NV_gpu_program4 */
711 #define TGSI_OPCODE_EMIT 96
712 #define TGSI_OPCODE_ENDPRIM 97
713
714 /*
715 * GLSL
716 */
717 /* TGSI_OPCODE_ABS */
718 /* TGSI_OPCODE_ADD */
719 #define TGSI_OPCODE_BGNLOOP2 98
720 #define TGSI_OPCODE_BGNSUB 99
721 /* TGSI_OPCODE_BRA */
722 /* TGSI_OPCODE_BRK */
723 /* TGSI_OPCODE_CONT */
724 /* TGSI_OPCODE_COS */
725 /* TGSI_OPCODE_DDX */
726 /* TGSI_OPCODE_DDY */
727 /* TGSI_OPCODE_DP3 */
728 /* TGSI_OPCODE_DP4 */
729 /* TGSI_OPCODE_ELSE */
730 /* TGSI_OPCODE_ENDIF */
731 #define TGSI_OPCODE_ENDLOOP2 100
732 #define TGSI_OPCODE_ENDSUB 101
733 /* TGSI_OPCODE_EX2 */
734 /* TGSI_OPCODE_EXP */
735 /* TGSI_OPCODE_FLR */
736 /* TGSI_OPCODE_FRC */
737 /* TGSI_OPCODE_IF */
738 #define TGSI_OPCODE_INT TGSI_OPCODE_TRUNC
739 /* TGSI_OPCODE_KIL */
740 /* TGSI_OPCODE_LG2 */
741 /* TGSI_OPCODE_LOG */
742 /* TGSI_OPCODE_MAD */
743 /* TGSI_OPCODE_MAX */
744 /* TGSI_OPCODE_MIN */
745 /* TGSI_OPCODE_MOV */
746 /* TGSI_OPCODE_MUL */
747 #define TGSI_OPCODE_NOISE1 102
748 #define TGSI_OPCODE_NOISE2 103
749 #define TGSI_OPCODE_NOISE3 104
750 #define TGSI_OPCODE_NOISE4 105
751 #define TGSI_OPCODE_NOP 106
752 /* TGSI_OPCODE_POW */
753 /* TGSI_OPCODE_RCP */
754 /* TGSI_OPCODE_RSQ */
755 /* TGSI_OPCODE_SEQ */
756 /* TGSI_OPCODE_SGE */
757 /* TGSI_OPCODE_SGT */
758 /* TGSI_OPCODE_SIN */
759 /* TGSI_OPCODE_SLE */
760 /* TGSI_OPCODE_SLT */
761 /* TGSI_OPCODE_SNE */
762 /* TGSI_OPCODE_SUB */
763 /* TGSI_OPCODE_TEX */
764 /* TGSI_OPCODE_TXB */
765 /* TGSI_OPCODE_TXD */
766 /* TGSI_OPCODE_TXL */
767 /* TGSI_OPCODE_TXP */
768 /* TGSI_OPCODE_XPD */
769
770 /*
771 * ps_1_1
772 */
773 /* TGSI_OPCODE_NOP */
774 /* TGSI_OPCODE_MOV */
775 /* TGSI_OPCODE_ADD */
776 /* TGSI_OPCODE_SUB */
777 /* TGSI_OPCODE_MAD */
778 /* TGSI_OPCODE_MUL */
779 /* TGSI_OPCODE_DP3 */
780 /* TGSI_OPCODE_LRP */
781 #define TGSI_OPCODE_TEXCOORD TGSI_OPCODE_NOP
782 #define TGSI_OPCODE_TEXKILL TGSI_OPCODE_KIL
783 /* TGSI_OPCODE_TEX */
784 #define TGSI_OPCODE_TEXBEM 107
785 #define TGSI_OPCODE_TEXBEML 108
786 #define TGSI_OPCODE_TEXREG2AR 109
787 #define TGSI_OPCODE_TEXM3X2PAD 110
788 #define TGSI_OPCODE_TEXM3X2TEX 111
789 #define TGSI_OPCODE_TEXM3X3PAD 112
790 #define TGSI_OPCODE_TEXM3X3TEX 113
791 #define TGSI_OPCODE_TEXM3X3SPEC 114
792 #define TGSI_OPCODE_TEXM3X3VSPEC 115
793 /* TGSI_OPCODE_CND */
794
795 /*
796 * ps_1_2
797 */
798 /* TGSI_OPCODE_NOP */
799 /* TGSI_OPCODE_MOV */
800 /* TGSI_OPCODE_ADD */
801 /* TGSI_OPCODE_SUB */
802 /* TGSI_OPCODE_MAD */
803 /* TGSI_OPCODE_MUL */
804 /* TGSI_OPCODE_DP3 */
805 /* TGSI_OPCODE_DP4 */
806 /* TGSI_OPCODE_LRP */
807 /* TGSI_OPCODE_TEXCOORD */
808 /* TGSI_OPCODE_TEXKILL */
809 /* TGSI_OPCODE_TEX */
810 /* TGSI_OPCODE_TEXBEM */
811 /* TGSI_OPCODE_TEXBEML */
812 /* TGSI_OPCODE_TEXREG2AR */
813 #define TGSI_OPCODE_TEXREG2GB 116
814 /* TGSI_OPCODE_TEXM3X2PAD */
815 /* TGSI_OPCODE_TEXM3X2TEX */
816 /* TGSI_OPCODE_TEXM3X3PAD */
817 /* TGSI_OPCODE_TEXM3X3TEX */
818 /* TGSI_OPCODE_TEXM3X3SPEC */
819 /* TGSI_OPCODE_TEXM3X3VSPEC */
820 /* TGSI_OPCODE_CND */
821 #define TGSI_OPCODE_TEXREG2RGB 117
822 #define TGSI_OPCODE_TEXDP3TEX 118
823 #define TGSI_OPCODE_TEXDP3 119
824 #define TGSI_OPCODE_TEXM3X3 120
825 /* CMP - use TGSI_OPCODE_CND0 */
826
827 /*
828 * ps_1_3
829 */
830 /* TGSI_OPCODE_NOP */
831 /* TGSI_OPCODE_MOV */
832 /* TGSI_OPCODE_ADD */
833 /* TGSI_OPCODE_SUB */
834 /* TGSI_OPCODE_MAD */
835 /* TGSI_OPCODE_MUL */
836 /* TGSI_OPCODE_DP3 */
837 /* TGSI_OPCODE_DP4 */
838 /* TGSI_OPCODE_LRP */
839 /* TGSI_OPCODE_TEXCOORD */
840 /* TGSI_OPCODE_TEXKILL */
841 /* TGSI_OPCODE_TEX */
842 /* TGSI_OPCODE_TEXBEM */
843 /* TGSI_OPCODE_TEXBEML */
844 /* TGSI_OPCODE_TEXREG2AR */
845 /* TGSI_OPCODE_TEXREG2GB */
846 /* TGSI_OPCODE_TEXM3X2PAD */
847 /* TGSI_OPCODE_TEXM3X2TEX */
848 /* TGSI_OPCODE_TEXM3X3PAD */
849 /* TGSI_OPCODE_TEXM3X3TEX */
850 /* TGSI_OPCODE_TEXM3X3SPEC */
851 /* TGSI_OPCODE_TEXM3X3VSPEC */
852 /* TGSI_OPCODE_CND */
853 /* TGSI_OPCODE_TEXREG2RGB */
854 /* TGSI_OPCODE_TEXDP3TEX */
855 #define TGSI_OPCODE_TEXM3X2DEPTH 121
856 /* TGSI_OPCODE_TEXDP3 */
857 /* TGSI_OPCODE_TEXM3X3 */
858 /* CMP - use TGSI_OPCODE_CND0 */
859
860 /*
861 * ps_1_4
862 */
863 /* TGSI_OPCODE_NOP */
864 /* TGSI_OPCODE_MOV */
865 /* TGSI_OPCODE_ADD */
866 /* TGSI_OPCODE_SUB */
867 /* TGSI_OPCODE_MAD */
868 /* TGSI_OPCODE_MUL */
869 /* TGSI_OPCODE_DP3 */
870 /* TGSI_OPCODE_DP4 */
871 /* TGSI_OPCODE_LRP */
872 #define TGSI_OPCODE_TEXCRD TGSI_OPCODE_TEXCOORD
873 /* TGSI_OPCODE_TEXKILL */
874 #define TGSI_OPCODE_TEXLD TGSI_OPCODE_TEX
875 /* TGSI_OPCODE_CND */
876 #define TGSI_OPCODE_TEXDEPTH 122
877 /* CMP - use TGSI_OPCODE_CND0 */
878 #define TGSI_OPCODE_BEM 123
879
880 /*
881 * ps_2_0
882 */
883 /* TGSI_OPCODE_NOP */
884 /* TGSI_OPCODE_MOV */
885 /* TGSI_OPCODE_ADD */
886 /* TGSI_OPCODE_SUB */
887 /* TGSI_OPCODE_MAD */
888 /* TGSI_OPCODE_MUL */
889 /* TGSI_OPCODE_RCP */
890 /* TGSI_OPCODE_RSQ */ /* XXX: takes ABS */
891 /* TGSI_OPCODE_DP3 */
892 /* TGSI_OPCODE_DP4 */
893 /* TGSI_OPCODE_MIN */
894 /* TGSI_OPCODE_MAX */
895 /* EXP - use TGSI_OPCODE_EX2 */
896 /* LOG - use TGSI_OPCODE_LG2 */
897 /* TGSI_OPCODE_LRP */
898 /* TGSI_OPCODE_FRC */
899 #define TGSI_OPCODE_M4X4 TGSI_OPCODE_MULTIPLYMATRIX
900 #define TGSI_OPCODE_M4X3 124
901 #define TGSI_OPCODE_M3X4 125
902 #define TGSI_OPCODE_M3X3 126
903 #define TGSI_OPCODE_M3X2 127
904 /* TGSI_OPCODE_POW */ /* XXX: takes ABS */
905 #define TGSI_OPCODE_CRS TGSI_OPCODE_XPD
906 /* TGSI_OPCODE_ABS */
907 #define TGSI_OPCODE_NRM4 128
908 #define TGSI_OPCODE_SINCOS TGSI_OPCODE_SCS
909 /* TGSI_OPCODE_TEXKILL */
910 /* TGSI_OPCODE_TEXLD */
911 #define TGSI_OPCODE_TEXLDB TGSI_OPCODE_TXB
912 #define TGSI_OPCODE_TEXLDP TGSI_OPCODE_TXP
913 /* CMP - use TGSI_OPCODE_CND0 */
914 #define TGSI_OPCODE_DP2ADD TGSI_OPCODE_DP2A
915
916 /*
917 * ps_2_x
918 */
919 /* TGSI_OPCODE_NOP */
920 /* TGSI_OPCODE_MOV */
921 /* TGSI_OPCODE_ADD */
922 /* TGSI_OPCODE_SUB */
923 /* TGSI_OPCODE_MAD */
924 /* TGSI_OPCODE_MUL */
925 /* TGSI_OPCODE_RCP */
926 /* TGSI_OPCODE_RSQ */ /* XXX: takes ABS */
927 /* TGSI_OPCODE_DP3 */
928 /* TGSI_OPCODE_DP4 */
929 /* TGSI_OPCODE_MIN */
930 /* TGSI_OPCODE_MAX */
931 /* TGSI_OPCODE_SLT */
932 /* TGSI_OPCODE_SGE */
933 /* TGSI_OPCODE_SGT */
934 /* TGSI_OPCODE_SLE */
935 /* TGSI_OPCODE_SEQ */
936 /* TGSI_OPCODE_SNE */
937 /* EXP - use TGSI_OPCODE_EX2 */
938 /* LOG - use TGSI_OPCODE_LG2 */
939 /* TGSI_OPCODE_LRP */
940 /* TGSI_OPCODE_FRC */
941 /* TGSI_OPCODE_M4X4 */
942 /* TGSI_OPCODE_M4X3 */
943 /* TGSI_OPCODE_M3X4 */
944 /* TGSI_OPCODE_M3X3 */
945 /* TGSI_OPCODE_M3X2 */
946 #define TGSI_OPCODE_CALL TGSI_OPCODE_CAL
947 #define TGSI_OPCODE_CALLNZ 129
948 /* TGSI_OPCODE_RET */
949 /* TGSI_OPCODE_POW */ /* XXX: takes ABS */
950 /* TGSI_OPCODE_CRS */
951 /* TGSI_OPCODE_ABS */
952 /* TGSI_OPCODE_NRM4 */
953 /* TGSI_OPCODE_SINCOS */
954 /* TGSI_OPCODE_REP */
955 /* TGSI_OPCODE_ENDREP */
956 /* TGSI_OPCODE_IF */
957 #define TGSI_OPCODE_IFC 130
958 /* TGSI_OPCODE_ELSE */
959 /* TGSI_OPCODE_ENDIF */
960 #define TGSI_OPCODE_BREAK TGSI_OPCODE_BRK
961 #define TGSI_OPCODE_BREAKC 131
962 /* TGSI_OPCODE_TEXKILL */
963 /* TGSI_OPCODE_TEXLD */
964 /* TGSI_OPCODE_TEXLDB */
965 /* CMP - use TGSI_OPCODE_CND0 */
966 /* TGSI_OPCODE_DP2ADD */
967 #define TGSI_OPCODE_DSX TGSI_OPCODE_DDX
968 #define TGSI_OPCODE_DSY TGSI_OPCODE_DDY
969 #define TGSI_OPCODE_TEXLDD TGSI_OPCODE_TXD
970 /* TGSI_OPCODE_TEXLDP */
971
972 /*
973 * vs_1_1
974 */
975 /* TGSI_OPCODE_NOP */
976 /* TGSI_OPCODE_MOV */
977 /* TGSI_OPCODE_ADD */
978 /* TGSI_OPCODE_SUB */
979 /* TGSI_OPCODE_MAD */
980 /* TGSI_OPCODE_MUL */
981 /* TGSI_OPCODE_RCP */
982 /* TGSI_OPCODE_RSQ */ /* XXX: takes ABS */
983 /* TGSI_OPCODE_DP3 */
984 /* TGSI_OPCODE_DP4 */
985 /* TGSI_OPCODE_MIN */
986 /* TGSI_OPCODE_MAX */
987 /* TGSI_OPCODE_SLT */
988 /* TGSI_OPCODE_SGE */
989 /* EXP - use TGSI_OPCODE_EX2 */
990 /* LOG - use TGSI_OPCODE_LG2 */
991 /* TGSI_OPCODE_LIT */
992 /* TGSI_OPCODE_DST */
993 /* TGSI_OPCODE_FRC */
994 /* TGSI_OPCODE_M4X4 */
995 /* TGSI_OPCODE_M4X3 */
996 /* TGSI_OPCODE_M3X4 */
997 /* TGSI_OPCODE_M3X3 */
998 /* TGSI_OPCODE_M3X2 */
999 #define TGSI_OPCODE_EXPP TGSI_OPCODE_EXP
1000 #define TGSI_OPCODE_LOGP TGSI_OPCODE_LG2
1001
1002 /*
1003 * vs_2_0
1004 */
1005 /* TGSI_OPCODE_NOP */
1006 /* TGSI_OPCODE_MOV */
1007 /* TGSI_OPCODE_ADD */
1008 /* TGSI_OPCODE_SUB */
1009 /* TGSI_OPCODE_MAD */
1010 /* TGSI_OPCODE_MUL */
1011 /* TGSI_OPCODE_RCP */
1012 /* TGSI_OPCODE_RSQ */ /* XXX: takes ABS */
1013 /* TGSI_OPCODE_DP3 */
1014 /* TGSI_OPCODE_DP4 */
1015 /* TGSI_OPCODE_MIN */
1016 /* TGSI_OPCODE_MAX */
1017 /* TGSI_OPCODE_SLT */
1018 /* TGSI_OPCODE_SGE */
1019 /* EXP - use TGSI_OPCODE_EX2 */
1020 /* LOG - use TGSI_OPCODE_LG2 */
1021 /* TGSI_OPCODE_LIT */
1022 /* TGSI_OPCODE_DST */
1023 /* TGSI_OPCODE_LRP */
1024 /* TGSI_OPCODE_FRC */
1025 /* TGSI_OPCODE_M4X4 */
1026 /* TGSI_OPCODE_M4X3 */
1027 /* TGSI_OPCODE_M3X4 */
1028 /* TGSI_OPCODE_M3X3 */
1029 /* TGSI_OPCODE_M3X2 */
1030 /* TGSI_OPCODE_CALL */
1031 /* TGSI_OPCODE_CALLNZ */
1032 /* TGSI_OPCODE_LOOP */
1033 /* TGSI_OPCODE_RET */
1034 /* TGSI_OPCODE_ENDLOOP */
1035 /* TGSI_OPCODE_POW */ /* XXX: takes ABS */
1036 /* TGSI_OPCODE_CRS */
1037 #define TGSI_OPCODE_SGN TGSI_OPCODE_SSG
1038 /* TGSI_OPCODE_ABS */
1039 /* TGSI_OPCODE_NRM4 */
1040 /* TGSI_OPCODE_SINCOS */
1041 /* TGSI_OPCODE_REP */
1042 /* TGSI_OPCODE_ENDREP */
1043 /* TGSI_OPCODE_IF */
1044 /* TGSI_OPCODE_ELSE */
1045 /* TGSI_OPCODE_ENDIF */
1046 #define TGSI_OPCODE_MOVA TGSI_OPCODE_ARR
1047 /* TGSI_OPCODE_LOGP */
1048
1049 /*
1050 * vs_2_x
1051 */
1052 /* TGSI_OPCODE_NOP */
1053 /* TGSI_OPCODE_MOV */
1054 /* TGSI_OPCODE_ADD */
1055 /* TGSI_OPCODE_SUB */
1056 /* TGSI_OPCODE_MAD */
1057 /* TGSI_OPCODE_MUL */
1058 /* TGSI_OPCODE_RCP */
1059 /* TGSI_OPCODE_RSQ */ /* XXX: takes ABS */
1060 /* TGSI_OPCODE_DP3 */
1061 /* TGSI_OPCODE_DP4 */
1062 /* TGSI_OPCODE_MIN */
1063 /* TGSI_OPCODE_MAX */
1064 /* TGSI_OPCODE_SLT */
1065 /* TGSI_OPCODE_SGE */
1066 /* TGSI_OPCODE_SGT */
1067 /* TGSI_OPCODE_SLE */
1068 /* TGSI_OPCODE_SEQ */
1069 /* TGSI_OPCODE_SNE */
1070 /* EXP - use TGSI_OPCODE_EX2 */
1071 /* LOG - use TGSI_OPCODE_LG2 */
1072 /* TGSI_OPCODE_LIT */
1073 /* TGSI_OPCODE_DST */
1074 /* TGSI_OPCODE_LRP */
1075 /* TGSI_OPCODE_FRC */
1076 /* TGSI_OPCODE_M4X4 */
1077 /* TGSI_OPCODE_M4X3 */
1078 /* TGSI_OPCODE_M3X4 */
1079 /* TGSI_OPCODE_M3X3 */
1080 /* TGSI_OPCODE_M3X2 */
1081 /* TGSI_OPCODE_CALL */
1082 /* TGSI_OPCODE_CALLNZ */
1083 /* TGSI_OPCODE_LOOP */
1084 /* TGSI_OPCODE_RET */
1085 /* TGSI_OPCODE_ENDLOOP */
1086 /* TGSI_OPCODE_POW */ /* XXX: takes ABS */
1087 /* TGSI_OPCODE_CRS */
1088 /* TGSI_OPCODE_SGN */
1089 /* TGSI_OPCODE_ABS */
1090 /* TGSI_OPCODE_NRM4 */
1091 /* TGSI_OPCODE_SINCOS */
1092 /* TGSI_OPCODE_REP */
1093 /* TGSI_OPCODE_ENDREP */
1094 /* TGSI_OPCODE_IF */
1095 /* TGSI_OPCODE_IFC */
1096 /* TGSI_OPCODE_ELSE */
1097 /* TGSI_OPCODE_ENDIF */
1098 /* TGSI_OPCODE_BREAK */
1099 /* TGSI_OPCODE_BREAKC */
1100 /* TGSI_OPCODE_MOVA */
1101 /* TGSI_OPCODE_LOGP */
1102
1103 #define TGSI_OPCODE_LAST 133
1104
1105 #define TGSI_SAT_NONE 0 /* do not saturate */
1106 #define TGSI_SAT_ZERO_ONE 1 /* clamp to [0,1] */
1107 #define TGSI_SAT_MINUS_PLUS_ONE 2 /* clamp to [-1,1] */
1108
1109 /*
1110 * Opcode is the operation code to execute. A given operation defines the
1111 * semantics how the source registers (if any) are interpreted and what is
1112 * written to the destination registers (if any) as a result of execution.
1113 *
1114 * NumDstRegs and NumSrcRegs is the number of destination and source registers,
1115 * respectively. For a given operation code, those numbers are fixed and are
1116 * present here only for convenience.
1117 *
1118 * If Extended is TRUE, it is now executed.
1119 *
1120 * Saturate controls how are final results in destination registers modified.
1121 */
1122
1123 struct tgsi_instruction
1124 {
1125 unsigned Type : 4; /* TGSI_TOKEN_TYPE_INSTRUCTION */
1126 unsigned Size : 8; /* UINT */
1127 unsigned Opcode : 8; /* TGSI_OPCODE_ */
1128 unsigned Saturate : 2; /* TGSI_SAT_ */
1129 unsigned NumDstRegs : 2; /* UINT */
1130 unsigned NumSrcRegs : 4; /* UINT */
1131 unsigned Padding : 3;
1132 unsigned Extended : 1; /* BOOL */
1133 };
1134
1135 /*
1136 * If tgsi_instruction::Extended is TRUE, tgsi_instruction_ext follows.
1137 *
1138 * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow.
1139 *
1140 * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow.
1141 *
1142 * tgsi_instruction::Size contains the total number of words that make the
1143 * instruction, including the instruction word.
1144 */
1145
1146 #define TGSI_INSTRUCTION_EXT_TYPE_NV 0
1147 #define TGSI_INSTRUCTION_EXT_TYPE_LABEL 1
1148 #define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE 2
1149 #define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3
1150
1151 struct tgsi_instruction_ext
1152 {
1153 unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_ */
1154 unsigned Padding : 27;
1155 unsigned Extended : 1; /* BOOL */
1156 };
1157
1158 /*
1159 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_NV, it should
1160 * be cast to tgsi_instruction_ext_nv.
1161 *
1162 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_LABEL, it
1163 * should be cast to tgsi_instruction_ext_label.
1164 *
1165 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
1166 * should be cast to tgsi_instruction_ext_texture.
1167 *
1168 * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it
1169 * should be cast to tgsi_instruction_ext_predicate.
1170 *
1171 * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
1172 * follows.
1173 */
1174
1175 #define TGSI_PRECISION_DEFAULT 0
1176 #define TGSI_PRECISION_FLOAT32 1
1177 #define TGSI_PRECISION_FLOAT16 2
1178 #define TGSI_PRECISION_FIXED12 3
1179
1180 #define TGSI_CC_GT 0
1181 #define TGSI_CC_EQ 1
1182 #define TGSI_CC_LT 2
1183 #define TGSI_CC_UN 3
1184 #define TGSI_CC_GE 4
1185 #define TGSI_CC_LE 5
1186 #define TGSI_CC_NE 6
1187 #define TGSI_CC_TR 7
1188 #define TGSI_CC_FL 8
1189
1190 #define TGSI_SWIZZLE_X 0
1191 #define TGSI_SWIZZLE_Y 1
1192 #define TGSI_SWIZZLE_Z 2
1193 #define TGSI_SWIZZLE_W 3
1194
1195 /*
1196 * Precision controls the precision at which the operation should be executed.
1197 *
1198 * CondDstUpdate enables condition code register writes. When this field is
1199 * TRUE, CondDstIndex specifies the index of the condition code register to
1200 * update.
1201 *
1202 * CondFlowEnable enables conditional execution of the operation. When this
1203 * field is TRUE, CondFlowIndex specifies the index of the condition code
1204 * register to test against CondMask with component swizzle controled by
1205 * CondSwizzleX, CondSwizzleY, CondSwizzleZ and CondSwizzleW. If the test fails,
1206 * the operation is not executed.
1207 */
1208
1209 struct tgsi_instruction_ext_nv
1210 {
1211 unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_NV */
1212 unsigned Precision : 4; /* TGSI_PRECISION_ */
1213 unsigned CondDstIndex : 4; /* UINT */
1214 unsigned CondFlowIndex : 4; /* UINT */
1215 unsigned CondMask : 4; /* TGSI_CC_ */
1216 unsigned CondSwizzleX : 2; /* TGSI_SWIZZLE_ */
1217 unsigned CondSwizzleY : 2; /* TGSI_SWIZZLE_ */
1218 unsigned CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */
1219 unsigned CondSwizzleW : 2; /* TGSI_SWIZZLE_ */
1220 unsigned CondDstUpdate : 1; /* BOOL */
1221 unsigned CondFlowEnable : 1; /* BOOL */
1222 unsigned Padding : 1;
1223 unsigned Extended : 1; /* BOOL */
1224 };
1225
1226 struct tgsi_instruction_ext_label
1227 {
1228 unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_LABEL */
1229 unsigned Label : 24; /* UINT */
1230 unsigned Padding : 3;
1231 unsigned Extended : 1; /* BOOL */
1232 };
1233
1234 #define TGSI_TEXTURE_UNKNOWN 0
1235 #define TGSI_TEXTURE_1D 1
1236 #define TGSI_TEXTURE_2D 2
1237 #define TGSI_TEXTURE_3D 3
1238 #define TGSI_TEXTURE_CUBE 4
1239 #define TGSI_TEXTURE_RECT 5
1240 #define TGSI_TEXTURE_SHADOW1D 6
1241 #define TGSI_TEXTURE_SHADOW2D 7
1242 #define TGSI_TEXTURE_SHADOWRECT 8
1243
1244 struct tgsi_instruction_ext_texture
1245 {
1246 unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_TEXTURE */
1247 unsigned Texture : 8; /* TGSI_TEXTURE_ */
1248 unsigned Padding : 19;
1249 unsigned Extended : 1; /* BOOL */
1250 };
1251
1252 struct tgsi_instruction_ext_predicate
1253 {
1254 unsigned Type : 4; /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */
1255 unsigned PredDstIndex : 4; /* UINT */
1256 unsigned PredWriteMask : 4; /* TGSI_WRITEMASK_ */
1257 unsigned Padding : 19;
1258 unsigned Extended : 1; /* BOOL */
1259 };
1260
1261 /*
1262 * File specifies the register array to access.
1263 *
1264 * Index specifies the element number of a register in the register file.
1265 *
1266 * If Indirect is TRUE, Index should be offset by the X component of a source
1267 * register that follows. The register can be now fetched into local storage
1268 * for further processing.
1269 *
1270 * If Negate is TRUE, all components of the fetched register are negated.
1271 *
1272 * The fetched register components are swizzled according to SwizzleX, SwizzleY,
1273 * SwizzleZ and SwizzleW.
1274 *
1275 * If Extended is TRUE, any further modifications to the source register are
1276 * made to this temporary storage.
1277 */
1278
1279 struct tgsi_src_register
1280 {
1281 unsigned File : 4; /* TGSI_FILE_ */
1282 unsigned SwizzleX : 2; /* TGSI_SWIZZLE_ */
1283 unsigned SwizzleY : 2; /* TGSI_SWIZZLE_ */
1284 unsigned SwizzleZ : 2; /* TGSI_SWIZZLE_ */
1285 unsigned SwizzleW : 2; /* TGSI_SWIZZLE_ */
1286 unsigned Negate : 1; /* BOOL */
1287 unsigned Indirect : 1; /* BOOL */
1288 unsigned Dimension : 1; /* BOOL */
1289 int Index : 16; /* SINT */
1290 unsigned Extended : 1; /* BOOL */
1291 };
1292
1293 /*
1294 * If tgsi_src_register::Extended is TRUE, tgsi_src_register_ext follows.
1295 *
1296 * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register
1297 * follows.
1298 *
1299 * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows.
1300 */
1301
1302 #define TGSI_SRC_REGISTER_EXT_TYPE_SWZ 0
1303 #define TGSI_SRC_REGISTER_EXT_TYPE_MOD 1
1304
1305 struct tgsi_src_register_ext
1306 {
1307 unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_ */
1308 unsigned Padding : 27;
1309 unsigned Extended : 1; /* BOOL */
1310 };
1311
1312 /*
1313 * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_SWZ,
1314 * it should be cast to tgsi_src_register_ext_extswz.
1315 *
1316 * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_MOD,
1317 * it should be cast to tgsi_src_register_ext_mod.
1318 *
1319 * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
1320 * follows.
1321 */
1322
1323 #define TGSI_EXTSWIZZLE_X TGSI_SWIZZLE_X
1324 #define TGSI_EXTSWIZZLE_Y TGSI_SWIZZLE_Y
1325 #define TGSI_EXTSWIZZLE_Z TGSI_SWIZZLE_Z
1326 #define TGSI_EXTSWIZZLE_W TGSI_SWIZZLE_W
1327 #define TGSI_EXTSWIZZLE_ZERO 4
1328 #define TGSI_EXTSWIZZLE_ONE 5
1329
1330 /*
1331 * ExtSwizzleX, ExtSwizzleY, ExtSwizzleZ and ExtSwizzleW swizzle the source
1332 * register in an extended manner.
1333 *
1334 * NegateX, NegateY, NegateZ and NegateW negate individual components of the
1335 * source register.
1336 *
1337 * ExtDivide specifies which component is used to divide all components of the
1338 * source register.
1339 */
1340
1341 struct tgsi_src_register_ext_swz
1342 {
1343 unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_SWZ */
1344 unsigned ExtSwizzleX : 4; /* TGSI_EXTSWIZZLE_ */
1345 unsigned ExtSwizzleY : 4; /* TGSI_EXTSWIZZLE_ */
1346 unsigned ExtSwizzleZ : 4; /* TGSI_EXTSWIZZLE_ */
1347 unsigned ExtSwizzleW : 4; /* TGSI_EXTSWIZZLE_ */
1348 unsigned NegateX : 1; /* BOOL */
1349 unsigned NegateY : 1; /* BOOL */
1350 unsigned NegateZ : 1; /* BOOL */
1351 unsigned NegateW : 1; /* BOOL */
1352 unsigned ExtDivide : 4; /* TGSI_EXTSWIZZLE_ */
1353 unsigned Padding : 3;
1354 unsigned Extended : 1; /* BOOL */
1355 };
1356
1357 /**
1358 * Extra src register modifiers
1359 *
1360 * If Complement is TRUE, the source register is modified by subtracting it
1361 * from 1.0.
1362 *
1363 * If Bias is TRUE, the source register is modified by subtracting 0.5 from it.
1364 *
1365 * If Scale2X is TRUE, the source register is modified by multiplying it by 2.0.
1366 *
1367 * If Absolute is TRUE, the source register is modified by removing the sign.
1368 *
1369 * If Negate is TRUE, the source register is modified by negating it.
1370 */
1371
1372 struct tgsi_src_register_ext_mod
1373 {
1374 unsigned Type : 4; /* TGSI_SRC_REGISTER_EXT_TYPE_MOD */
1375 unsigned Complement : 1; /* BOOL */
1376 unsigned Bias : 1; /* BOOL */
1377 unsigned Scale2X : 1; /* BOOL */
1378 unsigned Absolute : 1; /* BOOL */
1379 unsigned Negate : 1; /* BOOL */
1380 unsigned Padding : 22;
1381 unsigned Extended : 1; /* BOOL */
1382 };
1383
1384 struct tgsi_dimension
1385 {
1386 unsigned Indirect : 1; /* BOOL */
1387 unsigned Dimension : 1; /* BOOL */
1388 unsigned Padding : 13;
1389 int Index : 16; /* SINT */
1390 unsigned Extended : 1; /* BOOL */
1391 };
1392
1393 struct tgsi_dst_register
1394 {
1395 unsigned File : 4; /* TGSI_FILE_ */
1396 unsigned WriteMask : 4; /* TGSI_WRITEMASK_ */
1397 unsigned Indirect : 1; /* BOOL */
1398 unsigned Dimension : 1; /* BOOL */
1399 int Index : 16; /* SINT */
1400 unsigned Padding : 5;
1401 unsigned Extended : 1; /* BOOL */
1402 };
1403
1404 /*
1405 * If tgsi_dst_register::Extended is TRUE, tgsi_dst_register_ext follows.
1406 *
1407 * Then, if tgsi_dst_register::Indirect is TRUE, tgsi_src_register follows.
1408 */
1409
1410 #define TGSI_DST_REGISTER_EXT_TYPE_CONDCODE 0
1411 #define TGSI_DST_REGISTER_EXT_TYPE_MODULATE 1
1412 #define TGSI_DST_REGISTER_EXT_TYPE_PREDICATE 2
1413
1414 struct tgsi_dst_register_ext
1415 {
1416 unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_ */
1417 unsigned Padding : 27;
1418 unsigned Extended : 1; /* BOOL */
1419 };
1420
1421 /**
1422 * Extra destination register modifiers
1423 *
1424 * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_CONDCODE,
1425 * it should be cast to tgsi_dst_register_ext_condcode.
1426 *
1427 * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_MODULATE,
1428 * it should be cast to tgsi_dst_register_ext_modulate.
1429 *
1430 * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_PREDICATE,
1431 * it should be cast to tgsi_dst_register_ext_predicate.
1432 *
1433 * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
1434 * follows.
1435 */
1436 struct tgsi_dst_register_ext_concode
1437 {
1438 unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_CONDCODE */
1439 unsigned CondMask : 4; /* TGSI_CC_ */
1440 unsigned CondSwizzleX : 2; /* TGSI_SWIZZLE_ */
1441 unsigned CondSwizzleY : 2; /* TGSI_SWIZZLE_ */
1442 unsigned CondSwizzleZ : 2; /* TGSI_SWIZZLE_ */
1443 unsigned CondSwizzleW : 2; /* TGSI_SWIZZLE_ */
1444 unsigned CondSrcIndex : 4; /* UINT */
1445 unsigned Padding : 11;
1446 unsigned Extended : 1; /* BOOL */
1447 };
1448
1449 #define TGSI_MODULATE_1X 0
1450 #define TGSI_MODULATE_2X 1
1451 #define TGSI_MODULATE_4X 2
1452 #define TGSI_MODULATE_8X 3
1453 #define TGSI_MODULATE_HALF 4
1454 #define TGSI_MODULATE_QUARTER 5
1455 #define TGSI_MODULATE_EIGHTH 6
1456
1457 struct tgsi_dst_register_ext_modulate
1458 {
1459 unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_MODULATE */
1460 unsigned Modulate : 4; /* TGSI_MODULATE_ */
1461 unsigned Padding : 23;
1462 unsigned Extended : 1; /* BOOL */
1463 };
1464
1465 /*
1466 * Currently, the following constraints apply.
1467 *
1468 * - PredSwizzleXYZW is either set to identity or replicate.
1469 * - PredSrcIndex is 0.
1470 */
1471
1472 struct tgsi_dst_register_ext_predicate
1473 {
1474 unsigned Type : 4; /* TGSI_DST_REGISTER_EXT_TYPE_PREDICATE */
1475 unsigned PredSwizzleX : 2; /* TGSI_SWIZZLE_ */
1476 unsigned PredSwizzleY : 2; /* TGSI_SWIZZLE_ */
1477 unsigned PredSwizzleZ : 2; /* TGSI_SWIZZLE_ */
1478 unsigned PredSwizzleW : 2; /* TGSI_SWIZZLE_ */
1479 unsigned PredSrcIndex : 4; /* UINT */
1480 unsigned Negate : 1; /* BOOL */
1481 unsigned Padding : 14;
1482 unsigned Extended : 1; /* BOOL */
1483 };
1484
1485
1486 #if defined __cplusplus
1487 } // extern "C"
1488 #endif // defined __cplusplus
1489
1490 #endif // !defined TGSI_TOKEN_H
1491