blob: f9fdd485e4b61d32b4a553c727f25322ed158130 [file] [log] [blame]
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001/* DO NOT MODIFY - automatically generated by generate_builtins.pl */
Eric Anholtc22c4002010-03-26 18:20:30 -07002/*
3 * Copyright © 2010 Intel Corporation
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
14 * Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
Kenneth Graunkeb3262122010-04-28 23:01:33 -070025#include <stdio.h>
Eric Anholtc22c4002010-03-26 18:20:30 -070026#include "glsl_parser_extras.h"
Kenneth Graunkeb3262122010-04-28 23:01:33 -070027#include "ir_reader.h"
Eric Anholtddd2e832010-03-27 12:59:42 -070028
Eric Anholtc22c4002010-03-26 18:20:30 -070029void
Kenneth Graunkeb3262122010-04-28 23:01:33 -070030read_builtins(_mesa_glsl_parse_state *st, exec_list *instructions,
31 const char **functions, unsigned count)
Eric Anholtc22c4002010-03-26 18:20:30 -070032{
Kenneth Graunkeb3262122010-04-28 23:01:33 -070033 if (st->error)
34 return;
Eric Anholtc22c4002010-03-26 18:20:30 -070035
Kenneth Graunkeb3262122010-04-28 23:01:33 -070036 for (unsigned i = 0; i < count; i++) {
37 _mesa_glsl_read_ir(st, instructions, functions[i]);
Eric Anholtc22c4002010-03-26 18:20:30 -070038
Kenneth Graunkeb3262122010-04-28 23:01:33 -070039 if (st->error) {
40 printf("error reading builtin: %.35s ...\n", functions[i]);
41 return;
42 }
Eric Anholtcc4ef152010-04-08 15:35:34 -070043 }
44}
45
Kenneth Graunkeb3262122010-04-28 23:01:33 -070046/* Version 110 builtins */
Eric Anholt53afc362010-03-27 13:55:04 -070047
Kenneth Graunkeb3262122010-04-28 23:01:33 -070048static const char *builtins_110_abs = {
49 "((function abs\n"
50 " (signature float\n"
51 " (parameters\n"
52 " (declare (in) float arg0))\n"
53 " ((return (expression float abs (var_ref arg0)))))\n"
54 "\n"
55 " (signature vec2\n"
56 " (parameters\n"
57 " (declare (in) vec2 arg0))\n"
58 " ((return (expression vec2 abs (var_ref arg0)))))\n"
59 "\n"
60 " (signature vec3\n"
61 " (parameters\n"
62 " (declare (in) vec3 arg0))\n"
63 " ((return (expression vec3 abs (var_ref arg0)))))\n"
64 "\n"
65 " (signature vec4\n"
66 " (parameters\n"
67 " (declare (in) vec4 arg0))\n"
68 " ((return (expression vec4 abs (var_ref arg0)))))\n"
69 "))\n"
70};
Eric Anholt53afc362010-03-27 13:55:04 -070071
Kenneth Graunkeb3262122010-04-28 23:01:33 -070072static const char *builtins_110_all = {
73 "((function all\n"
74 " (signature bool\n"
75 " (parameters\n"
76 " (declare (in) bvec2 arg0))\n"
77 " ((return (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
78 "\n"
79 " (signature bool\n"
80 " (parameters\n"
81 " (declare (in) bvec3 arg0))\n"
82 " ((return (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
83 "\n"
84 " (signature bool\n"
85 " (parameters\n"
86 " (declare (in) bvec4 arg0))\n"
87 " ((return (expression bool && (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0))))))\n"
88 "))\n"
89};
Eric Anholt53afc362010-03-27 13:55:04 -070090
Kenneth Graunkeb3262122010-04-28 23:01:33 -070091static const char *builtins_110_any = {
92 "((function any\n"
93 " (signature bool\n"
94 " (parameters\n"
95 " (declare (in) bvec2 arg0))\n"
96 " ((return (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
97 "\n"
98 " (signature bool\n"
99 " (parameters\n"
100 " (declare (in) bvec3 arg0))\n"
101 " ((return (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
102 "\n"
103 " (signature bool\n"
104 " (parameters\n"
105 " (declare (in) bvec4 arg0))\n"
106 " ((return (expression bool || (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0))))))\n"
107 "))\n"
108};
Eric Anholt53afc362010-03-27 13:55:04 -0700109
Eric Anholt5e58e542010-05-19 12:19:54 -0700110static const char *builtins_110_asin = {
111 "((function asin\n"
112 " (signature float\n"
113 " (parameters\n"
114 " (declare (in) float x))\n"
115 " ((return (expression float *\n"
116 " (expression float -\n"
117 " (expression float *\n"
118 " (constant float (3.1415926))\n"
119 " (constant float (0.5)))\n"
120 " (expression float sqrt\n"
121 " (expression float -\n"
122 " (constant float (1.0))\n"
123 " (expression float abs (var_ref x)))))\n"
124 " (expression float +\n"
125 " (constant float (1.5707288))\n"
126 " (expression float *\n"
127 " (expression float abs (var_ref x))\n"
128 " (expression float +\n"
129 " (constant float (-0.2121144))\n"
130 " (expression float *\n"
131 " (constant float (0.0742610))\n"
132 " (expression float abs (var_ref x))))))))))\n"
133 "\n"
134 " (signature float\n"
135 " (parameters\n"
136 " (declare (in) vec2 x))\n"
137 " ((return (expression vec2 *\n"
138 " (expression vec2 -\n"
139 " (expression vec2 *\n"
140 " (constant float (3.1415926))\n"
141 " (constant float (0.5)))\n"
142 " (expression vec2 sqrt\n"
143 " (expression vec2 -\n"
144 " (constant float (1.0))\n"
145 " (expression vec2 abs (var_ref x)))))\n"
146 " (expression vec2 +\n"
147 " (constant float (1.5707288))\n"
148 " (expression vec2 *\n"
149 " (expression vec2 abs (var_ref x))\n"
150 " (expression vec2 +\n"
151 " (constant float (-0.2121144))\n"
152 " (expression vec2 *\n"
153 " (constant float (0.0742610))\n"
154 " (expression vec2 abs (var_ref x))))))))))\n"
155 "\n"
156 " (signature float\n"
157 " (parameters\n"
158 " (declare (in) vec3 x))\n"
159 " ((return (expression vec3 *\n"
160 " (expression vec3 -\n"
161 " (expression vec3 *\n"
162 " (constant float (3.1415926))\n"
163 " (constant float (0.5)))\n"
164 " (expression vec3 sqrt\n"
165 " (expression vec3 -\n"
166 " (constant float (1.0))\n"
167 " (expression vec3 abs (var_ref x)))))\n"
168 " (expression vec3 +\n"
169 " (constant float (1.5707288))\n"
170 " (expression vec3 *\n"
171 " (expression vec3 abs (var_ref x))\n"
172 " (expression vec3 +\n"
173 " (constant float (-0.2121144))\n"
174 " (expression vec3 *\n"
175 " (constant float (0.0742610))\n"
176 " (expression vec3 abs (var_ref x))))))))))\n"
177 "\n"
178 " (signature float\n"
179 " (parameters\n"
180 " (declare (in) vec4 x))\n"
181 " ((return (expression vec4 *\n"
182 " (expression vec4 -\n"
183 " (expression vec4 *\n"
184 " (constant float (3.1415926))\n"
185 " (constant float (0.5)))\n"
186 " (expression vec4 sqrt\n"
187 " (expression vec4 -\n"
188 " (constant float (1.0))\n"
189 " (expression vec4 abs (var_ref x)))))\n"
190 " (expression vec4 +\n"
191 " (constant float (1.5707288))\n"
192 " (expression vec4 *\n"
193 " (expression vec4 abs (var_ref x))\n"
194 " (expression vec4 +\n"
195 " (constant float (-0.2121144))\n"
196 " (expression vec4 *\n"
197 " (constant float (0.0742610))\n"
198 " (expression vec4 abs (var_ref x))))))))))\n"
199 "))\n"
200};
201
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700202static const char *builtins_110_ceil = {
203 "((function ceil\n"
204 " (signature float\n"
205 " (parameters\n"
206 " (declare (in) float arg0))\n"
207 " ((return (expression float ceil (var_ref arg0)))))\n"
208 "\n"
209 " (signature vec2\n"
210 " (parameters\n"
211 " (declare (in) vec2 arg0))\n"
212 " ((return (expression vec2 ceil (var_ref arg0)))))\n"
213 "\n"
214 " (signature vec3\n"
215 " (parameters\n"
216 " (declare (in) vec3 arg0))\n"
217 " ((return (expression vec3 ceil (var_ref arg0)))))\n"
218 "\n"
219 " (signature vec4\n"
220 " (parameters\n"
221 " (declare (in) vec4 arg0))\n"
222 " ((return (expression vec4 ceil (var_ref arg0)))))\n"
223 "))\n"
224};
Eric Anholt53afc362010-03-27 13:55:04 -0700225
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700226static const char *builtins_110_clamp = {
227 "((function clamp\n"
228 " (signature float\n"
229 " (parameters\n"
230 " (declare (in) float arg0)\n"
231 " (declare (in) float arg1)\n"
232 " (declare (in) float arg2))\n"
233 " ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
234 "\n"
235 " (signature vec2\n"
236 " (parameters\n"
237 " (declare (in) vec2 arg0)\n"
238 " (declare (in) vec2 arg1)\n"
239 " (declare (in) vec2 arg2))\n"
240 " ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
241 "\n"
242 " (signature vec3\n"
243 " (parameters\n"
244 " (declare (in) vec3 arg0)\n"
245 " (declare (in) vec3 arg1)\n"
246 " (declare (in) vec3 arg2))\n"
247 " ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
248 "\n"
249 " (signature vec4\n"
250 " (parameters\n"
251 " (declare (in) vec4 arg0)\n"
252 " (declare (in) vec4 arg1)\n"
253 " (declare (in) vec4 arg2))\n"
254 " ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
255 "))\n"
256};
Eric Anholt53afc362010-03-27 13:55:04 -0700257
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700258static const char *builtins_110_cos = {
259 "((function cos\n"
260 " (signature float\n"
261 " (parameters\n"
262 " (declare (in) float angle))\n"
263 " ((return (expression float cos (var_ref angle)))))\n"
264 "\n"
265 " (signature vec2\n"
266 " (parameters\n"
267 " (declare (in) vec2 angle))\n"
268 " ((return (expression vec2 cos (var_ref angle)))))\n"
269 "\n"
270 " (signature vec3\n"
271 " (parameters\n"
272 " (declare (in) vec3 angle))\n"
273 " ((return (expression vec3 cos (var_ref angle)))))\n"
274 "\n"
275 " (signature vec4\n"
276 " (parameters\n"
277 " (declare (in) vec4 angle))\n"
278 " ((return (expression vec4 cos (var_ref angle)))))\n"
279 "))\n"
280};
281
282static const char *builtins_110_cross = {
283 "((function cross\n"
284 " (signature vec3\n"
285 " (parameters\n"
286 " (declare (in) vec3 arg0)\n"
287 " (declare (in) vec3 arg1))\n"
288 " ((declare () vec3 t)\n"
289 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
290 " (expression float - (expression float * (swiz y (var_ref arg0)) (swiz z (var_ref arg1)))\n"
291 " (expression float * (swiz y (var_ref arg1)) (swiz z (var_ref arg0)))))\n"
292 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
293 " (expression float - (expression float * (swiz z (var_ref arg0)) (swiz x (var_ref arg1)))\n"
294 " (expression float * (swiz z (var_ref arg1)) (swiz x (var_ref arg0)))))\n"
295 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
296 " (expression float - (expression float * (swiz x (var_ref arg0)) (swiz y (var_ref arg1)))\n"
297 " (expression float * (swiz x (var_ref arg1)) (swiz y (var_ref arg0)))))\n"
298 " (return (var_ref t))))\n"
299 "))\n"
300};
301
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700302static const char *builtins_110_degrees = {
303 "((function degrees\n"
304 " (signature float\n"
305 " (parameters\n"
306 " (declare (in) float arg0))\n"
307 " ((return (expression float * (var_ref arg0) (constant float (57.295780))))))\n"
308 "\n"
309 " (signature vec2\n"
310 " (parameters\n"
311 " (declare (in) vec2 arg0))\n"
312 " ((return (expression vec2 * (var_ref arg0) (constant float (57.295780))))))\n"
313 "\n"
314 " (signature vec3\n"
315 " (parameters\n"
316 " (declare (in) vec3 arg0))\n"
317 " ((return (expression vec3 * (var_ref arg0) (constant float (57.295780))))))\n"
318 "\n"
319 " (signature vec4\n"
320 " (parameters\n"
321 " (declare (in) vec4 arg0))\n"
322 " ((return (expression vec4 * (var_ref arg0) (constant float (57.295780))))))\n"
323 "))\n"
324};
Eric Anholt53afc362010-03-27 13:55:04 -0700325
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700326static const char *builtins_110_dot = {
327 "((function dot\n"
328 " (signature float\n"
329 " (parameters\n"
330 " (declare (in) float arg0)\n"
331 " (declare (in) float arg1))\n"
332 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
333 "\n"
334 " (signature float\n"
335 " (parameters\n"
336 " (declare (in) vec2 arg0)\n"
337 " (declare (in) vec2 arg1))\n"
338 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
339 "\n"
340 " (signature float\n"
341 " (parameters\n"
342 " (declare (in) vec3 arg0)\n"
343 " (declare (in) vec3 arg1))\n"
344 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
345 "\n"
346 " (signature float\n"
347 " (parameters\n"
348 " (declare (in) vec4 arg0)\n"
349 " (declare (in) vec4 arg1))\n"
350 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
351 "))\n"
352};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700353
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700354static const char *builtins_110_equal = {
355 "((function equal\n"
356 " (signature bvec2\n"
357 " (parameters\n"
358 " (declare (in) vec2 arg0)\n"
359 " (declare (in) vec2 arg1))\n"
360 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700361 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
362 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700363 " (return (var_ref temp))))\n"
364 "\n"
365 " (signature bvec3\n"
366 " (parameters\n"
367 " (declare (in) vec3 arg0)\n"
368 " (declare (in) vec3 arg1))\n"
369 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700370 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
371 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
372 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700373 " (return (var_ref temp))))\n"
374 "\n"
375 " (signature bvec4\n"
376 " (parameters\n"
377 " (declare (in) vec4 arg0)\n"
378 " (declare (in) vec4 arg1))\n"
379 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700380 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
381 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
382 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
383 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700384 " (return (var_ref temp))))\n"
385 "\n"
386 " (signature bvec2\n"
387 " (parameters\n"
388 " (declare (in) ivec2 arg0)\n"
389 " (declare (in) ivec2 arg1))\n"
390 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700391 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
392 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700393 " (return (var_ref temp))))\n"
394 "\n"
395 " (signature bvec3\n"
396 " (parameters\n"
397 " (declare (in) ivec3 arg0)\n"
398 " (declare (in) ivec3 arg1))\n"
399 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700400 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
401 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
402 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700403 " (return (var_ref temp))))\n"
404 "\n"
405 " (signature bvec4\n"
406 " (parameters\n"
407 " (declare (in) ivec4 arg0)\n"
408 " (declare (in) ivec4 arg1))\n"
409 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700410 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
411 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
412 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
413 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700414 " (return (var_ref temp))))\n"
415 "))\n"
416};
Eric Anholtc22c4002010-03-26 18:20:30 -0700417
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700418static const char *builtins_110_exp = {
419 "((function exp\n"
420 " (signature float\n"
421 " (parameters\n"
422 " (declare (in) float arg0))\n"
423 " ((return (expression float exp (var_ref arg0)))))\n"
424 "\n"
425 " (signature vec2\n"
426 " (parameters\n"
427 " (declare (in) vec2 arg0))\n"
428 " ((return (expression vec2 exp (var_ref arg0)))))\n"
429 "\n"
430 " (signature vec3\n"
431 " (parameters\n"
432 " (declare (in) vec3 arg0))\n"
433 " ((return (expression vec3 exp (var_ref arg0)))))\n"
434 "\n"
435 " (signature vec4\n"
436 " (parameters\n"
437 " (declare (in) vec4 arg0))\n"
438 " ((return (expression vec4 exp (var_ref arg0)))))\n"
439 "))\n"
440};
Eric Anholt76a91e12010-03-27 14:04:43 -0700441
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700442static const char *builtins_110_exp2 = {
443 "((function exp2\n"
444 " (signature float\n"
445 " (parameters\n"
446 " (declare (in) float arg0))\n"
447 " ((return (expression float exp2 (var_ref arg0)))))\n"
448 "\n"
449 " (signature vec2\n"
450 " (parameters\n"
451 " (declare (in) vec2 arg0))\n"
452 " ((return (expression vec2 exp2 (var_ref arg0)))))\n"
453 "\n"
454 " (signature vec3\n"
455 " (parameters\n"
456 " (declare (in) vec3 arg0))\n"
457 " ((return (expression vec3 exp2 (var_ref arg0)))))\n"
458 "\n"
459 " (signature vec4\n"
460 " (parameters\n"
461 " (declare (in) vec4 arg0))\n"
462 " ((return (expression vec4 exp2 (var_ref arg0)))))\n"
463 "))\n"
464};
Eric Anholt76a91e12010-03-27 14:04:43 -0700465
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700466static const char *builtins_110_floor = {
467 "((function floor\n"
468 " (signature float\n"
469 " (parameters\n"
470 " (declare (in) float arg0))\n"
471 " ((return (expression float floor (var_ref arg0)))))\n"
472 "\n"
473 " (signature vec2\n"
474 " (parameters\n"
475 " (declare (in) vec2 arg0))\n"
476 " ((return (expression vec2 floor (var_ref arg0)))))\n"
477 "\n"
478 " (signature vec3\n"
479 " (parameters\n"
480 " (declare (in) vec3 arg0))\n"
481 " ((return (expression vec3 floor (var_ref arg0)))))\n"
482 "\n"
483 " (signature vec4\n"
484 " (parameters\n"
485 " (declare (in) vec4 arg0))\n"
486 " ((return (expression vec4 floor (var_ref arg0)))))\n"
487 "))\n"
488};
Eric Anholt76a91e12010-03-27 14:04:43 -0700489
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700490static const char *builtins_110_fract = {
491 "((function fract\n"
492 " (signature float\n"
493 " (parameters\n"
494 " (declare (in) float x))\n"
495 " ((return (expression float - (var_ref x) (expression float floor (var_ref x))))))\n"
496 "\n"
497 " (signature vec2\n"
498 " (parameters\n"
499 " (declare (in) vec2 x))\n"
500 " ((declare () vec2 t)\n"
501 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
502 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
503 " (return (var_ref t))))\n"
504 "\n"
505 " (signature vec3\n"
506 " (parameters\n"
507 " (declare (in) vec3 x))\n"
508 " ((declare () vec3 t)\n"
509 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
510 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
511 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
512 " (return (var_ref t))))\n"
513 "\n"
514 " (signature vec4\n"
515 " (parameters\n"
516 " (declare (in) vec4 x))\n"
517 " ((declare () vec4 t)\n"
518 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
519 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
520 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
521 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float - (swiz w (var_ref x)) (expression float floor (swiz w (var_ref x)))))\n"
522 " (return (var_ref t))))\n"
523 "))\n"
524 "\n"
525};
526
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700527static const char *builtins_110_greaterThan = {
528 "((function greaterThan\n"
529 " (signature bvec2\n"
530 " (parameters\n"
531 " (declare (in) vec2 arg0)\n"
532 " (declare (in) vec2 arg1))\n"
533 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700534 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
535 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700536 " (return (var_ref temp))))\n"
537 "\n"
538 " (signature bvec3\n"
539 " (parameters\n"
540 " (declare (in) vec3 arg0)\n"
541 " (declare (in) vec3 arg1))\n"
542 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700543 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
544 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
545 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700546 " (return (var_ref temp))))\n"
547 "\n"
548 " (signature bvec4\n"
549 " (parameters\n"
550 " (declare (in) vec4 arg0)\n"
551 " (declare (in) vec4 arg1))\n"
552 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700553 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
554 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
555 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
556 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700557 " (return (var_ref temp))))\n"
558 "\n"
559 " (signature bvec2\n"
560 " (parameters\n"
561 " (declare (in) ivec2 arg0)\n"
562 " (declare (in) ivec2 arg1))\n"
563 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700564 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
565 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700566 " (return (var_ref temp))))\n"
567 "\n"
568 " (signature bvec3\n"
569 " (parameters\n"
570 " (declare (in) ivec3 arg0)\n"
571 " (declare (in) ivec3 arg1))\n"
572 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700573 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
574 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
575 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700576 " (return (var_ref temp))))\n"
577 "\n"
578 " (signature bvec4\n"
579 " (parameters\n"
580 " (declare (in) ivec4 arg0)\n"
581 " (declare (in) ivec4 arg1))\n"
582 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700583 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
584 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
585 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
586 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700587 " (return (var_ref temp))))\n"
588 "))\n"
589};
Eric Anholt76a91e12010-03-27 14:04:43 -0700590
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700591static const char *builtins_110_greaterThanEqual = {
592 "((function greaterThanEqual\n"
593 " (signature bvec2\n"
594 " (parameters\n"
595 " (declare (in) vec2 arg0)\n"
596 " (declare (in) vec2 arg1))\n"
597 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700598 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
599 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700600 " (return (var_ref temp))))\n"
601 "\n"
602 " (signature bvec3\n"
603 " (parameters\n"
604 " (declare (in) vec3 arg0)\n"
605 " (declare (in) vec3 arg1))\n"
606 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700607 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
608 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
609 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700610 " (return (var_ref temp))))\n"
611 "\n"
612 " (signature bvec4\n"
613 " (parameters\n"
614 " (declare (in) vec4 arg0)\n"
615 " (declare (in) vec4 arg1))\n"
616 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700617 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
618 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
619 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
620 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700621 " (return (var_ref temp))))\n"
622 "\n"
623 " (signature bvec2\n"
624 " (parameters\n"
625 " (declare (in) ivec2 arg0)\n"
626 " (declare (in) ivec2 arg1))\n"
627 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700628 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
629 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700630 " (return (var_ref temp))))\n"
631 "\n"
632 " (signature bvec3\n"
633 " (parameters\n"
634 " (declare (in) ivec3 arg0)\n"
635 " (declare (in) ivec3 arg1))\n"
636 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700637 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
638 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
639 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700640 " (return (var_ref temp))))\n"
641 "\n"
642 " (signature bvec4\n"
643 " (parameters\n"
644 " (declare (in) ivec4 arg0)\n"
645 " (declare (in) ivec4 arg1))\n"
646 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700647 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
648 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
649 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
650 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700651 " (return (var_ref temp))))\n"
652 "))\n"
653};
Eric Anholt76a91e12010-03-27 14:04:43 -0700654
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700655static const char *builtins_110_inversesqrt = {
656 "((function inversesqrt\n"
657 " (signature float\n"
658 " (parameters\n"
659 " (declare (in) float arg0))\n"
660 " ((return (expression float rsq (var_ref arg0)))))\n"
661 "\n"
662 " (signature vec2\n"
663 " (parameters\n"
664 " (declare (in) vec2 arg0))\n"
665 " ((return (expression vec2 rsq (var_ref arg0)))))\n"
666 "\n"
667 " (signature vec3\n"
668 " (parameters\n"
669 " (declare (in) vec3 arg0))\n"
670 " ((return (expression vec3 rsq (var_ref arg0)))))\n"
671 "\n"
672 " (signature vec4\n"
673 " (parameters\n"
674 " (declare (in) vec4 arg0))\n"
675 " ((return (expression vec4 rsq (var_ref arg0)))))\n"
676 "))\n"
677};
Eric Anholt76a91e12010-03-27 14:04:43 -0700678
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700679static const char *builtins_110_length = {
680 "((function length\n"
681 " (signature float\n"
682 " (parameters\n"
683 " (declare (in) float arg0))\n"
684 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
685 "\n"
686 " (signature float\n"
687 " (parameters\n"
688 " (declare (in) vec2 arg0))\n"
689 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
690 "\n"
691 " (signature float\n"
692 " (parameters\n"
693 " (declare (in) vec3 arg0))\n"
694 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
695 "\n"
696 " (signature float\n"
697 " (parameters\n"
698 " (declare (in) vec4 arg0))\n"
699 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
700 "))\n"
701};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700702
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700703static const char *builtins_110_lessThan = {
704 "((function lessThan\n"
705 " (signature bvec2\n"
706 " (parameters\n"
707 " (declare (in) vec2 arg0)\n"
708 " (declare (in) vec2 arg1))\n"
709 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700710 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
711 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700712 " (return (var_ref temp))))\n"
713 "\n"
714 " (signature bvec3\n"
715 " (parameters\n"
716 " (declare (in) vec3 arg0)\n"
717 " (declare (in) vec3 arg1))\n"
718 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700719 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
720 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
721 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700722 " (return (var_ref temp))))\n"
723 "\n"
724 " (signature bvec4\n"
725 " (parameters\n"
726 " (declare (in) vec4 arg0)\n"
727 " (declare (in) vec4 arg1))\n"
728 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700729 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
730 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
731 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
732 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700733 " (return (var_ref temp))))\n"
734 "\n"
735 " (signature bvec2\n"
736 " (parameters\n"
737 " (declare (in) ivec2 arg0)\n"
738 " (declare (in) ivec2 arg1))\n"
739 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700740 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
741 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700742 " (return (var_ref temp))))\n"
743 "\n"
744 " (signature bvec3\n"
745 " (parameters\n"
746 " (declare (in) ivec3 arg0)\n"
747 " (declare (in) ivec3 arg1))\n"
748 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700749 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
750 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
751 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700752 " (return (var_ref temp))))\n"
753 "\n"
754 " (signature bvec4\n"
755 " (parameters\n"
756 " (declare (in) ivec4 arg0)\n"
757 " (declare (in) ivec4 arg1))\n"
758 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700759 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
760 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
761 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
762 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700763 " (return (var_ref temp))))\n"
764 "))\n"
765};
Eric Anholt76a91e12010-03-27 14:04:43 -0700766
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700767static const char *builtins_110_lessThanEqual = {
768 "((function lessThanEqual\n"
769 " (signature bvec2\n"
770 " (parameters\n"
771 " (declare (in) vec2 arg0)\n"
772 " (declare (in) vec2 arg1))\n"
773 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700774 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
775 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700776 " (return (var_ref temp))))\n"
777 "\n"
778 " (signature bvec3\n"
779 " (parameters\n"
780 " (declare (in) vec3 arg0)\n"
781 " (declare (in) vec3 arg1))\n"
782 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700783 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
784 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
785 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700786 " (return (var_ref temp))))\n"
787 "\n"
788 " (signature bvec4\n"
789 " (parameters\n"
790 " (declare (in) vec4 arg0)\n"
791 " (declare (in) vec4 arg1))\n"
792 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700793 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
794 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
795 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
796 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700797 " (return (var_ref temp))))\n"
798 "\n"
799 " (signature bvec2\n"
800 " (parameters\n"
801 " (declare (in) ivec2 arg0)\n"
802 " (declare (in) ivec2 arg1))\n"
803 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700804 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
805 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700806 " (return (var_ref temp))))\n"
807 "\n"
808 " (signature bvec3\n"
809 " (parameters\n"
810 " (declare (in) ivec3 arg0)\n"
811 " (declare (in) ivec3 arg1))\n"
812 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700813 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
814 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
815 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700816 " (return (var_ref temp))))\n"
817 "\n"
818 " (signature bvec4\n"
819 " (parameters\n"
820 " (declare (in) ivec4 arg0)\n"
821 " (declare (in) ivec4 arg1))\n"
822 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700823 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
824 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
825 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
826 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700827 " (return (var_ref temp))))\n"
828 "))\n"
829};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700830
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700831static const char *builtins_110_log = {
832 "((function log\n"
833 " (signature float\n"
834 " (parameters\n"
835 " (declare (in) float arg0))\n"
836 " ((return (expression float log (var_ref arg0)))))\n"
837 "\n"
838 " (signature vec2\n"
839 " (parameters\n"
840 " (declare (in) vec2 arg0))\n"
841 " ((return (expression vec2 log (var_ref arg0)))))\n"
842 "\n"
843 " (signature vec3\n"
844 " (parameters\n"
845 " (declare (in) vec3 arg0))\n"
846 " ((return (expression vec3 log (var_ref arg0)))))\n"
847 "\n"
848 " (signature vec4\n"
849 " (parameters\n"
850 " (declare (in) vec4 arg0))\n"
851 " ((return (expression vec4 log (var_ref arg0)))))\n"
852 "))\n"
853};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700854
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700855static const char *builtins_110_log2 = {
856 "((function log2\n"
857 " (signature float\n"
858 " (parameters\n"
859 " (declare (in) float arg0))\n"
860 " ((return (expression float log2 (var_ref arg0)))))\n"
861 "\n"
862 " (signature vec2\n"
863 " (parameters\n"
864 " (declare (in) vec2 arg0))\n"
865 " ((return (expression vec2 log2 (var_ref arg0)))))\n"
866 "\n"
867 " (signature vec3\n"
868 " (parameters\n"
869 " (declare (in) vec3 arg0))\n"
870 " ((return (expression vec3 log2 (var_ref arg0)))))\n"
871 "\n"
872 " (signature vec4\n"
873 " (parameters\n"
874 " (declare (in) vec4 arg0))\n"
875 " ((return (expression vec4 log2 (var_ref arg0)))))\n"
876 "))\n"
877};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700878
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700879static const char *builtins_110_max = {
880 "((function max\n"
881 " (signature float\n"
882 " (parameters\n"
883 " (declare (in) float arg0)\n"
884 " (declare (in) float arg1))\n"
885 " ((return (expression float max (var_ref arg0) (var_ref arg1)))))\n"
886 "\n"
887 " (signature vec2\n"
888 " (parameters\n"
889 " (declare (in) vec2 arg0)\n"
890 " (declare (in) vec2 arg1))\n"
891 " ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))\n"
892 "\n"
893 " (signature vec3\n"
894 " (parameters\n"
895 " (declare (in) vec3 arg0)\n"
896 " (declare (in) vec3 arg1))\n"
897 " ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))\n"
898 "\n"
899 " (signature vec4\n"
900 " (parameters\n"
901 " (declare (in) vec4 arg0)\n"
902 " (declare (in) vec4 arg1))\n"
903 " ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))\n"
904 "))\n"
905};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700906
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700907static const char *builtins_110_min = {
908 "((function min\n"
909 " (signature float\n"
910 " (parameters\n"
911 " (declare (in) float arg0)\n"
912 " (declare (in) float arg1))\n"
913 " ((return (expression float min (var_ref arg0) (var_ref arg1)))))\n"
914 "\n"
915 " (signature vec2\n"
916 " (parameters\n"
917 " (declare (in) vec2 arg0)\n"
918 " (declare (in) vec2 arg1))\n"
919 " ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))\n"
920 "\n"
921 " (signature vec3\n"
922 " (parameters\n"
923 " (declare (in) vec3 arg0)\n"
924 " (declare (in) vec3 arg1))\n"
925 " ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))\n"
926 "\n"
927 " (signature vec4\n"
928 " (parameters\n"
929 " (declare (in) vec4 arg0)\n"
930 " (declare (in) vec4 arg1))\n"
931 " ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))\n"
932 "))\n"
933};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700934
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700935static const char *builtins_110_mix = {
936 "((function mix\n"
937 " (signature float\n"
938 " (parameters\n"
939 " (declare (in) float arg0)\n"
940 " (declare (in) float arg1)\n"
941 " (declare (in) float arg2))\n"
942 " ((return (expression float + (expression float * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression float * (var_ref arg1) (var_ref arg2))))))\n"
943 "\n"
944 " (signature vec2\n"
945 " (parameters\n"
946 " (declare (in) vec2 arg0)\n"
947 " (declare (in) vec2 arg1)\n"
948 " (declare (in) vec2 arg2))\n"
949 " ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression vec2 - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))\n"
950 "\n"
951 " (signature vec3\n"
952 " (parameters\n"
953 " (declare (in) vec3 arg0)\n"
954 " (declare (in) vec3 arg1)\n"
955 " (declare (in) vec3 arg2))\n"
956 " ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression vec3 - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))\n"
957 "\n"
958 " (signature vec4\n"
959 " (parameters\n"
960 " (declare (in) vec4 arg0)\n"
961 " (declare (in) vec4 arg1)\n"
962 " (declare (in) vec4 arg2))\n"
963 " ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression vec4 - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))\n"
964 "))\n"
965};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700966
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700967static const char *builtins_110_mod = {
968 "((function mod\n"
969 " (signature float\n"
970 " (parameters\n"
971 " (declare (in) float arg0)\n"
972 " (declare (in) float arg1))\n"
973 " ((return (expression float % (var_ref arg0) (var_ref arg1)))))\n"
974 "\n"
975 " (signature vec2\n"
976 " (parameters\n"
977 " (declare (in) vec2 arg0)\n"
978 " (declare (in) vec2 arg1))\n"
979 " ((return (expression vec2 % (var_ref arg0) (var_ref arg1)))))\n"
980 "\n"
981 " (signature vec3\n"
982 " (parameters\n"
983 " (declare (in) vec3 arg0)\n"
984 " (declare (in) vec3 arg1))\n"
985 " ((return (expression vec3 % (var_ref arg0) (var_ref arg1)))))\n"
986 "\n"
987 " (signature vec4\n"
988 " (parameters\n"
989 " (declare (in) vec4 arg0)\n"
990 " (declare (in) vec4 arg1))\n"
991 " ((return (expression vec4 % (var_ref arg0) (var_ref arg1)))))\n"
992 "))\n"
993};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700994
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700995static const char *builtins_110_normalize = {
996 "((function normalize\n"
997 " (signature float\n"
998 " (parameters\n"
999 " (declare (in) float arg0))\n"
1000 " ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1001 "\n"
1002 " (signature vec2\n"
1003 " (parameters\n"
1004 " (declare (in) vec2 arg0))\n"
1005 " ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1006 "\n"
1007 " (signature vec3\n"
1008 " (parameters\n"
1009 " (declare (in) vec3 arg0))\n"
1010 " ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1011 "\n"
1012 " (signature vec4\n"
1013 " (parameters\n"
1014 " (declare (in) vec4 arg0))\n"
1015 " ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1016 "))\n"
1017};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001018
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001019static const char *builtins_110_not = {
1020 "((function not\n"
1021 " (signature bvec2\n"
1022 " (parameters\n"
1023 " (declare (in) bvec2 arg0))\n"
1024 " ((return (expression bvec2 ! (var_ref arg0)))))\n"
1025 "\n"
1026 " (signature bvec3\n"
1027 " (parameters\n"
1028 " (declare (in) bvec3 arg0))\n"
1029 " ((return (expression bvec3 ! (var_ref arg0)))))\n"
1030 "\n"
1031 " (signature bvec4\n"
1032 " (parameters\n"
1033 " (declare (in) bvec4 arg0))\n"
1034 " ((return (expression bvec4 ! (var_ref arg0)))))\n"
1035 "))\n"
1036};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001037
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001038static const char *builtins_110_notEqual = {
1039 "((function notEqual\n"
1040 " (signature bvec2\n"
1041 " (parameters\n"
1042 " (declare (in) vec2 arg0)\n"
1043 " (declare (in) vec2 arg1))\n"
1044 " ((declare () bvec2 temp)\n"
1045 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1046 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1047 " (return (var_ref temp))))\n"
1048 "\n"
1049 " (signature bvec3\n"
1050 " (parameters\n"
1051 " (declare (in) vec3 arg0)\n"
1052 " (declare (in) vec3 arg1))\n"
1053 " ((declare () bvec3 temp)\n"
1054 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1055 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1056 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1057 " (return (var_ref temp))))\n"
1058 "\n"
1059 " (signature bvec4\n"
1060 " (parameters\n"
1061 " (declare (in) vec4 arg0)\n"
1062 " (declare (in) vec4 arg1))\n"
1063 " ((declare () bvec4 temp)\n"
1064 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1065 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1066 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1067 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression float != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
1068 " (return (var_ref temp))))\n"
1069 "\n"
1070 " (signature bvec2\n"
1071 " (parameters\n"
1072 " (declare (in) ivec2 arg0)\n"
1073 " (declare (in) ivec2 arg1))\n"
1074 " ((declare () bvec2 temp)\n"
1075 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1076 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1077 " (return (var_ref temp))))\n"
1078 "\n"
1079 " (signature bvec3\n"
1080 " (parameters\n"
1081 " (declare (in) ivec3 arg0)\n"
1082 " (declare (in) ivec3 arg1))\n"
1083 " ((declare () bvec3 temp)\n"
1084 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1085 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1086 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1087 " (return (var_ref temp))))\n"
1088 "\n"
1089 " (signature bvec4\n"
1090 " (parameters\n"
1091 " (declare (in) ivec4 arg0)\n"
1092 " (declare (in) ivec4 arg1))\n"
1093 " ((declare () bvec4 temp)\n"
1094 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1095 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1096 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1097 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression int != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
1098 " (return (var_ref temp))))\n"
1099 "))\n"
1100};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001101
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001102static const char *builtins_110_pow = {
1103 "((function pow\n"
1104 " (signature float\n"
1105 " (parameters\n"
1106 " (declare (in) float arg0)\n"
1107 " (declare (in) float arg1))\n"
1108 " ((return (expression float pow (var_ref arg0) (var_ref arg1)))))\n"
1109 "\n"
1110 " (signature vec2\n"
1111 " (parameters\n"
1112 " (declare (in) vec2 arg0)\n"
1113 " (declare (in) vec2 arg1))\n"
1114 " ((return (expression vec2 pow (var_ref arg0) (var_ref arg1)))))\n"
1115 "\n"
1116 " (signature vec3\n"
1117 " (parameters\n"
1118 " (declare (in) vec3 arg0)\n"
1119 " (declare (in) vec3 arg1))\n"
1120 " ((return (expression vec3 pow (var_ref arg0) (var_ref arg1)))))\n"
1121 "\n"
1122 " (signature vec4\n"
1123 " (parameters\n"
1124 " (declare (in) vec4 arg0)\n"
1125 " (declare (in) vec4 arg1))\n"
1126 " ((return (expression vec4 pow (var_ref arg0) (var_ref arg1)))))\n"
1127 "))\n"
1128};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001129
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001130static const char *builtins_110_radians = {
1131 "((function radians\n"
1132 " (signature float\n"
1133 " (parameters\n"
1134 " (declare (in) float arg0))\n"
1135 " ((return (expression float * (var_ref arg0) (constant float (0.017453))))))\n"
1136 "\n"
1137 " (signature vec2\n"
1138 " (parameters\n"
1139 " (declare (in) vec2 arg0))\n"
1140 " ((return (expression vec2 * (var_ref arg0) (constant float (0.017453))))))\n"
1141 "\n"
1142 " (signature vec3\n"
1143 " (parameters\n"
1144 " (declare (in) vec3 arg0))\n"
1145 " ((return (expression vec3 * (var_ref arg0) (constant float (0.017453))))))\n"
1146 "\n"
1147 " (signature vec4\n"
1148 " (parameters\n"
1149 " (declare (in) vec4 arg0))\n"
1150 " ((return (expression vec4 * (var_ref arg0) (constant float (0.017453))))))\n"
1151 "))\n"
1152};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001153
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001154static const char *builtins_110_sign = {
1155 "((function sign\n"
1156 " (signature float\n"
1157 " (parameters\n"
1158 " (declare (in) float x))\n"
1159 " ((return (expression float sign (var_ref x)))))\n"
1160 "\n"
1161 " (signature vec2\n"
1162 " (parameters\n"
1163 " (declare (in) vec2 x))\n"
1164 " ((declare () vec2 t)\n"
1165 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1166 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1167 " (return (var_ref t))))\n"
1168 "\n"
1169 " (signature vec3\n"
1170 " (parameters\n"
1171 " (declare (in) vec3 x))\n"
1172 " ((declare () vec3 t)\n"
1173 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1174 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1175 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1176 " (return (var_ref t))))\n"
1177 "\n"
1178 " (signature vec4\n"
1179 " (parameters\n"
1180 " (declare (in) vec4 x))\n"
1181 " ((declare () vec4 t)\n"
1182 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1183 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1184 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1185 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float sign (swiz w (var_ref x))))\n"
1186 " (return (var_ref t))))\n"
1187 "))\n"
1188 "\n"
1189};
1190
1191static const char *builtins_110_sin = {
1192 "((function sin\n"
1193 " (signature float\n"
1194 " (parameters\n"
1195 " (declare (in) float angle))\n"
1196 " ((return (expression float sin (var_ref angle)))))\n"
1197 "\n"
1198 " (signature vec2\n"
1199 " (parameters\n"
1200 " (declare (in) vec2 angle))\n"
1201 " ((return (expression vec2 sin (var_ref angle)))))\n"
1202 "\n"
1203 " (signature vec3\n"
1204 " (parameters\n"
1205 " (declare (in) vec3 angle))\n"
1206 " ((return (expression vec3 sin (var_ref angle)))))\n"
1207 "\n"
1208 " (signature vec4\n"
1209 " (parameters\n"
1210 " (declare (in) vec4 angle))\n"
1211 " ((return (expression vec4 sin (var_ref angle)))))\n"
1212 "))\n"
1213};
1214
1215static const char *builtins_110_smoothstep = {
1216 "((function smoothstep\n"
1217 " (signature float\n"
1218 " (parameters\n"
1219 " (declare (in) float edge0)\n"
1220 " (declare (in) float edge1)\n"
1221 " (declare (in) float x))\n"
1222 " ((declare () float t)\n"
1223 "\n"
1224 " (assign (constant bool (1)) (var_ref t)\n"
1225 " (expression float max\n"
1226 " (expression float min\n"
1227 " (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1228 " (constant float (1.0)))\n"
1229 " (constant float (0.0))))\n"
1230 " (return (expression float * (var_ref t) (expression float * (var_ref t) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (var_ref t))))))))\n"
1231 "\n"
1232 " (signature vec2\n"
1233 " (parameters\n"
1234 " (declare (in) float edge0)\n"
1235 " (declare (in) float edge1)\n"
1236 " (declare (in) vec2 x))\n"
1237 " ((declare () vec2 t)\n"
1238 " (declare () vec2 retval)\n"
1239 "\n"
1240 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1241 " (expression float max\n"
1242 " (expression float min\n"
1243 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1244 " (constant float (1.0)))\n"
1245 " (constant float (0.0))))\n"
1246 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1247 "\n"
1248 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1249 " (expression float max\n"
1250 " (expression float min\n"
1251 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1252 " (constant float (1.0)))\n"
1253 " (constant float (0.0))))\n"
1254 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1255 " (return (var_ref retval))\n"
1256 " ))\n"
1257 "\n"
1258 " (signature vec3\n"
1259 " (parameters\n"
1260 " (declare (in) float edge0)\n"
1261 " (declare (in) float edge1)\n"
1262 " (declare (in) vec3 x))\n"
1263 " ((declare () vec3 t)\n"
1264 " (declare () vec3 retval)\n"
1265 "\n"
1266 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1267 " (expression float max\n"
1268 " (expression float min\n"
1269 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1270 " (constant float (1.0)))\n"
1271 " (constant float (0.0))))\n"
1272 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1273 "\n"
1274 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1275 " (expression float max\n"
1276 " (expression float min\n"
1277 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1278 " (constant float (1.0)))\n"
1279 " (constant float (0.0))))\n"
1280 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1281 "\n"
1282 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1283 " (expression float max\n"
1284 " (expression float min\n"
1285 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1286 " (constant float (1.0)))\n"
1287 " (constant float (0.0))))\n"
1288 " (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t)))))))\n"
1289 " (return (var_ref retval))\n"
1290 " ))\n"
1291 "\n"
1292 "\n"
1293 " (signature vec4\n"
1294 " (parameters\n"
1295 " (declare (in) float edge0)\n"
1296 " (declare (in) float edge1)\n"
1297 " (declare (in) vec4 x))\n"
1298 " ((declare () vec4 t)\n"
1299 " (declare () vec4 retval)\n"
1300 "\n"
1301 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1302 " (expression float max\n"
1303 " (expression float min\n"
1304 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1305 " (constant float (1.0)))\n"
1306 " (constant float (0.0))))\n"
1307 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1308 "\n"
1309 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1310 " (expression float max\n"
1311 " (expression float min\n"
1312 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1313 " (constant float (1.0)))\n"
1314 " (constant float (0.0))))\n"
1315 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1316 "\n"
1317 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1318 " (expression float max\n"
1319 " (expression float min\n"
1320 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1321 " (constant float (1.0)))\n"
1322 " (constant float (0.0))))\n"
1323 " (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t)))))))\n"
1324 "\n"
1325 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1326 " (expression float max\n"
1327 " (expression float min\n"
1328 " (expression float / (expression float - (swiz w (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1329 " (constant float (1.0)))\n"
1330 " (constant float (0.0))))\n"
1331 " (assign (constant bool (1)) (swiz w (var_ref retval)) (expression float * (swiz w (var_ref t)) (expression float * (swiz w (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz w (var_ref t)))))))\n"
1332 " (return (var_ref retval))\n"
1333 " ))\n"
1334 "\n"
1335 " (signature vec2\n"
1336 " (parameters\n"
1337 " (declare (in) vec2 edge0)\n"
1338 " (declare (in) vec2 edge1)\n"
1339 " (declare (in) vec2 x))\n"
1340 " ((declare () vec2 t)\n"
1341 " (declare () vec2 retval)\n"
1342 "\n"
1343 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1344 " (expression float max\n"
1345 " (expression float min\n"
1346 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1347 " (constant float (1.0)))\n"
1348 " (constant float (0.0))))\n"
1349 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1350 "\n"
1351 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1352 " (expression float max\n"
1353 " (expression float min\n"
1354 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1355 " (constant float (1.0)))\n"
1356 " (constant float (0.0))))\n"
1357 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1358 " (return (var_ref retval))\n"
1359 " ))\n"
1360 "\n"
1361 " (signature vec3\n"
1362 " (parameters\n"
1363 " (declare (in) vec3 edge0)\n"
1364 " (declare (in) vec3 edge1)\n"
1365 " (declare (in) vec3 x))\n"
1366 " ((declare () vec3 t)\n"
1367 " (declare () vec3 retval)\n"
1368 "\n"
1369 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1370 " (expression float max\n"
1371 " (expression float min\n"
1372 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1373 " (constant float (1.0)))\n"
1374 " (constant float (0.0))))\n"
1375 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1376 "\n"
1377 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1378 " (expression float max\n"
1379 " (expression float min\n"
1380 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1381 " (constant float (1.0)))\n"
1382 " (constant float (0.0))))\n"
1383 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1384 "\n"
1385 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1386 " (expression float max\n"
1387 " (expression float min\n"
1388 " (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0))))\n"
1389 " (constant float (1.0)))\n"
1390 " (constant float (0.0))))\n"
1391 " (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t)))))))\n"
1392 " (return (var_ref retval))\n"
1393 " ))\n"
1394 "\n"
1395 "\n"
1396 " (signature vec4\n"
1397 " (parameters\n"
1398 " (declare (in) vec4 edge0)\n"
1399 " (declare (in) vec4 edge1)\n"
1400 " (declare (in) vec4 x))\n"
1401 " ((declare () vec4 t)\n"
1402 " (declare () vec4 retval)\n"
1403 "\n"
1404 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1405 " (expression float max\n"
1406 " (expression float min\n"
1407 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1408 " (constant float (1.0)))\n"
1409 " (constant float (0.0))))\n"
1410 " (assign (constant bool (1)) (swiz x (var_ref retval)) (expression float * (swiz x (var_ref t)) (expression float * (swiz x (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz x (var_ref t)))))))\n"
1411 "\n"
1412 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1413 " (expression float max\n"
1414 " (expression float min\n"
1415 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1416 " (constant float (1.0)))\n"
1417 " (constant float (0.0))))\n"
1418 " (assign (constant bool (1)) (swiz y (var_ref retval)) (expression float * (swiz y (var_ref t)) (expression float * (swiz y (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz y (var_ref t)))))))\n"
1419 "\n"
1420 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1421 " (expression float max\n"
1422 " (expression float min\n"
1423 " (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0))))\n"
1424 " (constant float (1.0)))\n"
1425 " (constant float (0.0))))\n"
1426 " (assign (constant bool (1)) (swiz z (var_ref retval)) (expression float * (swiz z (var_ref t)) (expression float * (swiz z (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz z (var_ref t)))))))\n"
1427 "\n"
1428 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1429 " (expression float max\n"
1430 " (expression float min\n"
1431 " (expression float / (expression float - (swiz w (var_ref x)) (swiz w (var_ref edge0))) (expression float - (swiz w (var_ref edge1)) (swiz w (var_ref edge0))))\n"
1432 " (constant float (1.0)))\n"
1433 " (constant float (0.0))))\n"
1434 " (assign (constant bool (1)) (swiz w (var_ref retval)) (expression float * (swiz w (var_ref t)) (expression float * (swiz w (var_ref t)) (expression float - (constant float (3.000000)) (expression float * (constant float (2.000000)) (swiz w (var_ref t)))))))\n"
1435 " (return (var_ref retval))\n"
1436 " ))\n"
1437 "\n"
1438 "))\n"
1439 "\n"
1440};
1441
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001442static const char *builtins_110_sqrt = {
1443 "((function sqrt\n"
1444 " (signature float\n"
1445 " (parameters\n"
1446 " (declare (in) float arg0))\n"
1447 " ((return (expression float sqrt (var_ref arg0)))))\n"
1448 "\n"
1449 " (signature vec2\n"
1450 " (parameters\n"
1451 " (declare (in) vec2 arg0))\n"
1452 " ((return (expression vec2 sqrt (var_ref arg0)))))\n"
1453 "\n"
1454 " (signature vec3\n"
1455 " (parameters\n"
1456 " (declare (in) vec3 arg0))\n"
1457 " ((return (expression vec3 sqrt (var_ref arg0)))))\n"
1458 "\n"
1459 " (signature vec4\n"
1460 " (parameters\n"
1461 " (declare (in) vec4 arg0))\n"
1462 " ((return (expression vec4 sqrt (var_ref arg0)))))\n"
1463 "))\n"
1464};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001465
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001466static const char *builtins_110_step = {
1467 "((function step\n"
1468 " (signature float\n"
1469 " (parameters\n"
1470 " (declare (in) float edge)\n"
1471 " (declare (in) float x))\n"
1472 " ((return (expression float b2f (expression bool < (var_ref x) (var_ref edge))))))\n"
1473 "\n"
1474 " (signature vec2\n"
1475 " (parameters\n"
1476 " (declare (in) float edge)\n"
1477 " (declare (in) vec2 x))\n"
1478 " ((declare () vec2 t)\n"
1479 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1480 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1481 " (return (var_ref t))))\n"
1482 "\n"
1483 " (signature vec3\n"
1484 " (parameters\n"
1485 " (declare (in) float edge)\n"
1486 " (declare (in) vec3 x))\n"
1487 " ((declare () vec3 t)\n"
1488 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1489 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1490 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1491 " (return (var_ref t))))\n"
1492 "\n"
1493 " (signature vec4\n"
1494 " (parameters\n"
1495 " (declare (in) float edge)\n"
1496 " (declare (in) vec4 x))\n"
1497 " ((declare () vec4 t)\n"
1498 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1499 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1500 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1501 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(var_ref edge))))\n"
1502 " (return (var_ref t))))\n"
1503 "\n"
1504 " (signature vec2\n"
1505 " (parameters\n"
1506 " (declare (in) vec2 edge)\n"
1507 " (declare (in) vec2 x))\n"
1508 " ((declare () vec2 t)\n"
1509 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge)))))\n"
1510 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge)))))\n"
1511 " (return (var_ref t))))\n"
1512 "\n"
1513 " (signature vec3\n"
1514 " (parameters\n"
1515 " (declare (in) vec3 edge)\n"
1516 " (declare (in) vec3 x))\n"
1517 " ((declare () vec3 t)\n"
1518 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge)))))\n"
1519 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge)))))\n"
1520 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(swiz z (var_ref edge)))))\n"
1521 " (return (var_ref t))))\n"
1522 "\n"
1523 " (signature vec4\n"
1524 " (parameters\n"
1525 " (declare (in) vec4 edge)\n"
1526 " (declare (in) vec4 x))\n"
1527 " ((declare () vec4 t)\n"
1528 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(swiz x (var_ref edge)))))\n"
1529 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz y (var_ref edge)))))\n"
1530 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(swiz z (var_ref edge)))))\n"
1531 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(swiz w (var_ref edge)))))\n"
1532 " (return (var_ref t))))\n"
1533 "))\n"
1534 "\n"
1535};
1536
1537static const char *builtins_110_tan = {
1538 "((function tan\n"
1539 " (signature float\n"
1540 " (parameters\n"
1541 " (declare (in) float angle))\n"
1542 " ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle))))))\n"
1543 "\n"
1544 " (signature vec2\n"
1545 " (parameters\n"
1546 " (declare (in) vec2 angle))\n"
1547 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec2 cos (var_ref angle))))))\n"
1548 "\n"
1549 " (signature vec3\n"
1550 " (parameters\n"
1551 " (declare (in) vec3 angle))\n"
1552 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec3 cos (var_ref angle))))))\n"
1553 "\n"
1554 " (signature vec4\n"
1555 " (parameters\n"
1556 " (declare (in) vec4 angle))\n"
1557 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec4 cos (var_ref angle))))))\n"
1558 "))\n"
1559};
1560
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001561static const char *functions_for_110 [] = {
1562 builtins_110_abs,
1563 builtins_110_all,
1564 builtins_110_any,
Eric Anholt5e58e542010-05-19 12:19:54 -07001565 builtins_110_asin,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001566 builtins_110_ceil,
1567 builtins_110_clamp,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001568 builtins_110_cos,
1569 builtins_110_cross,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001570 builtins_110_degrees,
1571 builtins_110_dot,
1572 builtins_110_equal,
1573 builtins_110_exp,
1574 builtins_110_exp2,
1575 builtins_110_floor,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001576 builtins_110_fract,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001577 builtins_110_greaterThan,
1578 builtins_110_greaterThanEqual,
1579 builtins_110_inversesqrt,
1580 builtins_110_length,
1581 builtins_110_lessThan,
1582 builtins_110_lessThanEqual,
1583 builtins_110_log,
1584 builtins_110_log2,
1585 builtins_110_max,
1586 builtins_110_min,
1587 builtins_110_mix,
1588 builtins_110_mod,
1589 builtins_110_normalize,
1590 builtins_110_not,
1591 builtins_110_notEqual,
1592 builtins_110_pow,
1593 builtins_110_radians,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001594 builtins_110_sign,
1595 builtins_110_sin,
1596 builtins_110_smoothstep,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001597 builtins_110_sqrt,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001598 builtins_110_step,
1599 builtins_110_tan,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001600};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001601
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001602/* Version 130 builtins */
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001603
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001604static const char *builtins_130_equal = {
1605 "((function equal\n"
1606 " (signature bvec2\n"
1607 " (parameters\n"
1608 " (declare (in) uvec2 arg0)\n"
1609 " (declare (in) uvec2 arg1))\n"
1610 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001611 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1612 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001613 " (return (var_ref temp))))\n"
1614 "\n"
1615 " (signature bvec3\n"
1616 " (parameters\n"
1617 " (declare (in) uvec3 arg0)\n"
1618 " (declare (in) uvec3 arg1))\n"
1619 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001620 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1621 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1622 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001623 " (return (var_ref temp))))\n"
1624 "\n"
1625 " (signature bvec4\n"
1626 " (parameters\n"
1627 " (declare (in) uvec4 arg0)\n"
1628 " (declare (in) uvec4 arg1))\n"
1629 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001630 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1631 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1632 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1633 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool == (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001634 " (return (var_ref temp))))\n"
1635 "))\n"
1636};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001637
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001638static const char *builtins_130_greaterThan = {
1639 "((function greaterThan\n"
1640 " (signature bvec2\n"
1641 " (parameters\n"
1642 " (declare (in) uvec2 arg0)\n"
1643 " (declare (in) uvec2 arg1))\n"
1644 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001645 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1646 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001647 " (return (var_ref temp))))\n"
1648 "\n"
1649 " (signature bvec3\n"
1650 " (parameters\n"
1651 " (declare (in) uvec3 arg0)\n"
1652 " (declare (in) uvec3 arg1))\n"
1653 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001654 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1655 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1656 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001657 " (return (var_ref temp))))\n"
1658 "\n"
1659 " (signature bvec4\n"
1660 " (parameters\n"
1661 " (declare (in) uvec4 arg0)\n"
1662 " (declare (in) uvec4 arg1))\n"
1663 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001664 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1665 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1666 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1667 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool > (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001668 " (return (var_ref temp))))\n"
1669 "))\n"
1670};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001671
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001672static const char *builtins_130_greaterThanEqual = {
1673 "((function greaterThanEqual\n"
1674 " (signature bvec2\n"
1675 " (parameters\n"
1676 " (declare (in) uvec2 arg0)\n"
1677 " (declare (in) uvec2 arg1))\n"
1678 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001679 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1680 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001681 " (return (var_ref temp))))\n"
1682 "\n"
1683 " (signature bvec3\n"
1684 " (parameters\n"
1685 " (declare (in) uvec3 arg0)\n"
1686 " (declare (in) uvec3 arg1))\n"
1687 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001688 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1689 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1690 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001691 " (return (var_ref temp))))\n"
1692 "\n"
1693 " (signature bvec4\n"
1694 " (parameters\n"
1695 " (declare (in) uvec4 arg0)\n"
1696 " (declare (in) uvec4 arg1))\n"
1697 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001698 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1699 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1700 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1701 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool >= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001702 " (return (var_ref temp))))\n"
1703 "))\n"
1704};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001705
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001706static const char *builtins_130_lessThan = {
1707 "((function lessThan\n"
1708 " (signature bvec2\n"
1709 " (parameters\n"
1710 " (declare (in) uvec2 arg0)\n"
1711 " (declare (in) uvec2 arg1))\n"
1712 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001713 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1714 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001715 " (return (var_ref temp))))\n"
1716 "\n"
1717 " (signature bvec3\n"
1718 " (parameters\n"
1719 " (declare (in) uvec3 arg0)\n"
1720 " (declare (in) uvec3 arg1))\n"
1721 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001722 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1723 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1724 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001725 " (return (var_ref temp))))\n"
1726 "\n"
1727 " (signature bvec4\n"
1728 " (parameters\n"
1729 " (declare (in) uvec4 arg0)\n"
1730 " (declare (in) uvec4 arg1))\n"
1731 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001732 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1733 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1734 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1735 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool < (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001736 " (return (var_ref temp))))\n"
1737 "))\n"
1738};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001739
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001740static const char *builtins_130_lessThanEqual = {
1741 "((function lessThanEqual\n"
1742 " (signature bvec2\n"
1743 " (parameters\n"
1744 " (declare (in) uvec2 arg0)\n"
1745 " (declare (in) uvec2 arg1))\n"
1746 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001747 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1748 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001749 " (return (var_ref temp))))\n"
1750 "\n"
1751 " (signature bvec3\n"
1752 " (parameters\n"
1753 " (declare (in) uvec3 arg0)\n"
1754 " (declare (in) uvec3 arg1))\n"
1755 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001756 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1757 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1758 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001759 " (return (var_ref temp))))\n"
1760 "\n"
1761 " (signature bvec4\n"
1762 " (parameters\n"
1763 " (declare (in) uvec4 arg0)\n"
1764 " (declare (in) uvec4 arg1))\n"
1765 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001766 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1767 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1768 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1769 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool <= (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001770 " (return (var_ref temp))))\n"
1771 "))\n"
1772};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001773
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001774static const char *builtins_130_notEqual = {
1775 "((function notEqual\n"
1776 " (signature bvec2\n"
1777 " (parameters\n"
1778 " (declare (in) uvec2 arg0)\n"
1779 " (declare (in) uvec2 arg1))\n"
1780 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001781 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1782 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001783 " (return (var_ref temp))))\n"
1784 "\n"
1785 " (signature bvec3\n"
1786 " (parameters\n"
1787 " (declare (in) uvec3 arg0)\n"
1788 " (declare (in) uvec3 arg1))\n"
1789 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001790 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1791 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1792 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001793 " (return (var_ref temp))))\n"
1794 "\n"
1795 " (signature bvec4\n"
1796 " (parameters\n"
1797 " (declare (in) uvec4 arg0)\n"
1798 " (declare (in) uvec4 arg1))\n"
1799 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001800 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1801 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1802 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1803 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression bool != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001804 " (return (var_ref temp))))\n"
1805 "))\n"
1806};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001807
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001808static const char *builtins_130_sign = {
1809 "((function sign\n"
1810 " (signature int\n"
1811 " (parameters\n"
1812 " (declare (in) int x))\n"
1813 " ((return (expression int / (var_ref x) (expression int abs (var_ref x))))))\n"
1814 "\n"
1815 " (signature ivec2\n"
1816 " (parameters\n"
1817 " (declare (in) ivec2 x))\n"
1818 " ((declare () ivec2 t)\n"
1819 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1820 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1821 " (return (var_ref t))))\n"
1822 "\n"
1823 " (signature ivec3\n"
1824 " (parameters\n"
1825 " (declare (in) ivec3 x))\n"
1826 " ((declare () ivec3 t)\n"
1827 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1828 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1829 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
1830 " (return (var_ref t))))\n"
1831 "\n"
1832 " (signature ivec4\n"
1833 " (parameters\n"
1834 " (declare (in) ivec4 x))\n"
1835 " ((declare () ivec4 t)\n"
1836 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1837 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1838 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
1839 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression int sign (swiz w (var_ref x))))\n"
1840 " (return (var_ref t))))\n"
1841 "))\n"
1842 "\n"
1843};
1844
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001845static const char *functions_for_130 [] = {
1846 builtins_130_equal,
1847 builtins_130_greaterThan,
1848 builtins_130_greaterThanEqual,
1849 builtins_130_lessThan,
1850 builtins_130_lessThanEqual,
1851 builtins_130_notEqual,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001852 builtins_130_sign,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001853};
Eric Anholtc22c4002010-03-26 18:20:30 -07001854
1855void
1856_mesa_glsl_initialize_functions(exec_list *instructions,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001857 struct _mesa_glsl_parse_state *state)
Eric Anholtc22c4002010-03-26 18:20:30 -07001858{
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001859 if (state->language_version >= 110)
1860 read_builtins(state, instructions, functions_for_110,
1861 sizeof(functions_for_110) / sizeof(const char *));
1862
1863 if (state->language_version >= 130)
1864 read_builtins(state, instructions, functions_for_130,
1865 sizeof(functions_for_130) / sizeof(const char *));
1866
Eric Anholtc22c4002010-03-26 18:20:30 -07001867}