tgsi: Fix token builder.
[mesa.git] / src / gallium / auxiliary / tgsi / tgsi_build.h
1 /**************************************************************************
2 *
3 * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
4 * All Rights Reserved.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
16 * of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25 *
26 **************************************************************************/
27
28 #ifndef TGSI_BUILD_H
29 #define TGSI_BUILD_H
30
31
32 struct tgsi_token;
33
34
35 #if defined __cplusplus
36 extern "C" {
37 #endif
38
39 /*
40 * version
41 */
42
43 struct tgsi_version
44 tgsi_build_version( void );
45
46 /*
47 * header
48 */
49
50 struct tgsi_header
51 tgsi_build_header( void );
52
53 struct tgsi_processor
54 tgsi_default_processor( void );
55
56 struct tgsi_processor
57 tgsi_build_processor(
58 unsigned processor,
59 struct tgsi_header *header );
60
61 /*
62 * declaration
63 */
64
65 struct tgsi_declaration
66 tgsi_default_declaration( void );
67
68 struct tgsi_declaration
69 tgsi_build_declaration(
70 unsigned file,
71 unsigned usage_mask,
72 unsigned interpolate,
73 unsigned semantic,
74 unsigned centroid,
75 unsigned invariant,
76 struct tgsi_header *header );
77
78 struct tgsi_full_declaration
79 tgsi_default_full_declaration( void );
80
81 unsigned
82 tgsi_build_full_declaration(
83 const struct tgsi_full_declaration *full_decl,
84 struct tgsi_token *tokens,
85 struct tgsi_header *header,
86 unsigned maxsize );
87
88 struct tgsi_declaration_range
89 tgsi_default_declaration_range( void );
90
91 struct tgsi_declaration_range
92 tgsi_build_declaration_range(
93 unsigned first,
94 unsigned last,
95 struct tgsi_declaration *declaration,
96 struct tgsi_header *header );
97
98 struct tgsi_declaration_semantic
99 tgsi_default_declaration_semantic( void );
100
101 struct tgsi_declaration_semantic
102 tgsi_build_declaration_semantic(
103 unsigned semantic_name,
104 unsigned semantic_index,
105 struct tgsi_declaration *declaration,
106 struct tgsi_header *header );
107
108 /*
109 * immediate
110 */
111
112 struct tgsi_immediate
113 tgsi_default_immediate( void );
114
115 struct tgsi_immediate
116 tgsi_build_immediate(
117 struct tgsi_header *header );
118
119 struct tgsi_full_immediate
120 tgsi_default_full_immediate( void );
121
122 union tgsi_immediate_data
123 tgsi_build_immediate_float32(
124 float value,
125 struct tgsi_immediate *immediate,
126 struct tgsi_header *header );
127
128 unsigned
129 tgsi_build_full_immediate(
130 const struct tgsi_full_immediate *full_imm,
131 struct tgsi_token *tokens,
132 struct tgsi_header *header,
133 unsigned maxsize );
134
135 /*
136 * instruction
137 */
138
139 struct tgsi_instruction
140 tgsi_default_instruction( void );
141
142 struct tgsi_instruction
143 tgsi_build_instruction(
144 unsigned opcode,
145 unsigned saturate,
146 unsigned predicate,
147 unsigned num_dst_regs,
148 unsigned num_src_regs,
149 struct tgsi_header *header );
150
151 struct tgsi_full_instruction
152 tgsi_default_full_instruction( void );
153
154 unsigned
155 tgsi_build_full_instruction(
156 const struct tgsi_full_instruction *full_inst,
157 struct tgsi_token *tokens,
158 struct tgsi_header *header,
159 unsigned maxsize );
160
161 struct tgsi_instruction_predicate
162 tgsi_default_instruction_predicate(void);
163
164 struct tgsi_instruction_predicate
165 tgsi_build_instruction_predicate(int index,
166 unsigned negate,
167 unsigned swizzleX,
168 unsigned swizzleY,
169 unsigned swizzleZ,
170 unsigned swizzleW,
171 struct tgsi_instruction *instruction,
172 struct tgsi_header *header);
173
174 struct tgsi_instruction_label
175 tgsi_default_instruction_label( void );
176
177 struct tgsi_instruction_label
178 tgsi_build_instruction_label(
179 unsigned label,
180 struct tgsi_token *prev_token,
181 struct tgsi_instruction *instruction,
182 struct tgsi_header *header );
183
184 struct tgsi_instruction_texture
185 tgsi_default_instruction_texture( void );
186
187 struct tgsi_instruction_texture
188 tgsi_build_instruction_texture(
189 unsigned texture,
190 struct tgsi_token *prev_token,
191 struct tgsi_instruction *instruction,
192 struct tgsi_header *header );
193
194 struct tgsi_src_register
195 tgsi_default_src_register( void );
196
197 struct tgsi_src_register
198 tgsi_build_src_register(
199 unsigned file,
200 unsigned swizzle_x,
201 unsigned swizzle_y,
202 unsigned swizzle_z,
203 unsigned swizzle_w,
204 unsigned negate,
205 unsigned absolute,
206 unsigned indirect,
207 unsigned dimension,
208 int index,
209 struct tgsi_instruction *instruction,
210 struct tgsi_header *header );
211
212 struct tgsi_full_src_register
213 tgsi_default_full_src_register( void );
214
215
216 struct tgsi_dimension
217 tgsi_default_dimension( void );
218
219 struct tgsi_dimension
220 tgsi_build_dimension(
221 unsigned indirect,
222 unsigned index,
223 struct tgsi_instruction *instruction,
224 struct tgsi_header *header );
225
226 struct tgsi_dst_register
227 tgsi_default_dst_register( void );
228
229 struct tgsi_dst_register
230 tgsi_build_dst_register(
231 unsigned file,
232 unsigned mask,
233 unsigned indirect,
234 int index,
235 struct tgsi_instruction *instruction,
236 struct tgsi_header *header );
237
238 struct tgsi_full_dst_register
239 tgsi_default_full_dst_register( void );
240
241
242 #if defined __cplusplus
243 }
244 #endif
245
246 #endif /* TGSI_BUILD_H */