p_shader_tokens.h revision 130b3154544701be2a57ac1c57432f153e363572
1abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#if !defined TGSI_TOKEN_H
2abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_H
3abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
494c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus
5abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolextern "C" {
694c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif
7abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
84339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell#include "p_compiler.h"
94339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell
10abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_version
11abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
12abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned MajorVersion  : 8;
13abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned MinorVersion  : 8;
14abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding       : 16;
15abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
16abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
17abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_header
18abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
19abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned HeaderSize : 8;
20abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned BodySize   : 24;
21abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
22abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
23abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_FRAGMENT  0
24abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_VERTEX    1
25abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_GEOMETRY  2
26abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
27abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_processor
28abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
29abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Processor  : 4;  /* TGSI_PROCESSOR_ */
30abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 28;
31abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
32abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
33abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_DECLARATION    0
34abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_IMMEDIATE      1
35abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_INSTRUCTION    2
36abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
37abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_token
38abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
39abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_TOKEN_TYPE_ */
40abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Size       : 8;  /* UINT */
41abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 19;
42abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
43abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
44abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
45e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusinenum tgsi_file_type {
46e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_NULL        =0,
47e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_CONSTANT    =1,
48e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_INPUT       =2,
49e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_OUTPUT      =3,
50e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_TEMPORARY   =4,
51e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_SAMPLER     =5,
52e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_ADDRESS     =6,
53e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_IMMEDIATE   =7,
54e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_COUNT      /**< how many TGSI_FILE_ types */
55e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin};
5635ca45daba3906ac94fb879d2374d476ba2dac47Brian
57abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
58abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DECLARE_RANGE    0
59abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DECLARE_MASK     1
60abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
61abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_NONE     0x00
62abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_X        0x01
63abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Y        0x02
64abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XY       0x03
65abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Z        0x04
66abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZ       0x05
67abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZ       0x06
68abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZ      0x07
69abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_W        0x08
70abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XW       0x09
71abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YW       0x0A
72abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYW      0x0B
73abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_ZW       0x0C
74abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZW      0x0D
75abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZW      0x0E
76abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZW     0x0F
77abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
78abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration
79abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
80abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type        : 4;  /* TGSI_TOKEN_TYPE_DECLARATION */
81abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Size        : 8;  /* UINT */
82abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned File        : 4;  /* one of TGSI_FILE_x */
83abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Declare     : 4;  /* one of TGSI_DECLARE_x */
84abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned UsageMask   : 4;  /* bitmask of TGSI_WRITEMASK_x flags */
85abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Interpolate : 1;  /* BOOL, any interpolation info? */
86abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Semantic    : 1;  /* BOOL, any semantic info? */
87abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding     : 5;
88abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
89abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
90abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
91abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_range
92abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
93abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned First   : 16; /* UINT */
94abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Last    : 16; /* UINT */
95abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
96abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
97abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_mask
98abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
99abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Mask : 32; /* UINT */
100abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
101abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
102abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_CONSTANT      0
103abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_LINEAR        1
104abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INTERPOLATE_PERSPECTIVE   2
105abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
106abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_interpolation
107abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
108abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Interpolate   : 4;  /* TGSI_INTERPOLATE_ */
109abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding       : 28;
110abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
111abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
112abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_POSITION 0
113abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_COLOR    1
114abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_BCOLOR   2 /**< back-face color */
115abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_FOG      3
116abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_PSIZE    4
117abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_GENERIC  5
118271f9dac79a9247de9a57f4d248e404bf1652a13José Fonseca#define TGSI_SEMANTIC_NORMAL   6
119271f9dac79a9247de9a57f4d248e404bf1652a13José Fonseca#define TGSI_SEMANTIC_COUNT    7 /**< number of semantic values */
120abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
121abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_semantic
122abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
123abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SemanticName   : 8;  /* one of TGSI_SEMANTIC_ */
124abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SemanticIndex  : 16; /* UINT */
125abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding        : 8;
126abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
127abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
128abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_IMM_FLOAT32   0
129abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
130abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate
131abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
132abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_TOKEN_TYPE_IMMEDIATE */
133abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Size       : 8;  /* UINT */
134abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned DataType   : 4;  /* TGSI_IMM_ */
135abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 15;
136abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
137abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
138abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
139abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate_float32
140abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
141abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   float Float;
142abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
143abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
144abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
145abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program
146abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
147abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARL                 0
148abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOV                 1
149abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LIT                 2
150abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCP                 3
151abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RSQ                 4
152abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXP                 5
153abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOG                 6
154abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MUL                 7
155abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ADD                 8
156abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP3                 9
157abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP4                 10
158abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DST                 11
159abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MIN                 12
160abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAX                 13
161abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLT                 14
162abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGE                 15
163abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAD                 16
164abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
165abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
166abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ATI_fragment_shader
167abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
168abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SUB                 17
169abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT3                TGSI_OPCODE_DP3
170abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT4                TGSI_OPCODE_DP4
171abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LERP                18
172abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND                 19
173abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND0                20
174abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DOT2ADD             21
175abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
176abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
177abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_EXT_vertex_shader
178abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
179abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_INDEX               22
180abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NEGATE              23
181abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MADD                TGSI_OPCODE_MAD
182abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FRAC                24
183abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SETGE               TGSI_OPCODE_SGE
184abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SETLT               TGSI_OPCODE_SLT
185abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CLAMP               25
186abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FLOOR               26
187abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ROUND               27
188abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXPBASE2            28
189abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOGBASE2            29
190abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POWER               30
191abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RECIP               TGSI_OPCODE_RCP
192abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RECIPSQRT           TGSI_OPCODE_RSQ
193abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CROSSPRODUCT        31
194abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MULTIPLYMATRIX      32
195abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
196abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
197abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program1_1
198abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
199abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ABS                 33
200abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCC                 34
201abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DPH                 35
202abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
203abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
204abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program
205abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
206abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_COS                 36
207abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDX                 37
208abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDY                 38
209abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EX2                 TGSI_OPCODE_EXPBASE2
210abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FLR                 TGSI_OPCODE_FLOOR
211abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_FRC                 TGSI_OPCODE_FRAC
212abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KILP                39  /* predicated kill */
213abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LG2                 TGSI_OPCODE_LOGBASE2
214abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LRP                 TGSI_OPCODE_LERP
215abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2H                40
216abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2US               41
217abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4B                42
218abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4UB               43
219abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POW                 TGSI_OPCODE_POWER
220abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RFL                 44
221abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SEQ                 45
222abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SFL                 46
223abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGT                 47
224abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SIN                 48
225abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLE                 49
226abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SNE                 50
227abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_STR                 51
228abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEX                 52
229abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXD                 53
230abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP2H                54
231abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP2US               55
232abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP4B                56
233abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_UP4UB               57
234abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_X2D                 58
235abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
236abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
237abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2
238abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
239abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARA                 59
240abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARR                 60
241abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BRA                 61
242abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CAL                 62
243abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RET                 63
244abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SSG                 64
245abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
246abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
247abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_vertex_program
248abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
249abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SWZ                 TGSI_OPCODE_MOV
250abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_XPD                 TGSI_OPCODE_CROSSPRODUCT
251abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
252abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
253abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_fragment_program
254abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
255abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CMP                 65
256abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SCS                 66
257abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXB                 67
258abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
259abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
260abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program_option
261abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
262abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* No new opcode */
263abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
264abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
265abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program2
266abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
267abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NRM                 68
268abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DIV                 69
269abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2                 70
270abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2A                TGSI_OPCODE_DOT2ADD
271abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXL                 71
272abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BRK                 72
273abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_IF                  73
274abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOOP                74
275abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_REP                 75
276abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ELSE                76
277abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDIF               77
278abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDLOOP             78
279abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDREP              79
280abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
281abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
282abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2_option
283abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
284abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
285abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
286abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program3
287abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
288abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PUSHA               80
289abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_POPA                81
290abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
291abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
292abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_gpu_program4
293abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
294abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CEIL                82
295abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_I2F                 83
296abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOT                 84
297abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TRUNC               85
298abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SHL                 86
299abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SHR                 87
300abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_AND                 88
301abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_OR                  89
302abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOD                 90
303abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_XOR                 91
304abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SAD                 92
305abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXF                 93
306abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXQ                 94
307abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CONT                95
308abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
309abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
310abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program4
311abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
312abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
313abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
314abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
315abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program4
316abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
317abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
318abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
319abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
320abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_geometry_program4
321abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
322abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
323abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EMIT                96
324abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDPRIM             97
325abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
326abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
327abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GLSL
328abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
329abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BGNLOOP2            98
330abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BGNSUB              99
331abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDLOOP2            100
332abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ENDSUB              101
333abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_INT                 TGSI_OPCODE_TRUNC
334abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE1              102
335abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE2              103
336abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE3              104
337abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOISE4              105
338abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NOP                 106
339abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
340abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
341abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_1
342abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
343abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXCOORD            TGSI_OPCODE_NOP
344130b3154544701be2a57ac1c57432f153e363572Michal Krol#define TGSI_OPCODE_TEXKILL             TGSI_OPCODE_KILP
345abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXBEM              107
346abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXBEML             108
347abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2AR           109
348abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2PAD          110
349abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2TEX          111
350abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3PAD          112
351abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3TEX          113
352abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3SPEC         114
353abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3VSPEC        115
354abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
355abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
356abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_2
357abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
358abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2GB           116
359abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXREG2RGB          117
360abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDP3TEX           118
361abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDP3              119
362abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X3             120
363abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */
364abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
365abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
366abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_3
367abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
368abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXM3X2DEPTH        121
369abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */
370abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
371abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
372abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_4
373abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
374abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXCRD              TGSI_OPCODE_TEXCOORD
375abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLD               TGSI_OPCODE_TEX
376abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXDEPTH            122
377abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BEM                 123
378abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
379abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
380abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_0
381abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
382abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M4X4                TGSI_OPCODE_MULTIPLYMATRIX
383abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M4X3                124
384abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X4                125
385abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X3                126
386abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_M3X2                127
387abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CRS                 TGSI_OPCODE_XPD
388abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_NRM4                128
389abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SINCOS              TGSI_OPCODE_SCS
390abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLDB              TGSI_OPCODE_TXB
391abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP2ADD              TGSI_OPCODE_DP2A
392abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
393abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
394abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_x
395abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
396abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CALL                TGSI_OPCODE_CAL
397abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CALLNZ              129
398abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_IFC                 130
399abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BREAK               TGSI_OPCODE_BRK
400abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_BREAKC              131
401abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DSX                 TGSI_OPCODE_DDX
402abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DSY                 TGSI_OPCODE_DDY
403abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEXLDD              TGSI_OPCODE_TXD
404abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
405abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
406abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_1_1
407abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
408abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXPP                TGSI_OPCODE_EXP
409abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOGP                TGSI_OPCODE_LG2
410abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
411abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
412abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_0
413abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
414abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGN                 TGSI_OPCODE_SSG
415abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOVA                TGSI_OPCODE_ARR
416abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
417abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
418abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_x
419abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
420abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
421abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KIL                 132  /* unpredicated kill */
422abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_END                 133  /* aka HALT */
423abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
424abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LAST                134
425abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
426abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_NONE            0  /* do not saturate */
427abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_ZERO_ONE        1  /* clamp to [0,1] */
428abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_MINUS_PLUS_ONE  2  /* clamp to [-1,1] */
429abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
430abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
431abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Opcode is the operation code to execute. A given operation defines the
432abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * semantics how the source registers (if any) are interpreted and what is
433abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * written to the destination registers (if any) as a result of execution.
434abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
435abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NumDstRegs and NumSrcRegs is the number of destination and source registers,
436abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * respectively. For a given operation code, those numbers are fixed and are
437abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * present here only for convenience.
438abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
439abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, it is now executed.
440abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
441abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Saturate controls how are final results in destination registers modified.
442abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
443abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
444abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction
445abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
446abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_TOKEN_TYPE_INSTRUCTION */
447abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Size       : 8;  /* UINT */
448abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Opcode     : 8;  /* TGSI_OPCODE_ */
449abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Saturate   : 2;  /* TGSI_SAT_ */
450abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NumDstRegs : 2;  /* UINT */
451abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NumSrcRegs : 4;  /* UINT */
452abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 3;
453abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
454abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
455abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
456abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
457abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction::Extended is TRUE, tgsi_instruction_ext follows.
458abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
459abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow.
460abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
461abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow.
462abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
463abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * tgsi_instruction::Size contains the total number of words that make the
464abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * instruction, including the instruction word.
465abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
466abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
467abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_NV        0
468abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_LABEL     1
469abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE   2
470abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3
471abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
472abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext
473abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
474abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_INSTRUCTION_EXT_TYPE_ */
475abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 27;
476abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
477abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
478abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
479abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
480abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_NV, it should
481abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * be cast to tgsi_instruction_ext_nv.
482abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
483abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_LABEL, it
484abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_label.
485abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
486abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
487abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_texture.
488abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
489abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it
490abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_predicate.
491abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
492abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
493abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
494abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
495abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
496abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_DEFAULT      0
497abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT32      1
498abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT16      2
499abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FIXED12      3
500abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
501abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_GT      0
502abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_EQ      1
503abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_LT      2
504abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_UN      3
505abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_GE      4
506abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_LE      5
507abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_NE      6
508abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_TR      7
509abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_FL      8
510abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
511abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_X      0
512abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Y      1
513abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Z      2
514abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_W      3
515abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
516abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
517abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Precision controls the precision at which the operation should be executed.
518abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
519abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondDstUpdate enables condition code register writes. When this field is
520abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * TRUE, CondDstIndex specifies the index of the condition code register to
521abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * update.
522abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
523abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondFlowEnable enables conditional execution of the operation. When this
524abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * field is TRUE, CondFlowIndex specifies the index of the condition code
525abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register to test against CondMask with component swizzle controled by
526abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondSwizzleX, CondSwizzleY, CondSwizzleZ and CondSwizzleW. If the test fails,
527abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * the operation is not executed.
528abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
529abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
530abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_nv
531abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
532abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type             : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_NV */
533abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Precision        : 4;    /* TGSI_PRECISION_ */
534abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondDstIndex     : 4;    /* UINT */
535abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondFlowIndex    : 4;    /* UINT */
536abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondMask         : 4;    /* TGSI_CC_ */
537abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleX     : 2;    /* TGSI_SWIZZLE_ */
538abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleY     : 2;    /* TGSI_SWIZZLE_ */
539abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleZ     : 2;    /* TGSI_SWIZZLE_ */
540abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleW     : 2;    /* TGSI_SWIZZLE_ */
541abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondDstUpdate    : 1;    /* BOOL */
542abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondFlowEnable   : 1;    /* BOOL */
543abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding          : 1;
544abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended         : 1;    /* BOOL */
545abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
546abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
547abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_label
548abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
549abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_LABEL */
550abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Label    : 24;   /* UINT */
551abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 3;
552abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
553abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
554abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
555abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_UNKNOWN        0
556abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_1D             1
557abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_2D             2
558abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_3D             3
559abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_CUBE           4
560abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_RECT           5
561abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW1D       6
562abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW2D       7
563abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOWRECT     8
564abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
565abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_texture
566abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
567abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_TEXTURE */
568abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Texture  : 8;    /* TGSI_TEXTURE_ */
569abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 19;
570abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
571abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
572abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
573abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_predicate
574abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
575abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type             : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */
576abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredDstIndex     : 4;    /* UINT */
577abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredWriteMask    : 4;    /* TGSI_WRITEMASK_ */
578abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding          : 19;
579abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended         : 1;    /* BOOL */
580abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
581abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
582abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
583abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * File specifies the register array to access.
584abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
585abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Index specifies the element number of a register in the register file.
586abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
587abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Indirect is TRUE, Index should be offset by the X component of a source
588abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register that follows. The register can be now fetched into local storage
589abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * for further processing.
590abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
591abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, all components of the fetched register are negated.
592abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
593abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * The fetched register components are swizzled according to SwizzleX, SwizzleY,
594abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * SwizzleZ and SwizzleW.
595abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
596abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, any further modifications to the source register are
597abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * made to this temporary storage.
598abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
599abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
600abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register
601abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
602abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned File        : 4;  /* TGSI_FILE_ */
603abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleX    : 2;  /* TGSI_SWIZZLE_ */
604abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleY    : 2;  /* TGSI_SWIZZLE_ */
605abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleZ    : 2;  /* TGSI_SWIZZLE_ */
606abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleW    : 2;  /* TGSI_SWIZZLE_ */
607abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Negate      : 1;  /* BOOL */
608abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
609abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
610abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
611abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
612abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
613abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
614abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
615abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register::Extended is TRUE, tgsi_src_register_ext follows.
616abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
617abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register
618abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
619abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
620abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows.
621abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
622abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
623abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_SWZ      0
624abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_MOD      1
625abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
626abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext
627abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
628abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_SRC_REGISTER_EXT_TYPE_ */
629abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 27;
630abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
631abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
632abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
633abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
634abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_SWZ,
635635341ec5b06b3db453e88f44663d2ad711c3f7dBrian * it should be cast to tgsi_src_register_ext_swz.
636abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
637abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_MOD,
638abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_src_register_ext_mod.
639abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
640abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
641abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
642abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
643abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
644abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_X       TGSI_SWIZZLE_X
645abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Y       TGSI_SWIZZLE_Y
646abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Z       TGSI_SWIZZLE_Z
647abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_W       TGSI_SWIZZLE_W
648abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ZERO    4
649abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ONE     5
650abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
651abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
652abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ExtSwizzleX, ExtSwizzleY, ExtSwizzleZ and ExtSwizzleW swizzle the source
653abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register in an extended manner.
654abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
655abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NegateX, NegateY, NegateZ and NegateW negate individual components of the
656abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * source register.
657abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
658abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ExtDivide specifies which component is used to divide all components of the
659abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * source register.
660abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
661abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
662abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext_swz
663abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
664abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_SRC_REGISTER_EXT_TYPE_SWZ */
665abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned ExtSwizzleX  : 4;    /* TGSI_EXTSWIZZLE_ */
666abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned ExtSwizzleY  : 4;    /* TGSI_EXTSWIZZLE_ */
667abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned ExtSwizzleZ  : 4;    /* TGSI_EXTSWIZZLE_ */
668abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned ExtSwizzleW  : 4;    /* TGSI_EXTSWIZZLE_ */
669abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NegateX      : 1;    /* BOOL */
670abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NegateY      : 1;    /* BOOL */
671abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NegateZ      : 1;    /* BOOL */
672abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NegateW      : 1;    /* BOOL */
673abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned ExtDivide    : 4;    /* TGSI_EXTSWIZZLE_ */
674abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 3;
675abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
676abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
677abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
678abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/**
679abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra src register modifiers
680abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
681abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Complement is TRUE, the source register is modified by subtracting it
682abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * from 1.0.
683abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
684abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Bias is TRUE, the source register is modified by subtracting 0.5 from it.
685abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
686abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Scale2X is TRUE, the source register is modified by multiplying it by 2.0.
687abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
688abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Absolute is TRUE, the source register is modified by removing the sign.
689abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
690abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, the source register is modified by negating it.
691abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
692abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
693abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext_mod
694abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
695abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_SRC_REGISTER_EXT_TYPE_MOD */
696abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Complement   : 1;    /* BOOL */
697abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Bias         : 1;    /* BOOL */
698abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Scale2X      : 1;    /* BOOL */
699abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Absolute     : 1;    /* BOOL */
700abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Negate       : 1;    /* BOOL */
701abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 22;
702abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
703abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
704abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
705abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dimension
706abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
707abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
708abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
709abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding     : 13;
710abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
711abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
712abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
713abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
714abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register
715abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
716abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned File        : 4;  /* TGSI_FILE_ */
717abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned WriteMask   : 4;  /* TGSI_WRITEMASK_ */
718abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
719abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
720abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
721abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding     : 5;
722abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
723abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
724abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
725abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
726abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register::Extended is TRUE, tgsi_dst_register_ext follows.
727abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
728abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_dst_register::Indirect is TRUE, tgsi_src_register follows.
729abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
730abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
731abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_CONDCODE     0
732abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_MODULATE     1
733abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_PREDICATE    2
734abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
735abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext
736abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
737abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_ */
738abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 27;
739abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
740abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
741abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
742abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/**
743abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra destination register modifiers
744abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
745abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_CONDCODE,
746abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_condcode.
747abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
748abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_MODULATE,
749abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_modulate.
750abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
751abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_PREDICATE,
752abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_predicate.
753abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
754abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
755abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
756abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
757abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_concode
758abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
759abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_CONDCODE */
760abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondMask     : 4;    /* TGSI_CC_ */
761abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleX : 2;    /* TGSI_SWIZZLE_ */
762abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleY : 2;    /* TGSI_SWIZZLE_ */
763abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleZ : 2;    /* TGSI_SWIZZLE_ */
764abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleW : 2;    /* TGSI_SWIZZLE_ */
765abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSrcIndex : 4;    /* UINT */
766abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 11;
767abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
768abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
769abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
770abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_1X        0
771abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_2X        1
772abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_4X        2
773abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_8X        3
774abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_HALF      4
775abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_QUARTER   5
776abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_EIGHTH    6
777abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
778abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_modulate
779abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
780abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_MODULATE */
781abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Modulate : 4;    /* TGSI_MODULATE_ */
782abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 23;
783abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
784abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
785abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
786abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
787abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Currently, the following constraints apply.
788abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
789abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * - PredSwizzleXYZW is either set to identity or replicate.
790abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * - PredSrcIndex is 0.
791abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
792abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
793abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_predicate
794abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
795abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_PREDICATE */
796abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredSwizzleX : 2;    /* TGSI_SWIZZLE_ */
797abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredSwizzleY : 2;    /* TGSI_SWIZZLE_ */
798abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredSwizzleZ : 2;    /* TGSI_SWIZZLE_ */
799abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredSwizzleW : 2;    /* TGSI_SWIZZLE_ */
800abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredSrcIndex : 4;    /* UINT */
801abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Negate       : 1;    /* BOOL */
802abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 14;
803abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
804abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
805abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
806abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
80794c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus
80894c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca}
80994c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif
810abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
81194c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif /* TGSI_TOKEN_H */
812abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
813