blob: 4203502e45bed6532c2d7f16c5d995e60046297c [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
Eric Anholt60fa1a92010-05-19 12:44:23 -0700202static const char *builtins_110_atan = {
203 "((function atan\n"
204 " (signature float\n"
205 " (parameters\n"
206 " (declare (in) float x))\n"
207 " ((return (call asin ((expression float *\n"
208 " (var_ref x)\n"
209 " (expression float rsq\n"
210 " (expression float +\n"
211 " (expression float *\n"
212 " (var_ref x)\n"
213 " (var_ref x))\n"
214 " (constant float (1.0))))))))))\n"
215 "\n"
216 " (signature vec2\n"
217 " (parameters\n"
218 " (declare (in) vec2 y_over_x))\n"
219 " ((return (call asin ((expression vec2 *\n"
220 " (var_ref y_over_x)\n"
221 " (expression vec2 rsq\n"
222 " (expression vec2 +\n"
223 " (expression vec2 *\n"
224 " (var_ref y_over_x)\n"
225 " (var_ref y_over_x))\n"
226 " (constant float (1.0))))))))))\n"
227 "\n"
228 " (signature vec3\n"
229 " (parameters\n"
230 " (declare (in) vec3 y_over_x))\n"
231 " ((return (call asin ((expression vec3 *\n"
232 " (var_ref y_over_x)\n"
233 " (expression vec3 rsq\n"
234 " (expression vec3 +\n"
235 " (expression vec3 *\n"
236 " (var_ref y_over_x)\n"
237 " (var_ref y_over_x))\n"
238 " (constant float (1.0))))))))))\n"
239 "\n"
240 " (signature vec4\n"
241 " (parameters\n"
242 " (declare (in) vec4 y_over_x))\n"
243 " ((return (call asin ((expression vec4 *\n"
244 " (var_ref y_over_x)\n"
245 " (expression vec4 rsq\n"
246 " (expression vec4 +\n"
247 " (expression vec4 *\n"
248 " (var_ref y_over_x)\n"
249 " (var_ref y_over_x))\n"
250 " (constant float (1.0))))))))))\n"
251 "\n"
252 " (signature float\n"
253 " (parameters\n"
254 " (declare (in) float y)\n"
255 " (declare (in) float x))\n"
256 " ((declare () float r)\n"
257 " (if (expression bool >\n"
258 " (expression float abs (var_ref x))\n"
259 " (constant float (.0001)))\n"
260 " ((assign (constant bool (1))\n"
261 " (var_ref r) (call atan ((expression float /\n"
262 " (var_ref y)\n"
263 " (var_ref x)))))\n"
264 " (if (expression bool <\n"
265 " (var_ref x)\n"
266 " (constant float (0.0)))\n"
267 " ((assign (constant bool (1))\n"
268 " (var_ref r)\n"
269 " (expression float +\n"
270 " (var_ref r)\n"
271 " (expression float *\n"
272 " (expression int sign (var_ref y))\n"
273 " (constant float (3.1415926))))))\n"
274 " ()))\n"
275 " ())\n"
276 " (return (var_ref r))))\n"
277 "\n"
278 " (signature vec2\n"
279 " (parameters\n"
280 " (declare (in) vec2 y)\n"
281 " (declare (in) vec2 x))\n"
282 " ((declare () vec2 r)\n"
283 " (if (expression bool >\n"
284 " (expression vec2 abs (var_ref x))\n"
285 " (constant float (.0001)))\n"
286 " ((assign (constant bool (1))\n"
287 " (var_ref r) (call atan ((expression vec2 /\n"
288 " (var_ref y)\n"
289 " (var_ref x)))))\n"
290 " (if (expression bool <\n"
291 " (var_ref x)\n"
292 " (constant float (0.0)))\n"
293 " ((assign (constant bool (1))\n"
294 " (var_ref r)\n"
295 " (expression vec2 +\n"
296 " (var_ref r)\n"
297 " (expression vec2 *\n"
298 " (expression int sign (var_ref y))\n"
299 " (constant float (3.1415926))))))\n"
300 " ()))\n"
301 " ())\n"
302 " (return (var_ref r))))\n"
303 "\n"
304 " (signature vec3\n"
305 " (parameters\n"
306 " (declare (in) vec3 y)\n"
307 " (declare (in) vec3 x))\n"
308 " ((declare () vec3 r)\n"
309 " (if (expression bool >\n"
310 " (expression vec3 abs (var_ref x))\n"
311 " (constant float (.0001)))\n"
312 " ((assign (constant bool (1))\n"
313 " (var_ref r) (call atan ((expression vec3 /\n"
314 " (var_ref y)\n"
315 " (var_ref x)))))\n"
316 " (if (expression bool <\n"
317 " (var_ref x)\n"
318 " (constant float (0.0)))\n"
319 " ((assign (constant bool (1))\n"
320 " (var_ref r)\n"
321 " (expression vec3 +\n"
322 " (var_ref r)\n"
323 " (expression vec3 *\n"
324 " (expression int sign (var_ref y))\n"
325 " (constant float (3.1415926))))))\n"
326 " ()))\n"
327 " ())\n"
328 " (return (var_ref r))))\n"
329 "\n"
330 " (signature vec4\n"
331 " (parameters\n"
332 " (declare (in) vec4 y)\n"
333 " (declare (in) vec4 x))\n"
334 " ((declare () vec4 r)\n"
335 " (if (expression bool >\n"
336 " (expression vec4 abs (var_ref x))\n"
337 " (constant float (.0001)))\n"
338 " ((assign (constant bool (1))\n"
339 " (var_ref r) (call atan ((expression vec4 /\n"
340 " (var_ref y)\n"
341 " (var_ref x)))))\n"
342 " (if (expression bool <\n"
343 " (var_ref x)\n"
344 " (constant float (0.0)))\n"
345 " ((assign (constant bool (1))\n"
346 " (var_ref r)\n"
347 " (expression vec4 +\n"
348 " (var_ref r)\n"
349 " (expression vec4 *\n"
350 " (expression int sign (var_ref y))\n"
351 " (constant float (3.1415926))))))\n"
352 " ()))\n"
353 " ())\n"
354 " (return (var_ref r))))\n"
355 "\n"
356 "))\n"
357};
358
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700359static const char *builtins_110_ceil = {
360 "((function ceil\n"
361 " (signature float\n"
362 " (parameters\n"
363 " (declare (in) float arg0))\n"
364 " ((return (expression float ceil (var_ref arg0)))))\n"
365 "\n"
366 " (signature vec2\n"
367 " (parameters\n"
368 " (declare (in) vec2 arg0))\n"
369 " ((return (expression vec2 ceil (var_ref arg0)))))\n"
370 "\n"
371 " (signature vec3\n"
372 " (parameters\n"
373 " (declare (in) vec3 arg0))\n"
374 " ((return (expression vec3 ceil (var_ref arg0)))))\n"
375 "\n"
376 " (signature vec4\n"
377 " (parameters\n"
378 " (declare (in) vec4 arg0))\n"
379 " ((return (expression vec4 ceil (var_ref arg0)))))\n"
380 "))\n"
381};
Eric Anholt53afc362010-03-27 13:55:04 -0700382
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700383static const char *builtins_110_clamp = {
384 "((function clamp\n"
385 " (signature float\n"
386 " (parameters\n"
387 " (declare (in) float arg0)\n"
388 " (declare (in) float arg1)\n"
389 " (declare (in) float arg2))\n"
390 " ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
391 "\n"
392 " (signature vec2\n"
393 " (parameters\n"
394 " (declare (in) vec2 arg0)\n"
395 " (declare (in) vec2 arg1)\n"
396 " (declare (in) vec2 arg2))\n"
397 " ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
398 "\n"
399 " (signature vec3\n"
400 " (parameters\n"
401 " (declare (in) vec3 arg0)\n"
402 " (declare (in) vec3 arg1)\n"
403 " (declare (in) vec3 arg2))\n"
404 " ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
405 "\n"
406 " (signature vec4\n"
407 " (parameters\n"
408 " (declare (in) vec4 arg0)\n"
409 " (declare (in) vec4 arg1)\n"
410 " (declare (in) vec4 arg2))\n"
411 " ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
412 "))\n"
413};
Eric Anholt53afc362010-03-27 13:55:04 -0700414
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700415static const char *builtins_110_cos = {
416 "((function cos\n"
417 " (signature float\n"
418 " (parameters\n"
419 " (declare (in) float angle))\n"
420 " ((return (expression float cos (var_ref angle)))))\n"
421 "\n"
422 " (signature vec2\n"
423 " (parameters\n"
424 " (declare (in) vec2 angle))\n"
425 " ((return (expression vec2 cos (var_ref angle)))))\n"
426 "\n"
427 " (signature vec3\n"
428 " (parameters\n"
429 " (declare (in) vec3 angle))\n"
430 " ((return (expression vec3 cos (var_ref angle)))))\n"
431 "\n"
432 " (signature vec4\n"
433 " (parameters\n"
434 " (declare (in) vec4 angle))\n"
435 " ((return (expression vec4 cos (var_ref angle)))))\n"
436 "))\n"
437};
438
439static const char *builtins_110_cross = {
440 "((function cross\n"
441 " (signature vec3\n"
442 " (parameters\n"
443 " (declare (in) vec3 arg0)\n"
444 " (declare (in) vec3 arg1))\n"
445 " ((declare () vec3 t)\n"
446 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
447 " (expression float - (expression float * (swiz y (var_ref arg0)) (swiz z (var_ref arg1)))\n"
448 " (expression float * (swiz y (var_ref arg1)) (swiz z (var_ref arg0)))))\n"
449 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
450 " (expression float - (expression float * (swiz z (var_ref arg0)) (swiz x (var_ref arg1)))\n"
451 " (expression float * (swiz z (var_ref arg1)) (swiz x (var_ref arg0)))))\n"
452 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
453 " (expression float - (expression float * (swiz x (var_ref arg0)) (swiz y (var_ref arg1)))\n"
454 " (expression float * (swiz x (var_ref arg1)) (swiz y (var_ref arg0)))))\n"
455 " (return (var_ref t))))\n"
456 "))\n"
457};
458
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700459static const char *builtins_110_degrees = {
460 "((function degrees\n"
461 " (signature float\n"
462 " (parameters\n"
463 " (declare (in) float arg0))\n"
464 " ((return (expression float * (var_ref arg0) (constant float (57.295780))))))\n"
465 "\n"
466 " (signature vec2\n"
467 " (parameters\n"
468 " (declare (in) vec2 arg0))\n"
469 " ((return (expression vec2 * (var_ref arg0) (constant float (57.295780))))))\n"
470 "\n"
471 " (signature vec3\n"
472 " (parameters\n"
473 " (declare (in) vec3 arg0))\n"
474 " ((return (expression vec3 * (var_ref arg0) (constant float (57.295780))))))\n"
475 "\n"
476 " (signature vec4\n"
477 " (parameters\n"
478 " (declare (in) vec4 arg0))\n"
479 " ((return (expression vec4 * (var_ref arg0) (constant float (57.295780))))))\n"
480 "))\n"
481};
Eric Anholt53afc362010-03-27 13:55:04 -0700482
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700483static const char *builtins_110_dot = {
484 "((function dot\n"
485 " (signature float\n"
486 " (parameters\n"
487 " (declare (in) float arg0)\n"
488 " (declare (in) float arg1))\n"
489 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
490 "\n"
491 " (signature float\n"
492 " (parameters\n"
493 " (declare (in) vec2 arg0)\n"
494 " (declare (in) vec2 arg1))\n"
495 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
496 "\n"
497 " (signature float\n"
498 " (parameters\n"
499 " (declare (in) vec3 arg0)\n"
500 " (declare (in) vec3 arg1))\n"
501 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
502 "\n"
503 " (signature float\n"
504 " (parameters\n"
505 " (declare (in) vec4 arg0)\n"
506 " (declare (in) vec4 arg1))\n"
507 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
508 "))\n"
509};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700510
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700511static const char *builtins_110_equal = {
512 "((function equal\n"
513 " (signature bvec2\n"
514 " (parameters\n"
515 " (declare (in) vec2 arg0)\n"
516 " (declare (in) vec2 arg1))\n"
517 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700518 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
519 " (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 -0700520 " (return (var_ref temp))))\n"
521 "\n"
522 " (signature bvec3\n"
523 " (parameters\n"
524 " (declare (in) vec3 arg0)\n"
525 " (declare (in) vec3 arg1))\n"
526 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700527 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
528 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
529 " (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 -0700530 " (return (var_ref temp))))\n"
531 "\n"
532 " (signature bvec4\n"
533 " (parameters\n"
534 " (declare (in) vec4 arg0)\n"
535 " (declare (in) vec4 arg1))\n"
536 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700537 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
538 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
539 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
540 " (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 -0700541 " (return (var_ref temp))))\n"
542 "\n"
543 " (signature bvec2\n"
544 " (parameters\n"
545 " (declare (in) ivec2 arg0)\n"
546 " (declare (in) ivec2 arg1))\n"
547 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700548 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
549 " (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 -0700550 " (return (var_ref temp))))\n"
551 "\n"
552 " (signature bvec3\n"
553 " (parameters\n"
554 " (declare (in) ivec3 arg0)\n"
555 " (declare (in) ivec3 arg1))\n"
556 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700557 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
558 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
559 " (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 -0700560 " (return (var_ref temp))))\n"
561 "\n"
562 " (signature bvec4\n"
563 " (parameters\n"
564 " (declare (in) ivec4 arg0)\n"
565 " (declare (in) ivec4 arg1))\n"
566 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700567 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
568 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
569 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
570 " (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 -0700571 " (return (var_ref temp))))\n"
572 "))\n"
573};
Eric Anholtc22c4002010-03-26 18:20:30 -0700574
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700575static const char *builtins_110_exp = {
576 "((function exp\n"
577 " (signature float\n"
578 " (parameters\n"
579 " (declare (in) float arg0))\n"
580 " ((return (expression float exp (var_ref arg0)))))\n"
581 "\n"
582 " (signature vec2\n"
583 " (parameters\n"
584 " (declare (in) vec2 arg0))\n"
585 " ((return (expression vec2 exp (var_ref arg0)))))\n"
586 "\n"
587 " (signature vec3\n"
588 " (parameters\n"
589 " (declare (in) vec3 arg0))\n"
590 " ((return (expression vec3 exp (var_ref arg0)))))\n"
591 "\n"
592 " (signature vec4\n"
593 " (parameters\n"
594 " (declare (in) vec4 arg0))\n"
595 " ((return (expression vec4 exp (var_ref arg0)))))\n"
596 "))\n"
597};
Eric Anholt76a91e12010-03-27 14:04:43 -0700598
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700599static const char *builtins_110_exp2 = {
600 "((function exp2\n"
601 " (signature float\n"
602 " (parameters\n"
603 " (declare (in) float arg0))\n"
604 " ((return (expression float exp2 (var_ref arg0)))))\n"
605 "\n"
606 " (signature vec2\n"
607 " (parameters\n"
608 " (declare (in) vec2 arg0))\n"
609 " ((return (expression vec2 exp2 (var_ref arg0)))))\n"
610 "\n"
611 " (signature vec3\n"
612 " (parameters\n"
613 " (declare (in) vec3 arg0))\n"
614 " ((return (expression vec3 exp2 (var_ref arg0)))))\n"
615 "\n"
616 " (signature vec4\n"
617 " (parameters\n"
618 " (declare (in) vec4 arg0))\n"
619 " ((return (expression vec4 exp2 (var_ref arg0)))))\n"
620 "))\n"
621};
Eric Anholt76a91e12010-03-27 14:04:43 -0700622
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700623static const char *builtins_110_floor = {
624 "((function floor\n"
625 " (signature float\n"
626 " (parameters\n"
627 " (declare (in) float arg0))\n"
628 " ((return (expression float floor (var_ref arg0)))))\n"
629 "\n"
630 " (signature vec2\n"
631 " (parameters\n"
632 " (declare (in) vec2 arg0))\n"
633 " ((return (expression vec2 floor (var_ref arg0)))))\n"
634 "\n"
635 " (signature vec3\n"
636 " (parameters\n"
637 " (declare (in) vec3 arg0))\n"
638 " ((return (expression vec3 floor (var_ref arg0)))))\n"
639 "\n"
640 " (signature vec4\n"
641 " (parameters\n"
642 " (declare (in) vec4 arg0))\n"
643 " ((return (expression vec4 floor (var_ref arg0)))))\n"
644 "))\n"
645};
Eric Anholt76a91e12010-03-27 14:04:43 -0700646
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700647static const char *builtins_110_fract = {
648 "((function fract\n"
649 " (signature float\n"
650 " (parameters\n"
651 " (declare (in) float x))\n"
652 " ((return (expression float - (var_ref x) (expression float floor (var_ref x))))))\n"
653 "\n"
654 " (signature vec2\n"
655 " (parameters\n"
656 " (declare (in) vec2 x))\n"
657 " ((declare () vec2 t)\n"
658 " (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"
659 " (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"
660 " (return (var_ref t))))\n"
661 "\n"
662 " (signature vec3\n"
663 " (parameters\n"
664 " (declare (in) vec3 x))\n"
665 " ((declare () vec3 t)\n"
666 " (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"
667 " (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"
668 " (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"
669 " (return (var_ref t))))\n"
670 "\n"
671 " (signature vec4\n"
672 " (parameters\n"
673 " (declare (in) vec4 x))\n"
674 " ((declare () vec4 t)\n"
675 " (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"
676 " (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"
677 " (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"
678 " (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"
679 " (return (var_ref t))))\n"
680 "))\n"
681 "\n"
682};
683
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700684static const char *builtins_110_greaterThan = {
685 "((function greaterThan\n"
686 " (signature bvec2\n"
687 " (parameters\n"
688 " (declare (in) vec2 arg0)\n"
689 " (declare (in) vec2 arg1))\n"
690 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700691 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
692 " (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 -0700693 " (return (var_ref temp))))\n"
694 "\n"
695 " (signature bvec3\n"
696 " (parameters\n"
697 " (declare (in) vec3 arg0)\n"
698 " (declare (in) vec3 arg1))\n"
699 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700700 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
701 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
702 " (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 -0700703 " (return (var_ref temp))))\n"
704 "\n"
705 " (signature bvec4\n"
706 " (parameters\n"
707 " (declare (in) vec4 arg0)\n"
708 " (declare (in) vec4 arg1))\n"
709 " ((declare () bvec4 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"
712 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
713 " (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 -0700714 " (return (var_ref temp))))\n"
715 "\n"
716 " (signature bvec2\n"
717 " (parameters\n"
718 " (declare (in) ivec2 arg0)\n"
719 " (declare (in) ivec2 arg1))\n"
720 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700721 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
722 " (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 -0700723 " (return (var_ref temp))))\n"
724 "\n"
725 " (signature bvec3\n"
726 " (parameters\n"
727 " (declare (in) ivec3 arg0)\n"
728 " (declare (in) ivec3 arg1))\n"
729 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700730 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
731 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
732 " (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 -0700733 " (return (var_ref temp))))\n"
734 "\n"
735 " (signature bvec4\n"
736 " (parameters\n"
737 " (declare (in) ivec4 arg0)\n"
738 " (declare (in) ivec4 arg1))\n"
739 " ((declare () bvec4 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"
742 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
743 " (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 -0700744 " (return (var_ref temp))))\n"
745 "))\n"
746};
Eric Anholt76a91e12010-03-27 14:04:43 -0700747
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700748static const char *builtins_110_greaterThanEqual = {
749 "((function greaterThanEqual\n"
750 " (signature bvec2\n"
751 " (parameters\n"
752 " (declare (in) vec2 arg0)\n"
753 " (declare (in) vec2 arg1))\n"
754 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700755 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
756 " (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 -0700757 " (return (var_ref temp))))\n"
758 "\n"
759 " (signature bvec3\n"
760 " (parameters\n"
761 " (declare (in) vec3 arg0)\n"
762 " (declare (in) vec3 arg1))\n"
763 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700764 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
765 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
766 " (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 -0700767 " (return (var_ref temp))))\n"
768 "\n"
769 " (signature bvec4\n"
770 " (parameters\n"
771 " (declare (in) vec4 arg0)\n"
772 " (declare (in) vec4 arg1))\n"
773 " ((declare () bvec4 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"
776 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
777 " (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 -0700778 " (return (var_ref temp))))\n"
779 "\n"
780 " (signature bvec2\n"
781 " (parameters\n"
782 " (declare (in) ivec2 arg0)\n"
783 " (declare (in) ivec2 arg1))\n"
784 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700785 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
786 " (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 -0700787 " (return (var_ref temp))))\n"
788 "\n"
789 " (signature bvec3\n"
790 " (parameters\n"
791 " (declare (in) ivec3 arg0)\n"
792 " (declare (in) ivec3 arg1))\n"
793 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700794 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
795 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
796 " (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 -0700797 " (return (var_ref temp))))\n"
798 "\n"
799 " (signature bvec4\n"
800 " (parameters\n"
801 " (declare (in) ivec4 arg0)\n"
802 " (declare (in) ivec4 arg1))\n"
803 " ((declare () bvec4 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"
806 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
807 " (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 -0700808 " (return (var_ref temp))))\n"
809 "))\n"
810};
Eric Anholt76a91e12010-03-27 14:04:43 -0700811
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700812static const char *builtins_110_inversesqrt = {
813 "((function inversesqrt\n"
814 " (signature float\n"
815 " (parameters\n"
816 " (declare (in) float arg0))\n"
817 " ((return (expression float rsq (var_ref arg0)))))\n"
818 "\n"
819 " (signature vec2\n"
820 " (parameters\n"
821 " (declare (in) vec2 arg0))\n"
822 " ((return (expression vec2 rsq (var_ref arg0)))))\n"
823 "\n"
824 " (signature vec3\n"
825 " (parameters\n"
826 " (declare (in) vec3 arg0))\n"
827 " ((return (expression vec3 rsq (var_ref arg0)))))\n"
828 "\n"
829 " (signature vec4\n"
830 " (parameters\n"
831 " (declare (in) vec4 arg0))\n"
832 " ((return (expression vec4 rsq (var_ref arg0)))))\n"
833 "))\n"
834};
Eric Anholt76a91e12010-03-27 14:04:43 -0700835
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700836static const char *builtins_110_length = {
837 "((function length\n"
838 " (signature float\n"
839 " (parameters\n"
840 " (declare (in) float arg0))\n"
841 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
842 "\n"
843 " (signature float\n"
844 " (parameters\n"
845 " (declare (in) vec2 arg0))\n"
846 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
847 "\n"
848 " (signature float\n"
849 " (parameters\n"
850 " (declare (in) vec3 arg0))\n"
851 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
852 "\n"
853 " (signature float\n"
854 " (parameters\n"
855 " (declare (in) vec4 arg0))\n"
856 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
857 "))\n"
858};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700859
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700860static const char *builtins_110_lessThan = {
861 "((function lessThan\n"
862 " (signature bvec2\n"
863 " (parameters\n"
864 " (declare (in) vec2 arg0)\n"
865 " (declare (in) vec2 arg1))\n"
866 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700867 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
868 " (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 -0700869 " (return (var_ref temp))))\n"
870 "\n"
871 " (signature bvec3\n"
872 " (parameters\n"
873 " (declare (in) vec3 arg0)\n"
874 " (declare (in) vec3 arg1))\n"
875 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700876 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
877 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
878 " (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 -0700879 " (return (var_ref temp))))\n"
880 "\n"
881 " (signature bvec4\n"
882 " (parameters\n"
883 " (declare (in) vec4 arg0)\n"
884 " (declare (in) vec4 arg1))\n"
885 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700886 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
887 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
888 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
889 " (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 -0700890 " (return (var_ref temp))))\n"
891 "\n"
892 " (signature bvec2\n"
893 " (parameters\n"
894 " (declare (in) ivec2 arg0)\n"
895 " (declare (in) ivec2 arg1))\n"
896 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700897 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
898 " (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 -0700899 " (return (var_ref temp))))\n"
900 "\n"
901 " (signature bvec3\n"
902 " (parameters\n"
903 " (declare (in) ivec3 arg0)\n"
904 " (declare (in) ivec3 arg1))\n"
905 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700906 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
907 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
908 " (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 -0700909 " (return (var_ref temp))))\n"
910 "\n"
911 " (signature bvec4\n"
912 " (parameters\n"
913 " (declare (in) ivec4 arg0)\n"
914 " (declare (in) ivec4 arg1))\n"
915 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700916 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
917 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
918 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
919 " (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 -0700920 " (return (var_ref temp))))\n"
921 "))\n"
922};
Eric Anholt76a91e12010-03-27 14:04:43 -0700923
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700924static const char *builtins_110_lessThanEqual = {
925 "((function lessThanEqual\n"
926 " (signature bvec2\n"
927 " (parameters\n"
928 " (declare (in) vec2 arg0)\n"
929 " (declare (in) vec2 arg1))\n"
930 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700931 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
932 " (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 -0700933 " (return (var_ref temp))))\n"
934 "\n"
935 " (signature bvec3\n"
936 " (parameters\n"
937 " (declare (in) vec3 arg0)\n"
938 " (declare (in) vec3 arg1))\n"
939 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700940 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
941 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
942 " (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 -0700943 " (return (var_ref temp))))\n"
944 "\n"
945 " (signature bvec4\n"
946 " (parameters\n"
947 " (declare (in) vec4 arg0)\n"
948 " (declare (in) vec4 arg1))\n"
949 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700950 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
951 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
952 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
953 " (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 -0700954 " (return (var_ref temp))))\n"
955 "\n"
956 " (signature bvec2\n"
957 " (parameters\n"
958 " (declare (in) ivec2 arg0)\n"
959 " (declare (in) ivec2 arg1))\n"
960 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700961 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
962 " (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 -0700963 " (return (var_ref temp))))\n"
964 "\n"
965 " (signature bvec3\n"
966 " (parameters\n"
967 " (declare (in) ivec3 arg0)\n"
968 " (declare (in) ivec3 arg1))\n"
969 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700970 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
971 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
972 " (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 -0700973 " (return (var_ref temp))))\n"
974 "\n"
975 " (signature bvec4\n"
976 " (parameters\n"
977 " (declare (in) ivec4 arg0)\n"
978 " (declare (in) ivec4 arg1))\n"
979 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700980 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
981 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
982 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
983 " (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 -0700984 " (return (var_ref temp))))\n"
985 "))\n"
986};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700987
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700988static const char *builtins_110_log = {
989 "((function log\n"
990 " (signature float\n"
991 " (parameters\n"
992 " (declare (in) float arg0))\n"
993 " ((return (expression float log (var_ref arg0)))))\n"
994 "\n"
995 " (signature vec2\n"
996 " (parameters\n"
997 " (declare (in) vec2 arg0))\n"
998 " ((return (expression vec2 log (var_ref arg0)))))\n"
999 "\n"
1000 " (signature vec3\n"
1001 " (parameters\n"
1002 " (declare (in) vec3 arg0))\n"
1003 " ((return (expression vec3 log (var_ref arg0)))))\n"
1004 "\n"
1005 " (signature vec4\n"
1006 " (parameters\n"
1007 " (declare (in) vec4 arg0))\n"
1008 " ((return (expression vec4 log (var_ref arg0)))))\n"
1009 "))\n"
1010};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001011
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001012static const char *builtins_110_log2 = {
1013 "((function log2\n"
1014 " (signature float\n"
1015 " (parameters\n"
1016 " (declare (in) float arg0))\n"
1017 " ((return (expression float log2 (var_ref arg0)))))\n"
1018 "\n"
1019 " (signature vec2\n"
1020 " (parameters\n"
1021 " (declare (in) vec2 arg0))\n"
1022 " ((return (expression vec2 log2 (var_ref arg0)))))\n"
1023 "\n"
1024 " (signature vec3\n"
1025 " (parameters\n"
1026 " (declare (in) vec3 arg0))\n"
1027 " ((return (expression vec3 log2 (var_ref arg0)))))\n"
1028 "\n"
1029 " (signature vec4\n"
1030 " (parameters\n"
1031 " (declare (in) vec4 arg0))\n"
1032 " ((return (expression vec4 log2 (var_ref arg0)))))\n"
1033 "))\n"
1034};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001035
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001036static const char *builtins_110_max = {
1037 "((function max\n"
1038 " (signature float\n"
1039 " (parameters\n"
1040 " (declare (in) float arg0)\n"
1041 " (declare (in) float arg1))\n"
1042 " ((return (expression float max (var_ref arg0) (var_ref arg1)))))\n"
1043 "\n"
1044 " (signature vec2\n"
1045 " (parameters\n"
1046 " (declare (in) vec2 arg0)\n"
1047 " (declare (in) vec2 arg1))\n"
1048 " ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))\n"
1049 "\n"
1050 " (signature vec3\n"
1051 " (parameters\n"
1052 " (declare (in) vec3 arg0)\n"
1053 " (declare (in) vec3 arg1))\n"
1054 " ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))\n"
1055 "\n"
1056 " (signature vec4\n"
1057 " (parameters\n"
1058 " (declare (in) vec4 arg0)\n"
1059 " (declare (in) vec4 arg1))\n"
1060 " ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))\n"
1061 "))\n"
1062};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001063
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001064static const char *builtins_110_min = {
1065 "((function min\n"
1066 " (signature float\n"
1067 " (parameters\n"
1068 " (declare (in) float arg0)\n"
1069 " (declare (in) float arg1))\n"
1070 " ((return (expression float min (var_ref arg0) (var_ref arg1)))))\n"
1071 "\n"
1072 " (signature vec2\n"
1073 " (parameters\n"
1074 " (declare (in) vec2 arg0)\n"
1075 " (declare (in) vec2 arg1))\n"
1076 " ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))\n"
1077 "\n"
1078 " (signature vec3\n"
1079 " (parameters\n"
1080 " (declare (in) vec3 arg0)\n"
1081 " (declare (in) vec3 arg1))\n"
1082 " ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))\n"
1083 "\n"
1084 " (signature vec4\n"
1085 " (parameters\n"
1086 " (declare (in) vec4 arg0)\n"
1087 " (declare (in) vec4 arg1))\n"
1088 " ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))\n"
1089 "))\n"
1090};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001091
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001092static const char *builtins_110_mix = {
1093 "((function mix\n"
1094 " (signature float\n"
1095 " (parameters\n"
1096 " (declare (in) float arg0)\n"
1097 " (declare (in) float arg1)\n"
1098 " (declare (in) float arg2))\n"
1099 " ((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"
1100 "\n"
1101 " (signature vec2\n"
1102 " (parameters\n"
1103 " (declare (in) vec2 arg0)\n"
1104 " (declare (in) vec2 arg1)\n"
1105 " (declare (in) vec2 arg2))\n"
1106 " ((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"
1107 "\n"
1108 " (signature vec3\n"
1109 " (parameters\n"
1110 " (declare (in) vec3 arg0)\n"
1111 " (declare (in) vec3 arg1)\n"
1112 " (declare (in) vec3 arg2))\n"
1113 " ((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"
1114 "\n"
1115 " (signature vec4\n"
1116 " (parameters\n"
1117 " (declare (in) vec4 arg0)\n"
1118 " (declare (in) vec4 arg1)\n"
1119 " (declare (in) vec4 arg2))\n"
1120 " ((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"
Eric Anholtf03acfc2010-05-19 13:05:01 -07001121 "\n"
1122 " (signature vec2\n"
1123 " (parameters\n"
1124 " (declare (in) vec2 arg0)\n"
1125 " (declare (in) vec2 arg1)\n"
1126 " (declare (in) float arg2))\n"
1127 " ((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"
1128 "\n"
1129 " (signature vec3\n"
1130 " (parameters\n"
1131 " (declare (in) vec3 arg0)\n"
1132 " (declare (in) vec3 arg1)\n"
1133 " (declare (in) float arg2))\n"
1134 " ((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"
1135 "\n"
1136 " (signature vec4\n"
1137 " (parameters\n"
1138 " (declare (in) vec4 arg0)\n"
1139 " (declare (in) vec4 arg1)\n"
1140 " (declare (in) float arg2))\n"
1141 " ((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"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001142 "))\n"
1143};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001144
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001145static const char *builtins_110_mod = {
1146 "((function mod\n"
1147 " (signature float\n"
1148 " (parameters\n"
1149 " (declare (in) float arg0)\n"
1150 " (declare (in) float arg1))\n"
1151 " ((return (expression float % (var_ref arg0) (var_ref arg1)))))\n"
1152 "\n"
1153 " (signature vec2\n"
1154 " (parameters\n"
1155 " (declare (in) vec2 arg0)\n"
1156 " (declare (in) vec2 arg1))\n"
1157 " ((return (expression vec2 % (var_ref arg0) (var_ref arg1)))))\n"
1158 "\n"
1159 " (signature vec3\n"
1160 " (parameters\n"
1161 " (declare (in) vec3 arg0)\n"
1162 " (declare (in) vec3 arg1))\n"
1163 " ((return (expression vec3 % (var_ref arg0) (var_ref arg1)))))\n"
1164 "\n"
1165 " (signature vec4\n"
1166 " (parameters\n"
1167 " (declare (in) vec4 arg0)\n"
1168 " (declare (in) vec4 arg1))\n"
1169 " ((return (expression vec4 % (var_ref arg0) (var_ref arg1)))))\n"
1170 "))\n"
1171};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001172
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001173static const char *builtins_110_normalize = {
1174 "((function normalize\n"
1175 " (signature float\n"
1176 " (parameters\n"
1177 " (declare (in) float arg0))\n"
1178 " ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1179 "\n"
1180 " (signature vec2\n"
1181 " (parameters\n"
1182 " (declare (in) vec2 arg0))\n"
1183 " ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1184 "\n"
1185 " (signature vec3\n"
1186 " (parameters\n"
1187 " (declare (in) vec3 arg0))\n"
1188 " ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1189 "\n"
1190 " (signature vec4\n"
1191 " (parameters\n"
1192 " (declare (in) vec4 arg0))\n"
1193 " ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1194 "))\n"
1195};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001196
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001197static const char *builtins_110_not = {
1198 "((function not\n"
1199 " (signature bvec2\n"
1200 " (parameters\n"
1201 " (declare (in) bvec2 arg0))\n"
1202 " ((return (expression bvec2 ! (var_ref arg0)))))\n"
1203 "\n"
1204 " (signature bvec3\n"
1205 " (parameters\n"
1206 " (declare (in) bvec3 arg0))\n"
1207 " ((return (expression bvec3 ! (var_ref arg0)))))\n"
1208 "\n"
1209 " (signature bvec4\n"
1210 " (parameters\n"
1211 " (declare (in) bvec4 arg0))\n"
1212 " ((return (expression bvec4 ! (var_ref arg0)))))\n"
1213 "))\n"
1214};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001215
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001216static const char *builtins_110_notEqual = {
1217 "((function notEqual\n"
1218 " (signature bvec2\n"
1219 " (parameters\n"
1220 " (declare (in) vec2 arg0)\n"
1221 " (declare (in) vec2 arg1))\n"
1222 " ((declare () bvec2 temp)\n"
1223 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1224 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1225 " (return (var_ref temp))))\n"
1226 "\n"
1227 " (signature bvec3\n"
1228 " (parameters\n"
1229 " (declare (in) vec3 arg0)\n"
1230 " (declare (in) vec3 arg1))\n"
1231 " ((declare () bvec3 temp)\n"
1232 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1233 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1234 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1235 " (return (var_ref temp))))\n"
1236 "\n"
1237 " (signature bvec4\n"
1238 " (parameters\n"
1239 " (declare (in) vec4 arg0)\n"
1240 " (declare (in) vec4 arg1))\n"
1241 " ((declare () bvec4 temp)\n"
1242 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1243 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1244 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1245 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression float != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
1246 " (return (var_ref temp))))\n"
1247 "\n"
1248 " (signature bvec2\n"
1249 " (parameters\n"
1250 " (declare (in) ivec2 arg0)\n"
1251 " (declare (in) ivec2 arg1))\n"
1252 " ((declare () bvec2 temp)\n"
1253 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1254 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1255 " (return (var_ref temp))))\n"
1256 "\n"
1257 " (signature bvec3\n"
1258 " (parameters\n"
1259 " (declare (in) ivec3 arg0)\n"
1260 " (declare (in) ivec3 arg1))\n"
1261 " ((declare () bvec3 temp)\n"
1262 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1263 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1264 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1265 " (return (var_ref temp))))\n"
1266 "\n"
1267 " (signature bvec4\n"
1268 " (parameters\n"
1269 " (declare (in) ivec4 arg0)\n"
1270 " (declare (in) ivec4 arg1))\n"
1271 " ((declare () bvec4 temp)\n"
1272 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1273 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1274 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1275 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression int != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
1276 " (return (var_ref temp))))\n"
1277 "))\n"
1278};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001279
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001280static const char *builtins_110_pow = {
1281 "((function pow\n"
1282 " (signature float\n"
1283 " (parameters\n"
1284 " (declare (in) float arg0)\n"
1285 " (declare (in) float arg1))\n"
1286 " ((return (expression float pow (var_ref arg0) (var_ref arg1)))))\n"
1287 "\n"
1288 " (signature vec2\n"
1289 " (parameters\n"
1290 " (declare (in) vec2 arg0)\n"
1291 " (declare (in) vec2 arg1))\n"
1292 " ((return (expression vec2 pow (var_ref arg0) (var_ref arg1)))))\n"
1293 "\n"
1294 " (signature vec3\n"
1295 " (parameters\n"
1296 " (declare (in) vec3 arg0)\n"
1297 " (declare (in) vec3 arg1))\n"
1298 " ((return (expression vec3 pow (var_ref arg0) (var_ref arg1)))))\n"
1299 "\n"
1300 " (signature vec4\n"
1301 " (parameters\n"
1302 " (declare (in) vec4 arg0)\n"
1303 " (declare (in) vec4 arg1))\n"
1304 " ((return (expression vec4 pow (var_ref arg0) (var_ref arg1)))))\n"
1305 "))\n"
1306};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001307
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001308static const char *builtins_110_radians = {
1309 "((function radians\n"
1310 " (signature float\n"
1311 " (parameters\n"
1312 " (declare (in) float arg0))\n"
1313 " ((return (expression float * (var_ref arg0) (constant float (0.017453))))))\n"
1314 "\n"
1315 " (signature vec2\n"
1316 " (parameters\n"
1317 " (declare (in) vec2 arg0))\n"
1318 " ((return (expression vec2 * (var_ref arg0) (constant float (0.017453))))))\n"
1319 "\n"
1320 " (signature vec3\n"
1321 " (parameters\n"
1322 " (declare (in) vec3 arg0))\n"
1323 " ((return (expression vec3 * (var_ref arg0) (constant float (0.017453))))))\n"
1324 "\n"
1325 " (signature vec4\n"
1326 " (parameters\n"
1327 " (declare (in) vec4 arg0))\n"
1328 " ((return (expression vec4 * (var_ref arg0) (constant float (0.017453))))))\n"
1329 "))\n"
1330};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001331
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001332static const char *builtins_110_sign = {
1333 "((function sign\n"
1334 " (signature float\n"
1335 " (parameters\n"
1336 " (declare (in) float x))\n"
1337 " ((return (expression float sign (var_ref x)))))\n"
1338 "\n"
1339 " (signature vec2\n"
1340 " (parameters\n"
1341 " (declare (in) vec2 x))\n"
1342 " ((declare () vec2 t)\n"
1343 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1344 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1345 " (return (var_ref t))))\n"
1346 "\n"
1347 " (signature vec3\n"
1348 " (parameters\n"
1349 " (declare (in) vec3 x))\n"
1350 " ((declare () vec3 t)\n"
1351 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1352 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1353 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1354 " (return (var_ref t))))\n"
1355 "\n"
1356 " (signature vec4\n"
1357 " (parameters\n"
1358 " (declare (in) vec4 x))\n"
1359 " ((declare () vec4 t)\n"
1360 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1361 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1362 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1363 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float sign (swiz w (var_ref x))))\n"
1364 " (return (var_ref t))))\n"
1365 "))\n"
1366 "\n"
1367};
1368
1369static const char *builtins_110_sin = {
1370 "((function sin\n"
1371 " (signature float\n"
1372 " (parameters\n"
1373 " (declare (in) float angle))\n"
1374 " ((return (expression float sin (var_ref angle)))))\n"
1375 "\n"
1376 " (signature vec2\n"
1377 " (parameters\n"
1378 " (declare (in) vec2 angle))\n"
1379 " ((return (expression vec2 sin (var_ref angle)))))\n"
1380 "\n"
1381 " (signature vec3\n"
1382 " (parameters\n"
1383 " (declare (in) vec3 angle))\n"
1384 " ((return (expression vec3 sin (var_ref angle)))))\n"
1385 "\n"
1386 " (signature vec4\n"
1387 " (parameters\n"
1388 " (declare (in) vec4 angle))\n"
1389 " ((return (expression vec4 sin (var_ref angle)))))\n"
1390 "))\n"
1391};
1392
1393static const char *builtins_110_smoothstep = {
1394 "((function smoothstep\n"
1395 " (signature float\n"
1396 " (parameters\n"
1397 " (declare (in) float edge0)\n"
1398 " (declare (in) float edge1)\n"
1399 " (declare (in) float x))\n"
1400 " ((declare () float t)\n"
1401 "\n"
1402 " (assign (constant bool (1)) (var_ref t)\n"
1403 " (expression float max\n"
1404 " (expression float min\n"
1405 " (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1406 " (constant float (1.0)))\n"
1407 " (constant float (0.0))))\n"
1408 " (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"
1409 "\n"
1410 " (signature vec2\n"
1411 " (parameters\n"
1412 " (declare (in) float edge0)\n"
1413 " (declare (in) float edge1)\n"
1414 " (declare (in) vec2 x))\n"
1415 " ((declare () vec2 t)\n"
1416 " (declare () vec2 retval)\n"
1417 "\n"
1418 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1419 " (expression float max\n"
1420 " (expression float min\n"
1421 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1422 " (constant float (1.0)))\n"
1423 " (constant float (0.0))))\n"
1424 " (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"
1425 "\n"
1426 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1427 " (expression float max\n"
1428 " (expression float min\n"
1429 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1430 " (constant float (1.0)))\n"
1431 " (constant float (0.0))))\n"
1432 " (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"
1433 " (return (var_ref retval))\n"
1434 " ))\n"
1435 "\n"
1436 " (signature vec3\n"
1437 " (parameters\n"
1438 " (declare (in) float edge0)\n"
1439 " (declare (in) float edge1)\n"
1440 " (declare (in) vec3 x))\n"
1441 " ((declare () vec3 t)\n"
1442 " (declare () vec3 retval)\n"
1443 "\n"
1444 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1445 " (expression float max\n"
1446 " (expression float min\n"
1447 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1448 " (constant float (1.0)))\n"
1449 " (constant float (0.0))))\n"
1450 " (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"
1451 "\n"
1452 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1453 " (expression float max\n"
1454 " (expression float min\n"
1455 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1456 " (constant float (1.0)))\n"
1457 " (constant float (0.0))))\n"
1458 " (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"
1459 "\n"
1460 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1461 " (expression float max\n"
1462 " (expression float min\n"
1463 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1464 " (constant float (1.0)))\n"
1465 " (constant float (0.0))))\n"
1466 " (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"
1467 " (return (var_ref retval))\n"
1468 " ))\n"
1469 "\n"
1470 "\n"
1471 " (signature vec4\n"
1472 " (parameters\n"
1473 " (declare (in) float edge0)\n"
1474 " (declare (in) float edge1)\n"
1475 " (declare (in) vec4 x))\n"
1476 " ((declare () vec4 t)\n"
1477 " (declare () vec4 retval)\n"
1478 "\n"
1479 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1480 " (expression float max\n"
1481 " (expression float min\n"
1482 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1483 " (constant float (1.0)))\n"
1484 " (constant float (0.0))))\n"
1485 " (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"
1486 "\n"
1487 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1488 " (expression float max\n"
1489 " (expression float min\n"
1490 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1491 " (constant float (1.0)))\n"
1492 " (constant float (0.0))))\n"
1493 " (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"
1494 "\n"
1495 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1496 " (expression float max\n"
1497 " (expression float min\n"
1498 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1499 " (constant float (1.0)))\n"
1500 " (constant float (0.0))))\n"
1501 " (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"
1502 "\n"
1503 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1504 " (expression float max\n"
1505 " (expression float min\n"
1506 " (expression float / (expression float - (swiz w (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1507 " (constant float (1.0)))\n"
1508 " (constant float (0.0))))\n"
1509 " (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"
1510 " (return (var_ref retval))\n"
1511 " ))\n"
1512 "\n"
1513 " (signature vec2\n"
1514 " (parameters\n"
1515 " (declare (in) vec2 edge0)\n"
1516 " (declare (in) vec2 edge1)\n"
1517 " (declare (in) vec2 x))\n"
1518 " ((declare () vec2 t)\n"
1519 " (declare () vec2 retval)\n"
1520 "\n"
1521 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1522 " (expression float max\n"
1523 " (expression float min\n"
1524 " (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"
1525 " (constant float (1.0)))\n"
1526 " (constant float (0.0))))\n"
1527 " (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"
1528 "\n"
1529 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1530 " (expression float max\n"
1531 " (expression float min\n"
1532 " (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"
1533 " (constant float (1.0)))\n"
1534 " (constant float (0.0))))\n"
1535 " (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"
1536 " (return (var_ref retval))\n"
1537 " ))\n"
1538 "\n"
1539 " (signature vec3\n"
1540 " (parameters\n"
1541 " (declare (in) vec3 edge0)\n"
1542 " (declare (in) vec3 edge1)\n"
1543 " (declare (in) vec3 x))\n"
1544 " ((declare () vec3 t)\n"
1545 " (declare () vec3 retval)\n"
1546 "\n"
1547 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1548 " (expression float max\n"
1549 " (expression float min\n"
1550 " (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"
1551 " (constant float (1.0)))\n"
1552 " (constant float (0.0))))\n"
1553 " (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"
1554 "\n"
1555 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1556 " (expression float max\n"
1557 " (expression float min\n"
1558 " (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"
1559 " (constant float (1.0)))\n"
1560 " (constant float (0.0))))\n"
1561 " (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"
1562 "\n"
1563 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1564 " (expression float max\n"
1565 " (expression float min\n"
1566 " (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"
1567 " (constant float (1.0)))\n"
1568 " (constant float (0.0))))\n"
1569 " (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"
1570 " (return (var_ref retval))\n"
1571 " ))\n"
1572 "\n"
1573 "\n"
1574 " (signature vec4\n"
1575 " (parameters\n"
1576 " (declare (in) vec4 edge0)\n"
1577 " (declare (in) vec4 edge1)\n"
1578 " (declare (in) vec4 x))\n"
1579 " ((declare () vec4 t)\n"
1580 " (declare () vec4 retval)\n"
1581 "\n"
1582 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1583 " (expression float max\n"
1584 " (expression float min\n"
1585 " (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"
1586 " (constant float (1.0)))\n"
1587 " (constant float (0.0))))\n"
1588 " (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"
1589 "\n"
1590 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1591 " (expression float max\n"
1592 " (expression float min\n"
1593 " (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"
1594 " (constant float (1.0)))\n"
1595 " (constant float (0.0))))\n"
1596 " (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"
1597 "\n"
1598 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1599 " (expression float max\n"
1600 " (expression float min\n"
1601 " (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"
1602 " (constant float (1.0)))\n"
1603 " (constant float (0.0))))\n"
1604 " (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"
1605 "\n"
1606 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1607 " (expression float max\n"
1608 " (expression float min\n"
1609 " (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"
1610 " (constant float (1.0)))\n"
1611 " (constant float (0.0))))\n"
1612 " (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"
1613 " (return (var_ref retval))\n"
1614 " ))\n"
1615 "\n"
1616 "))\n"
1617 "\n"
1618};
1619
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001620static const char *builtins_110_sqrt = {
1621 "((function sqrt\n"
1622 " (signature float\n"
1623 " (parameters\n"
1624 " (declare (in) float arg0))\n"
1625 " ((return (expression float sqrt (var_ref arg0)))))\n"
1626 "\n"
1627 " (signature vec2\n"
1628 " (parameters\n"
1629 " (declare (in) vec2 arg0))\n"
1630 " ((return (expression vec2 sqrt (var_ref arg0)))))\n"
1631 "\n"
1632 " (signature vec3\n"
1633 " (parameters\n"
1634 " (declare (in) vec3 arg0))\n"
1635 " ((return (expression vec3 sqrt (var_ref arg0)))))\n"
1636 "\n"
1637 " (signature vec4\n"
1638 " (parameters\n"
1639 " (declare (in) vec4 arg0))\n"
1640 " ((return (expression vec4 sqrt (var_ref arg0)))))\n"
1641 "))\n"
1642};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001643
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001644static const char *builtins_110_step = {
1645 "((function step\n"
1646 " (signature float\n"
1647 " (parameters\n"
1648 " (declare (in) float edge)\n"
1649 " (declare (in) float x))\n"
1650 " ((return (expression float b2f (expression bool < (var_ref x) (var_ref edge))))))\n"
1651 "\n"
1652 " (signature vec2\n"
1653 " (parameters\n"
1654 " (declare (in) float edge)\n"
1655 " (declare (in) vec2 x))\n"
1656 " ((declare () vec2 t)\n"
1657 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1658 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1659 " (return (var_ref t))))\n"
1660 "\n"
1661 " (signature vec3\n"
1662 " (parameters\n"
1663 " (declare (in) float edge)\n"
1664 " (declare (in) vec3 x))\n"
1665 " ((declare () vec3 t)\n"
1666 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1667 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1668 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1669 " (return (var_ref t))))\n"
1670 "\n"
1671 " (signature vec4\n"
1672 " (parameters\n"
1673 " (declare (in) float edge)\n"
1674 " (declare (in) vec4 x))\n"
1675 " ((declare () vec4 t)\n"
1676 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1677 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1678 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1679 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(var_ref edge))))\n"
1680 " (return (var_ref t))))\n"
1681 "\n"
1682 " (signature vec2\n"
1683 " (parameters\n"
1684 " (declare (in) vec2 edge)\n"
1685 " (declare (in) vec2 x))\n"
1686 " ((declare () vec2 t)\n"
1687 " (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"
1688 " (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"
1689 " (return (var_ref t))))\n"
1690 "\n"
1691 " (signature vec3\n"
1692 " (parameters\n"
1693 " (declare (in) vec3 edge)\n"
1694 " (declare (in) vec3 x))\n"
1695 " ((declare () vec3 t)\n"
1696 " (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"
1697 " (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"
1698 " (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"
1699 " (return (var_ref t))))\n"
1700 "\n"
1701 " (signature vec4\n"
1702 " (parameters\n"
1703 " (declare (in) vec4 edge)\n"
1704 " (declare (in) vec4 x))\n"
1705 " ((declare () vec4 t)\n"
1706 " (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"
1707 " (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"
1708 " (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"
1709 " (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"
1710 " (return (var_ref t))))\n"
1711 "))\n"
1712 "\n"
1713};
1714
1715static const char *builtins_110_tan = {
1716 "((function tan\n"
1717 " (signature float\n"
1718 " (parameters\n"
1719 " (declare (in) float angle))\n"
1720 " ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle))))))\n"
1721 "\n"
1722 " (signature vec2\n"
1723 " (parameters\n"
1724 " (declare (in) vec2 angle))\n"
1725 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec2 cos (var_ref angle))))))\n"
1726 "\n"
1727 " (signature vec3\n"
1728 " (parameters\n"
1729 " (declare (in) vec3 angle))\n"
1730 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec3 cos (var_ref angle))))))\n"
1731 "\n"
1732 " (signature vec4\n"
1733 " (parameters\n"
1734 " (declare (in) vec4 angle))\n"
1735 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec4 cos (var_ref angle))))))\n"
1736 "))\n"
1737};
1738
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001739static const char *functions_for_110 [] = {
1740 builtins_110_abs,
1741 builtins_110_all,
1742 builtins_110_any,
Eric Anholt5e58e542010-05-19 12:19:54 -07001743 builtins_110_asin,
Eric Anholt60fa1a92010-05-19 12:44:23 -07001744 builtins_110_atan,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001745 builtins_110_ceil,
1746 builtins_110_clamp,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001747 builtins_110_cos,
1748 builtins_110_cross,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001749 builtins_110_degrees,
1750 builtins_110_dot,
1751 builtins_110_equal,
1752 builtins_110_exp,
1753 builtins_110_exp2,
1754 builtins_110_floor,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001755 builtins_110_fract,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001756 builtins_110_greaterThan,
1757 builtins_110_greaterThanEqual,
1758 builtins_110_inversesqrt,
1759 builtins_110_length,
1760 builtins_110_lessThan,
1761 builtins_110_lessThanEqual,
1762 builtins_110_log,
1763 builtins_110_log2,
1764 builtins_110_max,
1765 builtins_110_min,
1766 builtins_110_mix,
1767 builtins_110_mod,
1768 builtins_110_normalize,
1769 builtins_110_not,
1770 builtins_110_notEqual,
1771 builtins_110_pow,
1772 builtins_110_radians,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001773 builtins_110_sign,
1774 builtins_110_sin,
1775 builtins_110_smoothstep,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001776 builtins_110_sqrt,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001777 builtins_110_step,
1778 builtins_110_tan,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001779};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001780
Eric Anholtda46e5f2010-05-19 13:57:01 -07001781/* Version 110_vs builtins */
1782
1783static const char *builtins_110_vs_ftransform = {
1784 "((function ftransform\n"
1785 " (signature vec4\n"
1786 " (parameters)\n"
1787 " ((return (expression vec4 *\n"
1788 " (var_ref gl_ModelViewProjectionMatrix)\n"
1789 " (var_ref gl_Vertex)))))\n"
1790 "))\n"
1791};
1792
1793static const char *functions_for_110_vs [] = {
1794 builtins_110_vs_ftransform,
1795};
1796
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001797/* Version 130 builtins */
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001798
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001799static const char *builtins_130_equal = {
1800 "((function equal\n"
1801 " (signature bvec2\n"
1802 " (parameters\n"
1803 " (declare (in) uvec2 arg0)\n"
1804 " (declare (in) uvec2 arg1))\n"
1805 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001806 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1807 " (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 -07001808 " (return (var_ref temp))))\n"
1809 "\n"
1810 " (signature bvec3\n"
1811 " (parameters\n"
1812 " (declare (in) uvec3 arg0)\n"
1813 " (declare (in) uvec3 arg1))\n"
1814 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001815 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1816 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1817 " (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 -07001818 " (return (var_ref temp))))\n"
1819 "\n"
1820 " (signature bvec4\n"
1821 " (parameters\n"
1822 " (declare (in) uvec4 arg0)\n"
1823 " (declare (in) uvec4 arg1))\n"
1824 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001825 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1826 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1827 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1828 " (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 -07001829 " (return (var_ref temp))))\n"
1830 "))\n"
1831};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001832
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001833static const char *builtins_130_greaterThan = {
1834 "((function greaterThan\n"
1835 " (signature bvec2\n"
1836 " (parameters\n"
1837 " (declare (in) uvec2 arg0)\n"
1838 " (declare (in) uvec2 arg1))\n"
1839 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001840 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1841 " (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 -07001842 " (return (var_ref temp))))\n"
1843 "\n"
1844 " (signature bvec3\n"
1845 " (parameters\n"
1846 " (declare (in) uvec3 arg0)\n"
1847 " (declare (in) uvec3 arg1))\n"
1848 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001849 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1850 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1851 " (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 -07001852 " (return (var_ref temp))))\n"
1853 "\n"
1854 " (signature bvec4\n"
1855 " (parameters\n"
1856 " (declare (in) uvec4 arg0)\n"
1857 " (declare (in) uvec4 arg1))\n"
1858 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001859 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1860 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1861 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1862 " (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 -07001863 " (return (var_ref temp))))\n"
1864 "))\n"
1865};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001866
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001867static const char *builtins_130_greaterThanEqual = {
1868 "((function greaterThanEqual\n"
1869 " (signature bvec2\n"
1870 " (parameters\n"
1871 " (declare (in) uvec2 arg0)\n"
1872 " (declare (in) uvec2 arg1))\n"
1873 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001874 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1875 " (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 -07001876 " (return (var_ref temp))))\n"
1877 "\n"
1878 " (signature bvec3\n"
1879 " (parameters\n"
1880 " (declare (in) uvec3 arg0)\n"
1881 " (declare (in) uvec3 arg1))\n"
1882 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001883 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1884 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1885 " (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 -07001886 " (return (var_ref temp))))\n"
1887 "\n"
1888 " (signature bvec4\n"
1889 " (parameters\n"
1890 " (declare (in) uvec4 arg0)\n"
1891 " (declare (in) uvec4 arg1))\n"
1892 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001893 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1894 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1895 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1896 " (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 -07001897 " (return (var_ref temp))))\n"
1898 "))\n"
1899};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001900
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001901static const char *builtins_130_lessThan = {
1902 "((function lessThan\n"
1903 " (signature bvec2\n"
1904 " (parameters\n"
1905 " (declare (in) uvec2 arg0)\n"
1906 " (declare (in) uvec2 arg1))\n"
1907 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001908 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1909 " (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 -07001910 " (return (var_ref temp))))\n"
1911 "\n"
1912 " (signature bvec3\n"
1913 " (parameters\n"
1914 " (declare (in) uvec3 arg0)\n"
1915 " (declare (in) uvec3 arg1))\n"
1916 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001917 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1918 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1919 " (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 -07001920 " (return (var_ref temp))))\n"
1921 "\n"
1922 " (signature bvec4\n"
1923 " (parameters\n"
1924 " (declare (in) uvec4 arg0)\n"
1925 " (declare (in) uvec4 arg1))\n"
1926 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001927 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1928 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1929 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1930 " (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 -07001931 " (return (var_ref temp))))\n"
1932 "))\n"
1933};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001934
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001935static const char *builtins_130_lessThanEqual = {
1936 "((function lessThanEqual\n"
1937 " (signature bvec2\n"
1938 " (parameters\n"
1939 " (declare (in) uvec2 arg0)\n"
1940 " (declare (in) uvec2 arg1))\n"
1941 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001942 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1943 " (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 -07001944 " (return (var_ref temp))))\n"
1945 "\n"
1946 " (signature bvec3\n"
1947 " (parameters\n"
1948 " (declare (in) uvec3 arg0)\n"
1949 " (declare (in) uvec3 arg1))\n"
1950 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001951 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1952 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1953 " (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 -07001954 " (return (var_ref temp))))\n"
1955 "\n"
1956 " (signature bvec4\n"
1957 " (parameters\n"
1958 " (declare (in) uvec4 arg0)\n"
1959 " (declare (in) uvec4 arg1))\n"
1960 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001961 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1962 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1963 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1964 " (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 -07001965 " (return (var_ref temp))))\n"
1966 "))\n"
1967};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001968
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001969static const char *builtins_130_notEqual = {
1970 "((function notEqual\n"
1971 " (signature bvec2\n"
1972 " (parameters\n"
1973 " (declare (in) uvec2 arg0)\n"
1974 " (declare (in) uvec2 arg1))\n"
1975 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001976 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1977 " (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 -07001978 " (return (var_ref temp))))\n"
1979 "\n"
1980 " (signature bvec3\n"
1981 " (parameters\n"
1982 " (declare (in) uvec3 arg0)\n"
1983 " (declare (in) uvec3 arg1))\n"
1984 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001985 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1986 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1987 " (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 -07001988 " (return (var_ref temp))))\n"
1989 "\n"
1990 " (signature bvec4\n"
1991 " (parameters\n"
1992 " (declare (in) uvec4 arg0)\n"
1993 " (declare (in) uvec4 arg1))\n"
1994 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001995 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1996 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1997 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1998 " (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 -07001999 " (return (var_ref temp))))\n"
2000 "))\n"
2001};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07002002
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002003static const char *builtins_130_sign = {
2004 "((function sign\n"
2005 " (signature int\n"
2006 " (parameters\n"
2007 " (declare (in) int x))\n"
2008 " ((return (expression int / (var_ref x) (expression int abs (var_ref x))))))\n"
2009 "\n"
2010 " (signature ivec2\n"
2011 " (parameters\n"
2012 " (declare (in) ivec2 x))\n"
2013 " ((declare () ivec2 t)\n"
2014 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
2015 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
2016 " (return (var_ref t))))\n"
2017 "\n"
2018 " (signature ivec3\n"
2019 " (parameters\n"
2020 " (declare (in) ivec3 x))\n"
2021 " ((declare () ivec3 t)\n"
2022 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
2023 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
2024 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
2025 " (return (var_ref t))))\n"
2026 "\n"
2027 " (signature ivec4\n"
2028 " (parameters\n"
2029 " (declare (in) ivec4 x))\n"
2030 " ((declare () ivec4 t)\n"
2031 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
2032 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
2033 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
2034 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression int sign (swiz w (var_ref x))))\n"
2035 " (return (var_ref t))))\n"
2036 "))\n"
2037 "\n"
2038};
2039
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002040static const char *functions_for_130 [] = {
2041 builtins_130_equal,
2042 builtins_130_greaterThan,
2043 builtins_130_greaterThanEqual,
2044 builtins_130_lessThan,
2045 builtins_130_lessThanEqual,
2046 builtins_130_notEqual,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002047 builtins_130_sign,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002048};
Eric Anholtc22c4002010-03-26 18:20:30 -07002049
2050void
2051_mesa_glsl_initialize_functions(exec_list *instructions,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002052 struct _mesa_glsl_parse_state *state)
Eric Anholtc22c4002010-03-26 18:20:30 -07002053{
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002054 if (state->language_version >= 110)
2055 read_builtins(state, instructions, functions_for_110,
2056 sizeof(functions_for_110) / sizeof(const char *));
2057
Eric Anholtda46e5f2010-05-19 13:57:01 -07002058 if (state->language_version >= 110 && state->target == vertex_shader)
2059 read_builtins(state, instructions, functions_for_110_vs,
2060 sizeof(functions_for_110_vs) / sizeof(const char *));
2061
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002062 if (state->language_version >= 130)
2063 read_builtins(state, instructions, functions_for_130,
2064 sizeof(functions_for_130) / sizeof(const char *));
2065
Eric Anholtc22c4002010-03-26 18:20:30 -07002066}