p_shader_tokens.h revision ede9f3b52ecb27ada81fee06a943bb595c60eaee
1984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**************************************************************************
2984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca *
3984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
4984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * All Rights Reserved.
5984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca *
6984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * Permission is hereby granted, free of charge, to any person obtaining a
7984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * copy of this software and associated documentation files (the
8984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * "Software"), to deal in the Software without restriction, including
9984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * without limitation the rights to use, copy, modify, merge, publish,
10984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * distribute, sub license, and/or sell copies of the Software, and to
11984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * permit persons to whom the Software is furnished to do so, subject to
12984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * the following conditions:
13984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca *
14984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * The above copyright notice and this permission notice (including the
15984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * next paragraph) shall be included in all copies or substantial portions
16984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * of the Software.
17984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca *
18984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca *
26984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca **************************************************************************/
27984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca
28984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca#ifndef TGSI_TOKEN_H
29abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_H
30abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
3194c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#ifdef __cplusplus
32abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolextern "C" {
3394c73d1bb9037a1eead1d5174f218b15852b52d7José Fonseca#endif
34abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
354339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell#include "p_compiler.h"
364339744c1676f925d42251bd32795bba9928cd5fKeith Whitwell
37abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_version
38abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
39abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned MajorVersion  : 8;
40abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned MinorVersion  : 8;
41abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding       : 16;
42abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
43abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
44abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_header
45abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
46abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned HeaderSize : 8;
47abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned BodySize   : 24;
48abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
49abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
50abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_FRAGMENT  0
51abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_VERTEX    1
52abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PROCESSOR_GEOMETRY  2
53abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
54abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_processor
55abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
56abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Processor  : 4;  /* TGSI_PROCESSOR_ */
57abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 28;
58abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
59abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
60abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_DECLARATION    0
61abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_IMMEDIATE      1
62abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TOKEN_TYPE_INSTRUCTION    2
63abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
64abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_token
65abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
66868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Type       : 4;  /**< TGSI_TOKEN_TYPE_x */
67bf3930453cb85977510863e5cfba8487e09c093eMichal Krol   unsigned NrTokens   : 8;  /**< UINT */
68abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 19;
69868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Extended   : 1;  /**< BOOL */
70abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
71abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
72e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusinenum tgsi_file_type {
73e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_NULL        =0,
74e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_CONSTANT    =1,
75e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_INPUT       =2,
76e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_OUTPUT      =3,
77e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_TEMPORARY   =4,
78e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_SAMPLER     =5,
79e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_ADDRESS     =6,
80e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_IMMEDIATE   =7,
81e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin   TGSI_FILE_COUNT      /**< how many TGSI_FILE_ types */
82e884c7ed9a14aabaa86f6710c594d20812ed11d9Zack Rusin};
8335ca45daba3906ac94fb879d2374d476ba2dac47Brian
84abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
85abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_NONE     0x00
86abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_X        0x01
87abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Y        0x02
88abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XY       0x03
89abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_Z        0x04
90abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZ       0x05
91abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZ       0x06
92abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZ      0x07
93abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_W        0x08
94abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XW       0x09
95abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YW       0x0A
96abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYW      0x0B
97abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_ZW       0x0C
98abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XZW      0x0D
99abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_YZW      0x0E
100abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_WRITEMASK_XYZW     0x0F
101abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
1024e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_CONSTANT      0
1034e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_LINEAR        1
1044e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol#define TGSI_INTERPOLATE_PERSPECTIVE   2
105bd3b47590e2a8e91a8f5545d7c8872b26879c228Michal Krol#define TGSI_INTERPOLATE_COUNT         3
1064e33edfd06999e7c65b761be2d1cdc16e5b659c5Michal Krol
107abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration
108abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
109868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Type        : 4;  /**< TGSI_TOKEN_TYPE_DECLARATION */
110bf3930453cb85977510863e5cfba8487e09c093eMichal Krol   unsigned NrTokens    : 8;  /**< UINT */
111868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned File        : 4;  /**< one of TGSI_FILE_x */
112868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned UsageMask   : 4;  /**< bitmask of TGSI_WRITEMASK_x flags */
113868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Interpolate : 4;  /**< one of TGSI_INTERPOLATE_x */
114868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Semantic    : 1;  /**< BOOL, any semantic info? */
115868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Centroid    : 1;  /**< centroid sampling? */
116868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Invariant   : 1;  /**< invariant optimization? */
117434e255eae90b0f3d836d452b7d3b0c5aadf78b8Brian Paul   unsigned Padding     : 4;
118868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Extended    : 1;  /**< BOOL */
119abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
120abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
121abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_range
122abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
123868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned First   : 16; /**< UINT */
124868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Last    : 16; /**< UINT */
125abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
126abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
127abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_POSITION 0
128abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_COLOR    1
129abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_BCOLOR   2 /**< back-face color */
130abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_FOG      3
131abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_PSIZE    4
132abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SEMANTIC_GENERIC  5
133271f9dac79a9247de9a57f4d248e404bf1652a13José Fonseca#define TGSI_SEMANTIC_NORMAL   6
1341c04731b8721850b6abb12a43a3eec616b850e86Zack Rusin#define TGSI_SEMANTIC_FACE     7
1351c04731b8721850b6abb12a43a3eec616b850e86Zack Rusin#define TGSI_SEMANTIC_COUNT    8 /**< number of semantic values */
136abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
137abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_declaration_semantic
138abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
139868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned SemanticName   : 8;  /**< one of TGSI_SEMANTIC_x */
140868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned SemanticIndex  : 16; /**< UINT */
141abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding        : 8;
142abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
143abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
144abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_IMM_FLOAT32   0
145abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
146abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_immediate
147abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
148868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Type       : 4;  /**< TGSI_TOKEN_TYPE_IMMEDIATE */
149bf3930453cb85977510863e5cfba8487e09c093eMichal Krol   unsigned NrTokens   : 8;  /**< UINT */
150868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned DataType   : 4;  /**< one of TGSI_IMM_x */
151abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 15;
152868c607c1751fc3e6df1a8dc45e8b70e6bc315f6Brian Paul   unsigned Extended   : 1;  /**< BOOL */
153abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
154abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
155fd31f92cea0ce8613a22d8f4b3c75b340bcc5689Keith Whitwellunion tgsi_immediate_data
156abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
157abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   float Float;
158abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
159abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
160abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
161abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program
162abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
163abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ARL                 0
164abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MOV                 1
165abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LIT                 2
166abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCP                 3
167abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RSQ                 4
168abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_EXP                 5
169abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_LOG                 6
170abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MUL                 7
171abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ADD                 8
172abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP3                 9
173abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DP4                 10
174abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DST                 11
175abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MIN                 12
176abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAX                 13
177abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLT                 14
178abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGE                 15
179abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_MAD                 16
180abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
181abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
182abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ATI_fragment_shader
183abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
184abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SUB                 17
185ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DOT3                TGSI_OPCODE_DP3*/
186ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DOT4                TGSI_OPCODE_DP4*/
187ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LRP                 18
188abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND                 19
189abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CND0                20
190ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_DP2A                21
191abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
192abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
193abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_EXT_vertex_shader
194abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
195fb88908f5cea2677617499307768ead138510491Michal Krol#define TGSI_OPCODE_INDEX               22   /* considered for removal */
196fb88908f5cea2677617499307768ead138510491Michal Krol#define TGSI_OPCODE_NEGATE              23   /* considered for removal */
197ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_MADD                TGSI_OPCODE_MAD*/
198ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FRC                 24
199ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_SETGE               TGSI_OPCODE_SGE*/
200ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_SETLT               TGSI_OPCODE_SLT*/
201abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_CLAMP               25
202ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_FLR                 26
203abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ROUND               27
204ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_EX2                 28
205ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_LG2                 29
206ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_POW                 30
207ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_RECIP               TGSI_OPCODE_RCP*/
208ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_RECIPSQRT           TGSI_OPCODE_RSQ*/
209ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell#define TGSI_OPCODE_XPD                 31
210fb88908f5cea2677617499307768ead138510491Michal Krol#define TGSI_OPCODE_MULTIPLYMATRIX      32   /* considered for removal */
211abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
212abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
213abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program1_1
214abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
215abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_ABS                 33
216abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RCC                 34
217abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DPH                 35
218abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
219abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
220abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program
221abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
222abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_COS                 36
223abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDX                 37
224abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_DDY                 38
225ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_EX2                 TGSI_OPCODE_EXPBASE2*/
226ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_FLR                 TGSI_OPCODE_FLOOR*/
227ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_FRC                 TGSI_OPCODE_FRAC*/
228abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_KILP                39  /* predicated kill */
229ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_LG2                 TGSI_OPCODE_LOGBASE2*/
230ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_LRP                 TGSI_OPCODE_LERP*/
231abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2H                40
232abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK2US               41
233abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4B                42
234abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_PK4UB               43
235ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_POW                 TGSI_OPCODE_POWER*/
236abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_RFL                 44
237abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SEQ                 45
238abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SFL                 46
239abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SGT                 47
240abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SIN                 48
241abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SLE                 49
242abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_SNE                 50
243abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_STR                 51
244abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TEX                 52
245abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_OPCODE_TXD                 53
246bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXP                 54
247bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2H                55
248bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP2US               56
249bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4B                57
250bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_UP4UB               58
251bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_X2D                 59
252abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
253abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
254abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2
255abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
256bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARA                 60
257bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ARR                 61
258bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRA                 62
259bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CAL                 63
260bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_RET                 64
261bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SSG                 65
262abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
263abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
264abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_vertex_program
265abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
266837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol#define TGSI_OPCODE_SWZ                 118
267ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_XPD                 TGSI_OPCODE_CROSSPRODUCT*/
268abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
269abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
270abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_ARB_fragment_program
271abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
272bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CMP                 66
2739804ab9accb3c6607c64a65bebe70124578240cdMichal Krol#define TGSI_OPCODE_KIL                 116  /* conditional kill */
274bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SCS                 67
275bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXB                 68
276abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
277abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
278abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program_option
279abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
280abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* No new opcode */
281abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
282abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
283abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program2
284abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
285bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM                 69
286bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DIV                 70
287bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_DP2                 71
288ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DP2A                TGSI_OPCODE_DOT2ADD*/
289bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXL                 72
290bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BRK                 73
291bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IF                  74
292bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_LOOP                75
293bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_REP                 76
294bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ELSE                77
295bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDIF               78
296bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDLOOP             79
297bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDREP              80
298abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
299abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
300abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program2_option
301abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
302abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
303abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
304abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program3
305abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
306bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_PUSHA               81
307bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_POPA                82
308abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
309abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
310abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_gpu_program4
311abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
312bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CEIL                83
313bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_I2F                 84
314bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOT                 85
315bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TRUNC               86
316bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SHL                 87
317bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SHR                 88
318bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_AND                 89
319bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_OR                  90
320bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_MOD                 91
321bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_XOR                 92
322bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_SAD                 93
323bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXF                 94
324bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_TXQ                 95
325bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CONT                96
326abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
327abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
328abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_vertex_program4
329abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
330abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
331abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
332abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
333abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_fragment_program4
334abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
335abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
336abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
337abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
338abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GL_NV_geometry_program4
339abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
340abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* Same as GL_NV_gpu_program4 */
341bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_EMIT                97
342bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDPRIM             98
343abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
344abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
345abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * GLSL
346abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
347bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BGNLOOP2            99
348bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BGNSUB              100
349bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDLOOP2            101
350bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_ENDSUB              102
351ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_INT                 TGSI_OPCODE_TRUNC*/
352bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOISE1              103
353bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOISE2              104
354bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOISE3              105
355bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOISE4              106
356bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NOP                 107
357abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
358abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
359abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_1
360abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
361ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_TEXKILL             TGSI_OPCODE_KIL*/
362abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
363abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
364abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_2
365abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
366abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */
367abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
368abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
369abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_3
370abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
371abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/* CMP - use TGSI_OPCODE_CND0 */
372abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
373abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
374abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_1_4
375abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
376ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_TEXLD               TGSI_OPCODE_TEX*/
377abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
378abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
379abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_0
380abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
381ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_M4X4                TGSI_OPCODE_MULTIPLYMATRIX*/
382bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_M4X3                108
383bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_M3X4                109
384bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_M3X3                110
385bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_M3X2                111
386ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_CRS                 TGSI_OPCODE_XPD*/
387bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_NRM4                112
388ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_SINCOS              TGSI_OPCODE_SCS*/
389ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_TEXLDB              TGSI_OPCODE_TXB*/
390ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DP2ADD              TGSI_OPCODE_DP2A*/
391abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
392abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
393abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ps_2_x
394abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
395ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_CALL                TGSI_OPCODE_CAL*/
396bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_CALLNZ              113
397bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_IFC                 114
398ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_BREAK               TGSI_OPCODE_BRK*/
399bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_BREAKC              115
400ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DSX                 TGSI_OPCODE_DDX*/
401ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_DSY                 TGSI_OPCODE_DDY*/
402ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_TEXLDD              TGSI_OPCODE_TXD*/
403abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
404abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
405abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_1_1
406abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
407ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_EXPP                TGSI_OPCODE_EXP*/
408ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_LOGP                TGSI_OPCODE_LG2*/
409abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
410abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
411abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_0
412abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
413ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_SGN                 TGSI_OPCODE_SSG*/
414ede9f3b52ecb27ada81fee06a943bb595c60eaeeKeith Whitwell/*#define TGSI_OPCODE_MOVA                TGSI_OPCODE_ARR*/
415146a0fba0011e21a4831a4b86969d7cd3f093bf6Michal Krol/* EXPP - use TGSI_OPCODE_EX2 */
416abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
417abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
418abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * vs_2_x
419abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
420abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
421bcb454e7a6e2f7efae114321c65bf98e91d5892fMichal Krol#define TGSI_OPCODE_END                 117  /* aka HALT */
422abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
423837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol#define TGSI_OPCODE_LAST                119
424abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
425abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_NONE            0  /* do not saturate */
426abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_ZERO_ONE        1  /* clamp to [0,1] */
427abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SAT_MINUS_PLUS_ONE  2  /* clamp to [-1,1] */
428abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
429984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
430abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Opcode is the operation code to execute. A given operation defines the
431abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * semantics how the source registers (if any) are interpreted and what is
432abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * written to the destination registers (if any) as a result of execution.
433abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
434abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NumDstRegs and NumSrcRegs is the number of destination and source registers,
435abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * respectively. For a given operation code, those numbers are fixed and are
436abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * present here only for convenience.
437abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
438abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, it is now executed.
439abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
440abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Saturate controls how are final results in destination registers modified.
441abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
442abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
443abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction
444abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
445abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_TOKEN_TYPE_INSTRUCTION */
446bf3930453cb85977510863e5cfba8487e09c093eMichal Krol   unsigned NrTokens   : 8;  /* UINT */
447abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Opcode     : 8;  /* TGSI_OPCODE_ */
448abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Saturate   : 2;  /* TGSI_SAT_ */
449abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NumDstRegs : 2;  /* UINT */
450abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned NumSrcRegs : 4;  /* UINT */
451abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 3;
452abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
453abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
454abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
455abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
456abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction::Extended is TRUE, tgsi_instruction_ext follows.
457abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
458abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumDstRegs of tgsi_dst_register follow.
459abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
460abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, tgsi_instruction::NumSrcRegs of tgsi_src_register follow.
461abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
462bf3930453cb85977510863e5cfba8487e09c093eMichal Krol * tgsi_instruction::NrTokens contains the total number of words that make the
463abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * instruction, including the instruction word.
464abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
465abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
466abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_NV        0
467abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_LABEL     1
468abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_TEXTURE   2
469abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_INSTRUCTION_EXT_TYPE_PREDICATE 3
470abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
471abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext
472abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
473abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type       : 4;  /* TGSI_INSTRUCTION_EXT_TYPE_ */
474abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding    : 27;
475abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended   : 1;  /* BOOL */
476abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
477abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
478abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
479abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_NV, it should
480abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * be cast to tgsi_instruction_ext_nv.
481abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
482abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_LABEL, it
483abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_label.
484abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
485abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_TEXTURE, it
486abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_texture.
487abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
488abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Type is TGSI_INSTRUCTION_EXT_TYPE_PREDICATE, it
489abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * should be cast to tgsi_instruction_ext_predicate.
490abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
491abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_instruction_ext::Extended is TRUE, another tgsi_instruction_ext
492abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
493abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
494abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
495abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_DEFAULT      0
496abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT32      1
497abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FLOAT16      2
498abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_PRECISION_FIXED12      3
499abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
500abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_GT      0
501abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_EQ      1
502abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_CC_LT      2
503235981d8719aa7f67bfe547bf96e5343020e0373Michal Krol#define TGSI_CC_GE      3
504235981d8719aa7f67bfe547bf96e5343020e0373Michal Krol#define TGSI_CC_LE      4
505235981d8719aa7f67bfe547bf96e5343020e0373Michal Krol#define TGSI_CC_NE      5
506235981d8719aa7f67bfe547bf96e5343020e0373Michal Krol#define TGSI_CC_TR      6
507235981d8719aa7f67bfe547bf96e5343020e0373Michal Krol#define TGSI_CC_FL      7
508abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
509abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_X      0
510abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Y      1
511abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_Z      2
512abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SWIZZLE_W      3
513abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
514984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
515abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Precision controls the precision at which the operation should be executed.
516abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
517abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondDstUpdate enables condition code register writes. When this field is
518abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * TRUE, CondDstIndex specifies the index of the condition code register to
519abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * update.
520abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
521abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondFlowEnable enables conditional execution of the operation. When this
522abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * field is TRUE, CondFlowIndex specifies the index of the condition code
523abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register to test against CondMask with component swizzle controled by
524abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * CondSwizzleX, CondSwizzleY, CondSwizzleZ and CondSwizzleW. If the test fails,
525abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * the operation is not executed.
526abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
527abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
528abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_nv
529abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
530abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type             : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_NV */
531abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Precision        : 4;    /* TGSI_PRECISION_ */
532abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondDstIndex     : 4;    /* UINT */
533abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondFlowIndex    : 4;    /* UINT */
534abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondMask         : 4;    /* TGSI_CC_ */
535abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleX     : 2;    /* TGSI_SWIZZLE_ */
536abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleY     : 2;    /* TGSI_SWIZZLE_ */
537abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleZ     : 2;    /* TGSI_SWIZZLE_ */
538abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleW     : 2;    /* TGSI_SWIZZLE_ */
539abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondDstUpdate    : 1;    /* BOOL */
540abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondFlowEnable   : 1;    /* BOOL */
541abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding          : 1;
542abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended         : 1;    /* BOOL */
543abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
544abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
545abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_label
546abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
547abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_LABEL */
548abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Label    : 24;   /* UINT */
549abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 3;
550abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
551abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
552abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
553abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_UNKNOWN        0
554abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_1D             1
555abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_2D             2
556abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_3D             3
557abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_CUBE           4
558abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_RECT           5
559abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW1D       6
560abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOW2D       7
561abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_TEXTURE_SHADOWRECT     8
5623d5dcc2203f5018863ad51958871542696e1ed1bMichal Krol#define TGSI_TEXTURE_COUNT          9
563abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
564abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_texture
565abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
566abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_TEXTURE */
567abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Texture  : 8;    /* TGSI_TEXTURE_ */
568abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 19;
569abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
570abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
571abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
572abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_instruction_ext_predicate
573abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
574abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type             : 4;    /* TGSI_INSTRUCTION_EXT_TYPE_PREDICATE */
575abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredDstIndex     : 4;    /* UINT */
576abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned PredWriteMask    : 4;    /* TGSI_WRITEMASK_ */
577abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding          : 19;
578abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended         : 1;    /* BOOL */
579abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
580abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
581984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
582abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * File specifies the register array to access.
583abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
584abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Index specifies the element number of a register in the register file.
585abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
586abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Indirect is TRUE, Index should be offset by the X component of a source
587abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register that follows. The register can be now fetched into local storage
588abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * for further processing.
589abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
590abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, all components of the fetched register are negated.
591abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
592abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * The fetched register components are swizzled according to SwizzleX, SwizzleY,
593abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * SwizzleZ and SwizzleW.
594abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
595abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Extended is TRUE, any further modifications to the source register are
596abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * made to this temporary storage.
597abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
598abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
599abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register
600abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
601abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned File        : 4;  /* TGSI_FILE_ */
602abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleX    : 2;  /* TGSI_SWIZZLE_ */
603abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleY    : 2;  /* TGSI_SWIZZLE_ */
604abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleZ    : 2;  /* TGSI_SWIZZLE_ */
605abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned SwizzleW    : 2;  /* TGSI_SWIZZLE_ */
606abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Negate      : 1;  /* BOOL */
607abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
608abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
609abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
610abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
611abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
612abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
613984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
614abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register::Extended is TRUE, tgsi_src_register_ext follows.
615abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
616abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Indirect is TRUE, another tgsi_src_register
617abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
618abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
619abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_src_register::Dimension is TRUE, tgsi_dimension follows.
620abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
621abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
622abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_SWZ      0
623abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_SRC_REGISTER_EXT_TYPE_MOD      1
624abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
625abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext
626abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
627abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_SRC_REGISTER_EXT_TYPE_ */
628abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 27;
629abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
630abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
631abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
632984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
633abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_SWZ,
634635341ec5b06b3db453e88f44663d2ad711c3f7dBrian * it should be cast to tgsi_src_register_ext_swz.
635abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
636abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_src_register_ext::Type is TGSI_SRC_REGISTER_EXT_TYPE_MOD,
637abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_src_register_ext_mod.
638abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
639abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
640abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
641abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
642abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
643abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_X       TGSI_SWIZZLE_X
644abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Y       TGSI_SWIZZLE_Y
645abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_Z       TGSI_SWIZZLE_Z
646abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_W       TGSI_SWIZZLE_W
647abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ZERO    4
648abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_EXTSWIZZLE_ONE     5
649abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
650984a7c4e9c42cf8ddfcff5b880b522a6dd58bce2José Fonseca/**
651abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * ExtSwizzleX, ExtSwizzleY, ExtSwizzleZ and ExtSwizzleW swizzle the source
652abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * register in an extended manner.
653abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
654abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * NegateX, NegateY, NegateZ and NegateW negate individual components of the
655abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * source register.
656837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol *
657837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol * NOTE: To simplify matter, if this token is present, the corresponding Swizzle
658837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol *       and Negate fields in tgsi_src_register should be set to X,Y,Z,W
659837d49a84e24420dbc06924f4862a5f7dcf4caceMichal Krol *       and FALSE, respectively.
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 */
673ba75e82b6ebaf88dd2e4a8f764b2d296d715bf8aMichal Krol   unsigned Padding      : 7;
674abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
675abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
676abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
677abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/**
678abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra src register modifiers
679abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
680abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Complement is TRUE, the source register is modified by subtracting it
681abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * from 1.0.
682abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
683abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Bias is TRUE, the source register is modified by subtracting 0.5 from it.
684abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
685abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Scale2X is TRUE, the source register is modified by multiplying it by 2.0.
686abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
687abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Absolute is TRUE, the source register is modified by removing the sign.
688abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
689abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If Negate is TRUE, the source register is modified by negating it.
690abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
691abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
692abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_src_register_ext_mod
693abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
694abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_SRC_REGISTER_EXT_TYPE_MOD */
695abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Complement   : 1;    /* BOOL */
696abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Bias         : 1;    /* BOOL */
697abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Scale2X      : 1;    /* BOOL */
698abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Absolute     : 1;    /* BOOL */
699abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Negate       : 1;    /* BOOL */
700abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 22;
701abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
702abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
703abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
704abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dimension
705abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
706abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
707abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
708abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding     : 13;
709abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
710abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
711abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
712abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
713abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register
714abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
715abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned File        : 4;  /* TGSI_FILE_ */
716abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned WriteMask   : 4;  /* TGSI_WRITEMASK_ */
717abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Indirect    : 1;  /* BOOL */
718abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Dimension   : 1;  /* BOOL */
719abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   int      Index       : 16; /* SINT */
720abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding     : 5;
721abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended    : 1;  /* BOOL */
722abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
723abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
724abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/*
725abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register::Extended is TRUE, tgsi_dst_register_ext follows.
726abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
727abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Then, if tgsi_dst_register::Indirect is TRUE, tgsi_src_register follows.
728abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
729abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
730abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_CONDCODE     0
731abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_MODULATE     1
732abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_DST_REGISTER_EXT_TYPE_PREDICATE    2
733abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
734abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext
735abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
736abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type     : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_ */
737abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding  : 27;
738abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended : 1;    /* BOOL */
739abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
740abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
741abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol/**
742abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * Extra destination register modifiers
743abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
744abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_CONDCODE,
745abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_condcode.
746abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
747abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_MODULATE,
748abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_modulate.
749abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
750abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Type is TGSI_DST_REGISTER_EXT_TYPE_PREDICATE,
751abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * it should be cast to tgsi_dst_register_ext_predicate.
752abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol *
753abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * If tgsi_dst_register_ext::Extended is TRUE, another tgsi_dst_register_ext
754abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol * follows.
755abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol */
756abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krolstruct tgsi_dst_register_ext_concode
757abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol{
758abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Type         : 4;    /* TGSI_DST_REGISTER_EXT_TYPE_CONDCODE */
759abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondMask     : 4;    /* TGSI_CC_ */
760abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleX : 2;    /* TGSI_SWIZZLE_ */
761abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleY : 2;    /* TGSI_SWIZZLE_ */
762abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleZ : 2;    /* TGSI_SWIZZLE_ */
763abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSwizzleW : 2;    /* TGSI_SWIZZLE_ */
764abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned CondSrcIndex : 4;    /* UINT */
765abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Padding      : 11;
766abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol   unsigned Extended     : 1;    /* BOOL */
767abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol};
768abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol
769abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_1X        0
770abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_2X        1
771abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_4X        2
772abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_8X        3
773abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_HALF      4
774abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_QUARTER   5
775abd5e8e41d54f7f491f91af9354f19c8d24d3572Michal Krol#define TGSI_MODULATE_EIGHTH    6
776f5c51ebd2afdfc87de40dca115526a5e0f6ab115Michal Krol#define TGSI_MODULATE_COUNT     7
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