blob: 1d9a58a5caf0d64d36b5d283af2926790625c7a7 [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>
Ian Romanick261bbc02010-08-12 15:05:39 -070026#include "main/compiler.h"
Eric Anholtc22c4002010-03-26 18:20:30 -070027#include "glsl_parser_extras.h"
Kenneth Graunkeb3262122010-04-28 23:01:33 -070028#include "ir_reader.h"
Ian Romanickd5be2ac2010-07-20 11:29:46 -070029#include "program.h"
Eric Anholtddd2e832010-03-27 12:59:42 -070030
Ian Romanickd5be2ac2010-07-20 11:29:46 -070031extern "C" struct gl_shader *
32_mesa_new_shader(GLcontext *ctx, GLuint name, GLenum type);
33
34gl_shader *
35read_builtins(GLenum target, const char **functions, unsigned count)
Eric Anholtc22c4002010-03-26 18:20:30 -070036{
Ian Romanickd5be2ac2010-07-20 11:29:46 -070037 gl_shader *sh = _mesa_new_shader(NULL, 0, target);
38 struct _mesa_glsl_parse_state *st =
39 new(sh) _mesa_glsl_parse_state(NULL, target, sh);
40
41 st->language_version = 130;
42 st->ARB_texture_rectangle_enable = true;
43 st->EXT_texture_array_enable = true;
44 _mesa_glsl_initialize_types(st);
45
46 sh->ir = new(sh) exec_list;
47 sh->symbols = st->symbols;
Eric Anholtc22c4002010-03-26 18:20:30 -070048
Kenneth Graunkeb3262122010-04-28 23:01:33 -070049 for (unsigned i = 0; i < count; i++) {
Ian Romanickd5be2ac2010-07-20 11:29:46 -070050 _mesa_glsl_read_ir(st, sh->ir, functions[i]);
Eric Anholtc22c4002010-03-26 18:20:30 -070051
Kenneth Graunkeb3262122010-04-28 23:01:33 -070052 if (st->error) {
53 printf("error reading builtin: %.35s ...\n", functions[i]);
Ian Romanickd5be2ac2010-07-20 11:29:46 -070054 delete st;
55 talloc_free(sh);
56 return NULL;
Kenneth Graunkeb3262122010-04-28 23:01:33 -070057 }
Eric Anholtcc4ef152010-04-08 15:35:34 -070058 }
Ian Romanickd5be2ac2010-07-20 11:29:46 -070059
60 reparent_ir(sh->ir, sh);
61 delete st;
62
63 return sh;
Eric Anholtcc4ef152010-04-08 15:35:34 -070064}
65
Kenneth Graunke4b0029a2010-06-08 16:29:17 -070066/* 110 builtins */
Eric Anholt53afc362010-03-27 13:55:04 -070067
Kenneth Graunkeb3262122010-04-28 23:01:33 -070068static const char *builtins_110_abs = {
69 "((function abs\n"
70 " (signature float\n"
71 " (parameters\n"
72 " (declare (in) float arg0))\n"
73 " ((return (expression float abs (var_ref arg0)))))\n"
74 "\n"
75 " (signature vec2\n"
76 " (parameters\n"
77 " (declare (in) vec2 arg0))\n"
78 " ((return (expression vec2 abs (var_ref arg0)))))\n"
79 "\n"
80 " (signature vec3\n"
81 " (parameters\n"
82 " (declare (in) vec3 arg0))\n"
83 " ((return (expression vec3 abs (var_ref arg0)))))\n"
84 "\n"
85 " (signature vec4\n"
86 " (parameters\n"
87 " (declare (in) vec4 arg0))\n"
88 " ((return (expression vec4 abs (var_ref arg0)))))\n"
89 "))\n"
90};
Eric Anholt53afc362010-03-27 13:55:04 -070091
Kenneth Graunkeb3262122010-04-28 23:01:33 -070092static const char *builtins_110_all = {
93 "((function all\n"
94 " (signature bool\n"
95 " (parameters\n"
96 " (declare (in) bvec2 arg0))\n"
97 " ((return (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
98 "\n"
99 " (signature bool\n"
100 " (parameters\n"
101 " (declare (in) bvec3 arg0))\n"
102 " ((return (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
103 "\n"
104 " (signature bool\n"
105 " (parameters\n"
106 " (declare (in) bvec4 arg0))\n"
107 " ((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"
108 "))\n"
109};
Eric Anholt53afc362010-03-27 13:55:04 -0700110
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700111static const char *builtins_110_any = {
112 "((function any\n"
113 " (signature bool\n"
114 " (parameters\n"
115 " (declare (in) bvec2 arg0))\n"
116 " ((return (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
117 "\n"
118 " (signature bool\n"
119 " (parameters\n"
120 " (declare (in) bvec3 arg0))\n"
121 " ((return (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
122 "\n"
123 " (signature bool\n"
124 " (parameters\n"
125 " (declare (in) bvec4 arg0))\n"
126 " ((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"
127 "))\n"
128};
Eric Anholt53afc362010-03-27 13:55:04 -0700129
Eric Anholt5e58e542010-05-19 12:19:54 -0700130static const char *builtins_110_asin = {
131 "((function asin\n"
132 " (signature float\n"
133 " (parameters\n"
134 " (declare (in) float x))\n"
135 " ((return (expression float *\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700136 " (expression float sign (var_ref x))\n"
137 " (expression float -\n"
138 " (expression float *\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700139 " (constant float (3.1415926))\n"
140 " (constant float (0.5)))\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700141 " (expression float *\n"
142 " (expression float sqrt\n"
143 " (expression float -\n"
144 " (constant float (1.0))\n"
145 " (expression float abs (var_ref x))))\n"
146 " (expression float +\n"
147 " (constant float (1.5707288))\n"
148 " (expression float *\n"
149 " (expression float abs (var_ref x))\n"
150 " (expression float +\n"
151 " (constant float (-0.2121144))\n"
152 " (expression float *\n"
153 " (constant float (0.0742610))\n"
154 " (expression float abs (var_ref x))))))))))))\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700155 "\n"
Kenneth Graunke3ffedf12010-06-09 14:15:04 -0700156 " (signature vec2\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700157 " (parameters\n"
158 " (declare (in) vec2 x))\n"
159 " ((return (expression vec2 *\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700160 " (expression vec2 sign (var_ref x))\n"
161 " (expression vec2 -\n"
162 " (expression float *\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700163 " (constant float (3.1415926))\n"
164 " (constant float (0.5)))\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700165 " (expression vec2 *\n"
166 " (expression vec2 sqrt\n"
167 " (expression vec2 -\n"
168 " (constant float (1.0))\n"
169 " (expression vec2 abs (var_ref x))))\n"
170 " (expression vec2 +\n"
171 " (constant float (1.5707288))\n"
172 " (expression vec2 *\n"
173 " (expression vec2 abs (var_ref x))\n"
174 " (expression vec2 +\n"
175 " (constant float (-0.2121144))\n"
176 " (expression vec2 *\n"
177 " (constant float (0.0742610))\n"
178 " (expression vec2 abs (var_ref x))))))))))))\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700179 "\n"
Kenneth Graunke3ffedf12010-06-09 14:15:04 -0700180 " (signature vec3\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700181 " (parameters\n"
182 " (declare (in) vec3 x))\n"
183 " ((return (expression vec3 *\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700184 " (expression vec3 sign (var_ref x))\n"
185 " (expression vec3 -\n"
186 " (expression float *\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700187 " (constant float (3.1415926))\n"
188 " (constant float (0.5)))\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700189 " (expression vec3 *\n"
190 " (expression vec3 sqrt\n"
191 " (expression vec3 -\n"
192 " (constant float (1.0))\n"
193 " (expression vec3 abs (var_ref x))))\n"
194 " (expression vec3 +\n"
195 " (constant float (1.5707288))\n"
196 " (expression vec3 *\n"
197 " (expression vec3 abs (var_ref x))\n"
198 " (expression vec3 +\n"
199 " (constant float (-0.2121144))\n"
200 " (expression vec3 *\n"
201 " (constant float (0.0742610))\n"
202 " (expression vec3 abs (var_ref x))))))))))))\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700203 "\n"
Kenneth Graunke3ffedf12010-06-09 14:15:04 -0700204 " (signature vec4\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700205 " (parameters\n"
206 " (declare (in) vec4 x))\n"
207 " ((return (expression vec4 *\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700208 " (expression vec4 sign (var_ref x))\n"
209 " (expression vec4 -\n"
210 " (expression float *\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700211 " (constant float (3.1415926))\n"
212 " (constant float (0.5)))\n"
Eric Anholt1245bab2010-07-20 12:22:37 -0700213 " (expression vec4 *\n"
214 " (expression vec4 sqrt\n"
215 " (expression vec4 -\n"
216 " (constant float (1.0))\n"
217 " (expression vec4 abs (var_ref x))))\n"
218 " (expression vec4 +\n"
219 " (constant float (1.5707288))\n"
220 " (expression vec4 *\n"
221 " (expression vec4 abs (var_ref x))\n"
222 " (expression vec4 +\n"
223 " (constant float (-0.2121144))\n"
224 " (expression vec4 *\n"
225 " (constant float (0.0742610))\n"
226 " (expression vec4 abs (var_ref x)))))))))))\n"
227 "))\n"
Kenneth Graunke855fcb22010-06-09 13:52:32 -0700228 "\n"
229 " (function acos\n"
230 " (signature float\n"
231 " (parameters\n"
232 " (declare (in) float x))\n"
233 " ((return (expression float - (constant float (1.5707963))\n"
234 " (call asin ((var_ref x)))))))\n"
235 " (signature vec2\n"
236 " (parameters\n"
237 " (declare (in) vec2 x))\n"
238 " ((return (expression vec2 - (constant float (1.5707963))\n"
239 " (call asin ((var_ref x)))))))\n"
240 " (signature vec3\n"
241 " (parameters\n"
242 " (declare (in) vec3 x))\n"
243 " ((return (expression vec3 - (constant float (1.5707963))\n"
244 " (call asin ((var_ref x)))))))\n"
245 " (signature vec4\n"
246 " (parameters\n"
247 " (declare (in) vec4 x))\n"
248 " ((return (expression vec4 - (constant float (1.5707963))\n"
249 " (call asin ((var_ref x)))))))\n"
Eric Anholt5e58e542010-05-19 12:19:54 -0700250 "))\n"
251};
252
Eric Anholt60fa1a92010-05-19 12:44:23 -0700253static const char *builtins_110_atan = {
254 "((function atan\n"
255 " (signature float\n"
256 " (parameters\n"
257 " (declare (in) float x))\n"
258 " ((return (call asin ((expression float *\n"
259 " (var_ref x)\n"
260 " (expression float rsq\n"
261 " (expression float +\n"
262 " (expression float *\n"
263 " (var_ref x)\n"
264 " (var_ref x))\n"
265 " (constant float (1.0))))))))))\n"
266 "\n"
267 " (signature vec2\n"
268 " (parameters\n"
269 " (declare (in) vec2 y_over_x))\n"
270 " ((return (call asin ((expression vec2 *\n"
271 " (var_ref y_over_x)\n"
272 " (expression vec2 rsq\n"
273 " (expression vec2 +\n"
274 " (expression vec2 *\n"
275 " (var_ref y_over_x)\n"
276 " (var_ref y_over_x))\n"
277 " (constant float (1.0))))))))))\n"
278 "\n"
279 " (signature vec3\n"
280 " (parameters\n"
281 " (declare (in) vec3 y_over_x))\n"
282 " ((return (call asin ((expression vec3 *\n"
283 " (var_ref y_over_x)\n"
284 " (expression vec3 rsq\n"
285 " (expression vec3 +\n"
286 " (expression vec3 *\n"
287 " (var_ref y_over_x)\n"
288 " (var_ref y_over_x))\n"
289 " (constant float (1.0))))))))))\n"
290 "\n"
291 " (signature vec4\n"
292 " (parameters\n"
293 " (declare (in) vec4 y_over_x))\n"
294 " ((return (call asin ((expression vec4 *\n"
295 " (var_ref y_over_x)\n"
296 " (expression vec4 rsq\n"
297 " (expression vec4 +\n"
298 " (expression vec4 *\n"
299 " (var_ref y_over_x)\n"
300 " (var_ref y_over_x))\n"
301 " (constant float (1.0))))))))))\n"
302 "\n"
Eric Anholt3fa1b852010-07-30 10:20:34 -0700303 " (signature float\n"
304 " (parameters\n"
305 " (declare (in ) float y)\n"
306 " (declare (in ) float x)\n"
307 " )\n"
308 " (\n"
309 " (declare () float r)\n"
310 " (declare ( ) float abs_retval)\n"
311 " (assign (constant bool (1)) (var_ref abs_retval) (call abs ((var_ref x) ))\n"
312 ") \n"
313 " (if (expression bool > (var_ref abs_retval) (constant float (0.000100)) ) (\n"
314 " (declare ( ) float atan_retval)\n"
315 " (assign (constant bool (1)) (var_ref atan_retval) (call atan ((expression float / (var_ref y) (var_ref x) ) ))\n"
316 ") \n"
317 " (assign (constant bool (1)) (var_ref r) (var_ref atan_retval) ) \n"
318 " (if (expression bool < (var_ref x) (constant float (0.000000)) ) (\n"
319 " (if (expression bool >= (var_ref y) (constant float (0.000000)) ) (\n"
320 " (declare ( ) float assignment_tmp)\n"
321 " (assign (constant bool (1)) (var_ref assignment_tmp) (expression float + (var_ref r) (constant float (3.141593)) ) ) \n"
322 " (assign (constant bool (1)) (var_ref r) (var_ref assignment_tmp) ) \n"
323 " )\n"
324 " (\n"
325 " (declare ( ) float assignment_tmp)\n"
326 " (assign (constant bool (1)) (var_ref assignment_tmp) (expression float - (var_ref r) (constant float (3.141593)) ) ) \n"
327 " (assign (constant bool (1)) (var_ref r) (var_ref assignment_tmp) ) \n"
328 " ))\n"
329 "\n"
330 " )\n"
331 " (\n"
332 " ))\n"
333 "\n"
334 " )\n"
335 " (\n"
336 " (if (expression bool >= (var_ref y) (constant float (0.000000)) ) (\n"
337 " (assign (constant bool (1)) (var_ref r) (constant float (1.570796)) ) \n"
338 " )\n"
339 " (\n"
340 " (assign (constant bool (1)) (var_ref r) (constant float (-1.570796)) ) \n"
341 " ))\n"
342 "\n"
343 " ))\n"
344 "\n"
345 " (return (var_ref r) )\n"
346 " ))\n"
347 "\n"
348 "\n"
Eric Anholt60fa1a92010-05-19 12:44:23 -0700349 "\n"
350 " (signature vec2\n"
351 " (parameters\n"
352 " (declare (in) vec2 y)\n"
353 " (declare (in) vec2 x))\n"
354 " ((declare () vec2 r)\n"
Eric Anholt3fa1b852010-07-30 10:20:34 -0700355 " (assign (constant bool (1))\n"
356 " (swiz x (var_ref r))\n"
357 " (call atan ((swiz x (var_ref y))\n"
358 " (swiz x (var_ref x)))))\n"
359 " (assign (constant bool (1))\n"
360 " (swiz y (var_ref r))\n"
361 " (call atan ((swiz y (var_ref y))\n"
362 " (swiz y (var_ref x)))))\n"
Eric Anholt60fa1a92010-05-19 12:44:23 -0700363 " (return (var_ref r))))\n"
364 "\n"
365 " (signature vec3\n"
366 " (parameters\n"
367 " (declare (in) vec3 y)\n"
368 " (declare (in) vec3 x))\n"
369 " ((declare () vec3 r)\n"
Eric Anholt3fa1b852010-07-30 10:20:34 -0700370 " (assign (constant bool (1))\n"
371 " (swiz x (var_ref r))\n"
372 " (call atan ((swiz x (var_ref y))\n"
373 " (swiz x (var_ref x)))))\n"
374 " (assign (constant bool (1))\n"
375 " (swiz y (var_ref r))\n"
376 " (call atan ((swiz y (var_ref y))\n"
377 " (swiz y (var_ref x)))))\n"
378 " (assign (constant bool (1))\n"
379 " (swiz z (var_ref r))\n"
380 " (call atan ((swiz z (var_ref y))\n"
381 " (swiz z (var_ref x)))))\n"
Eric Anholt60fa1a92010-05-19 12:44:23 -0700382 " (return (var_ref r))))\n"
383 "\n"
384 " (signature vec4\n"
385 " (parameters\n"
386 " (declare (in) vec4 y)\n"
387 " (declare (in) vec4 x))\n"
388 " ((declare () vec4 r)\n"
Eric Anholt3fa1b852010-07-30 10:20:34 -0700389 " (assign (constant bool (1))\n"
390 " (swiz x (var_ref r))\n"
391 " (call atan ((swiz x (var_ref y))\n"
392 " (swiz x (var_ref x)))))\n"
393 " (assign (constant bool (1))\n"
394 " (swiz y (var_ref r))\n"
395 " (call atan ((swiz y (var_ref y))\n"
396 " (swiz y (var_ref x)))))\n"
397 " (assign (constant bool (1))\n"
398 " (swiz z (var_ref r))\n"
399 " (call atan ((swiz z (var_ref y))\n"
400 " (swiz z (var_ref x)))))\n"
401 " (assign (constant bool (1))\n"
402 " (swiz w (var_ref r))\n"
403 " (call atan ((swiz w (var_ref y))\n"
404 " (swiz w (var_ref x)))))\n"
405 " (return (var_ref r)))))\n"
Eric Anholt60fa1a92010-05-19 12:44:23 -0700406 "\n"
407 "))\n"
408};
409
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700410static const char *builtins_110_ceil = {
411 "((function ceil\n"
412 " (signature float\n"
413 " (parameters\n"
414 " (declare (in) float arg0))\n"
415 " ((return (expression float ceil (var_ref arg0)))))\n"
416 "\n"
417 " (signature vec2\n"
418 " (parameters\n"
419 " (declare (in) vec2 arg0))\n"
420 " ((return (expression vec2 ceil (var_ref arg0)))))\n"
421 "\n"
422 " (signature vec3\n"
423 " (parameters\n"
424 " (declare (in) vec3 arg0))\n"
425 " ((return (expression vec3 ceil (var_ref arg0)))))\n"
426 "\n"
427 " (signature vec4\n"
428 " (parameters\n"
429 " (declare (in) vec4 arg0))\n"
430 " ((return (expression vec4 ceil (var_ref arg0)))))\n"
431 "))\n"
432};
Eric Anholt53afc362010-03-27 13:55:04 -0700433
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700434static const char *builtins_110_clamp = {
435 "((function clamp\n"
436 " (signature float\n"
437 " (parameters\n"
438 " (declare (in) float arg0)\n"
439 " (declare (in) float arg1)\n"
440 " (declare (in) float arg2))\n"
441 " ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
442 "\n"
443 " (signature vec2\n"
444 " (parameters\n"
445 " (declare (in) vec2 arg0)\n"
446 " (declare (in) vec2 arg1)\n"
447 " (declare (in) vec2 arg2))\n"
448 " ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
449 "\n"
450 " (signature vec3\n"
451 " (parameters\n"
452 " (declare (in) vec3 arg0)\n"
453 " (declare (in) vec3 arg1)\n"
454 " (declare (in) vec3 arg2))\n"
455 " ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
456 "\n"
457 " (signature vec4\n"
458 " (parameters\n"
459 " (declare (in) vec4 arg0)\n"
460 " (declare (in) vec4 arg1)\n"
461 " (declare (in) vec4 arg2))\n"
462 " ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkecdf17262010-06-09 13:10:00 -0700463 "\n"
464 " (signature vec2\n"
465 " (parameters\n"
466 " (declare (in) vec2 arg0)\n"
467 " (declare (in) float arg1)\n"
468 " (declare (in) float arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -0700469 " ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkecdf17262010-06-09 13:10:00 -0700470 "\n"
471 " (signature vec3\n"
472 " (parameters\n"
473 " (declare (in) vec3 arg0)\n"
474 " (declare (in) float arg1)\n"
475 " (declare (in) float arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -0700476 " ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkecdf17262010-06-09 13:10:00 -0700477 "\n"
478 " (signature vec4\n"
479 " (parameters\n"
480 " (declare (in) vec4 arg0)\n"
481 " (declare (in) float arg1)\n"
482 " (declare (in) float arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -0700483 " ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700484 "))\n"
485};
Eric Anholt53afc362010-03-27 13:55:04 -0700486
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700487static const char *builtins_110_cos = {
488 "((function cos\n"
489 " (signature float\n"
490 " (parameters\n"
491 " (declare (in) float angle))\n"
492 " ((return (expression float cos (var_ref angle)))))\n"
493 "\n"
494 " (signature vec2\n"
495 " (parameters\n"
496 " (declare (in) vec2 angle))\n"
497 " ((return (expression vec2 cos (var_ref angle)))))\n"
498 "\n"
499 " (signature vec3\n"
500 " (parameters\n"
501 " (declare (in) vec3 angle))\n"
502 " ((return (expression vec3 cos (var_ref angle)))))\n"
503 "\n"
504 " (signature vec4\n"
505 " (parameters\n"
506 " (declare (in) vec4 angle))\n"
507 " ((return (expression vec4 cos (var_ref angle)))))\n"
508 "))\n"
509};
510
511static const char *builtins_110_cross = {
512 "((function cross\n"
513 " (signature vec3\n"
514 " (parameters\n"
515 " (declare (in) vec3 arg0)\n"
516 " (declare (in) vec3 arg1))\n"
Eric Anholt9be7f632010-07-13 15:37:57 -0700517 " ((return (expression vec3 cross (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700518 "))\n"
519};
520
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700521static const char *builtins_110_degrees = {
522 "((function degrees\n"
523 " (signature float\n"
524 " (parameters\n"
525 " (declare (in) float arg0))\n"
526 " ((return (expression float * (var_ref arg0) (constant float (57.295780))))))\n"
527 "\n"
528 " (signature vec2\n"
529 " (parameters\n"
530 " (declare (in) vec2 arg0))\n"
531 " ((return (expression vec2 * (var_ref arg0) (constant float (57.295780))))))\n"
532 "\n"
533 " (signature vec3\n"
534 " (parameters\n"
535 " (declare (in) vec3 arg0))\n"
536 " ((return (expression vec3 * (var_ref arg0) (constant float (57.295780))))))\n"
537 "\n"
538 " (signature vec4\n"
539 " (parameters\n"
540 " (declare (in) vec4 arg0))\n"
541 " ((return (expression vec4 * (var_ref arg0) (constant float (57.295780))))))\n"
542 "))\n"
543};
Eric Anholt53afc362010-03-27 13:55:04 -0700544
Kenneth Graunke29b22282010-06-09 13:17:00 -0700545static const char *builtins_110_distance = {
546 "((function distance\n"
547 " (signature float\n"
548 " (parameters\n"
549 " (declare (in) float p0)\n"
550 " (declare (in) float p1))\n"
551 " ((declare () float p)\n"
552 " (assign (constant bool (1)) (var_ref p) (expression float - (var_ref p0) (var_ref p1)))\n"
553 " (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
554 "\n"
555 " (signature float\n"
556 " (parameters\n"
557 " (declare (in) vec2 p0)\n"
558 " (declare (in) vec2 p1))\n"
559 " ((declare () vec2 p)\n"
560 " (assign (constant bool (1)) (var_ref p) (expression vec2 - (var_ref p0) (var_ref p1)))\n"
561 " (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
562 "\n"
563 " (signature float\n"
564 " (parameters\n"
565 " (declare (in) vec3 p0)\n"
566 " (declare (in) vec3 p1))\n"
567 " ((declare () vec3 p)\n"
568 " (assign (constant bool (1)) (var_ref p) (expression vec3 - (var_ref p0) (var_ref p1)))\n"
569 " (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
570 "\n"
571 " (signature float\n"
572 " (parameters\n"
573 " (declare (in) vec4 p0)\n"
574 " (declare (in) vec4 p1))\n"
575 " ((declare () vec4 p)\n"
576 " (assign (constant bool (1)) (var_ref p) (expression vec4 - (var_ref p0) (var_ref p1)))\n"
577 " (return (expression float sqrt (expression float dot (var_ref p) (var_ref p))))))\n"
578 "))\n"
579};
580
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700581static const char *builtins_110_dot = {
582 "((function dot\n"
583 " (signature float\n"
584 " (parameters\n"
585 " (declare (in) float arg0)\n"
586 " (declare (in) float arg1))\n"
587 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
588 "\n"
589 " (signature float\n"
590 " (parameters\n"
591 " (declare (in) vec2 arg0)\n"
592 " (declare (in) vec2 arg1))\n"
593 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
594 "\n"
595 " (signature float\n"
596 " (parameters\n"
597 " (declare (in) vec3 arg0)\n"
598 " (declare (in) vec3 arg1))\n"
599 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
600 "\n"
601 " (signature float\n"
602 " (parameters\n"
603 " (declare (in) vec4 arg0)\n"
604 " (declare (in) vec4 arg1))\n"
605 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
606 "))\n"
607};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700608
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700609static const char *builtins_110_equal = {
610 "((function equal\n"
611 " (signature bvec2\n"
612 " (parameters\n"
613 " (declare (in) vec2 arg0)\n"
614 " (declare (in) vec2 arg1))\n"
615 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700616 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
617 " (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 -0700618 " (return (var_ref temp))))\n"
619 "\n"
620 " (signature bvec3\n"
621 " (parameters\n"
622 " (declare (in) vec3 arg0)\n"
623 " (declare (in) vec3 arg1))\n"
624 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700625 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
626 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
627 " (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 -0700628 " (return (var_ref temp))))\n"
629 "\n"
630 " (signature bvec4\n"
631 " (parameters\n"
632 " (declare (in) vec4 arg0)\n"
633 " (declare (in) vec4 arg1))\n"
634 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700635 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
636 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
637 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
638 " (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 -0700639 " (return (var_ref temp))))\n"
640 "\n"
641 " (signature bvec2\n"
642 " (parameters\n"
643 " (declare (in) ivec2 arg0)\n"
644 " (declare (in) ivec2 arg1))\n"
645 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700646 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
647 " (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 -0700648 " (return (var_ref temp))))\n"
649 "\n"
650 " (signature bvec3\n"
651 " (parameters\n"
652 " (declare (in) ivec3 arg0)\n"
653 " (declare (in) ivec3 arg1))\n"
654 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700655 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
656 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
657 " (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 -0700658 " (return (var_ref temp))))\n"
659 "\n"
660 " (signature bvec4\n"
661 " (parameters\n"
662 " (declare (in) ivec4 arg0)\n"
663 " (declare (in) ivec4 arg1))\n"
664 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700665 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
666 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
667 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
668 " (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 -0700669 " (return (var_ref temp))))\n"
670 "))\n"
671};
Eric Anholtc22c4002010-03-26 18:20:30 -0700672
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700673static const char *builtins_110_exp = {
674 "((function exp\n"
675 " (signature float\n"
676 " (parameters\n"
677 " (declare (in) float arg0))\n"
678 " ((return (expression float exp (var_ref arg0)))))\n"
679 "\n"
680 " (signature vec2\n"
681 " (parameters\n"
682 " (declare (in) vec2 arg0))\n"
683 " ((return (expression vec2 exp (var_ref arg0)))))\n"
684 "\n"
685 " (signature vec3\n"
686 " (parameters\n"
687 " (declare (in) vec3 arg0))\n"
688 " ((return (expression vec3 exp (var_ref arg0)))))\n"
689 "\n"
690 " (signature vec4\n"
691 " (parameters\n"
692 " (declare (in) vec4 arg0))\n"
693 " ((return (expression vec4 exp (var_ref arg0)))))\n"
694 "))\n"
695};
Eric Anholt76a91e12010-03-27 14:04:43 -0700696
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700697static const char *builtins_110_exp2 = {
698 "((function exp2\n"
699 " (signature float\n"
700 " (parameters\n"
701 " (declare (in) float arg0))\n"
702 " ((return (expression float exp2 (var_ref arg0)))))\n"
703 "\n"
704 " (signature vec2\n"
705 " (parameters\n"
706 " (declare (in) vec2 arg0))\n"
707 " ((return (expression vec2 exp2 (var_ref arg0)))))\n"
708 "\n"
709 " (signature vec3\n"
710 " (parameters\n"
711 " (declare (in) vec3 arg0))\n"
712 " ((return (expression vec3 exp2 (var_ref arg0)))))\n"
713 "\n"
714 " (signature vec4\n"
715 " (parameters\n"
716 " (declare (in) vec4 arg0))\n"
717 " ((return (expression vec4 exp2 (var_ref arg0)))))\n"
718 "))\n"
719};
Eric Anholt76a91e12010-03-27 14:04:43 -0700720
Kenneth Graunke539f2932010-06-09 13:27:16 -0700721static const char *builtins_110_faceforward = {
722 "((function faceforward\n"
723 " (signature float\n"
724 " (parameters\n"
725 " (declare (in) float N)\n"
726 " (declare (in) float I)\n"
727 " (declare (in) float Nref))\n"
728 " ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))\n"
729 " ((return (var_ref N)))\n"
730 " ((return (expression float neg (var_ref N)))))))\n"
731 "\n"
732 " (signature vec2\n"
733 " (parameters\n"
734 " (declare (in) vec2 N)\n"
735 " (declare (in) vec2 I)\n"
736 " (declare (in) vec2 Nref))\n"
737 " ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))\n"
738 " ((return (var_ref N)))\n"
739 " ((return (expression vec2 neg (var_ref N)))))))\n"
740 "\n"
741 " (signature vec3\n"
742 " (parameters\n"
743 " (declare (in) vec3 N)\n"
744 " (declare (in) vec3 I)\n"
745 " (declare (in) vec3 Nref))\n"
746 " ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))\n"
747 " ((return (var_ref N)))\n"
748 " ((return (expression vec3 neg (var_ref N)))))))\n"
749 "\n"
750 " (signature vec4\n"
751 " (parameters\n"
752 " (declare (in) vec4 N)\n"
753 " (declare (in) vec4 I)\n"
754 " (declare (in) vec4 Nref))\n"
755 " ((if (expression bool < (expression float dot (var_ref Nref) (var_ref I)) (constant float (0)))\n"
756 " ((return (var_ref N)))\n"
757 " ((return (expression vec4 neg (var_ref N)))))))\n"
758 "))\n"
759};
760
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700761static const char *builtins_110_floor = {
762 "((function floor\n"
763 " (signature float\n"
764 " (parameters\n"
765 " (declare (in) float arg0))\n"
766 " ((return (expression float floor (var_ref arg0)))))\n"
767 "\n"
768 " (signature vec2\n"
769 " (parameters\n"
770 " (declare (in) vec2 arg0))\n"
771 " ((return (expression vec2 floor (var_ref arg0)))))\n"
772 "\n"
773 " (signature vec3\n"
774 " (parameters\n"
775 " (declare (in) vec3 arg0))\n"
776 " ((return (expression vec3 floor (var_ref arg0)))))\n"
777 "\n"
778 " (signature vec4\n"
779 " (parameters\n"
780 " (declare (in) vec4 arg0))\n"
781 " ((return (expression vec4 floor (var_ref arg0)))))\n"
782 "))\n"
783};
Eric Anholt76a91e12010-03-27 14:04:43 -0700784
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700785static const char *builtins_110_fract = {
786 "((function fract\n"
787 " (signature float\n"
788 " (parameters\n"
789 " (declare (in) float x))\n"
Eric Anholtd925c912010-07-01 10:37:11 -0700790 " ((return (expression float fract (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700791 "\n"
792 " (signature vec2\n"
793 " (parameters\n"
794 " (declare (in) vec2 x))\n"
Eric Anholtd925c912010-07-01 10:37:11 -0700795 " ((return (expression vec2 fract (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700796 "\n"
797 " (signature vec3\n"
798 " (parameters\n"
799 " (declare (in) vec3 x))\n"
Eric Anholtd925c912010-07-01 10:37:11 -0700800 " ((return (expression vec3 fract (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700801 "\n"
802 " (signature vec4\n"
803 " (parameters\n"
804 " (declare (in) vec4 x))\n"
Eric Anholtd925c912010-07-01 10:37:11 -0700805 " ((return (expression vec4 fract (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700806 "))\n"
807 "\n"
808};
809
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700810static const char *builtins_110_greaterThan = {
811 "((function greaterThan\n"
812 " (signature bvec2\n"
813 " (parameters\n"
814 " (declare (in) vec2 arg0)\n"
815 " (declare (in) vec2 arg1))\n"
816 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700817 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
818 " (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 -0700819 " (return (var_ref temp))))\n"
820 "\n"
821 " (signature bvec3\n"
822 " (parameters\n"
823 " (declare (in) vec3 arg0)\n"
824 " (declare (in) vec3 arg1))\n"
825 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700826 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
827 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
828 " (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 -0700829 " (return (var_ref temp))))\n"
830 "\n"
831 " (signature bvec4\n"
832 " (parameters\n"
833 " (declare (in) vec4 arg0)\n"
834 " (declare (in) vec4 arg1))\n"
835 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700836 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
837 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
838 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
839 " (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 -0700840 " (return (var_ref temp))))\n"
841 "\n"
842 " (signature bvec2\n"
843 " (parameters\n"
844 " (declare (in) ivec2 arg0)\n"
845 " (declare (in) ivec2 arg1))\n"
846 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700847 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
848 " (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 -0700849 " (return (var_ref temp))))\n"
850 "\n"
851 " (signature bvec3\n"
852 " (parameters\n"
853 " (declare (in) ivec3 arg0)\n"
854 " (declare (in) ivec3 arg1))\n"
855 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700856 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
857 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
858 " (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 -0700859 " (return (var_ref temp))))\n"
860 "\n"
861 " (signature bvec4\n"
862 " (parameters\n"
863 " (declare (in) ivec4 arg0)\n"
864 " (declare (in) ivec4 arg1))\n"
865 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700866 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
867 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
868 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
869 " (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 -0700870 " (return (var_ref temp))))\n"
871 "))\n"
872};
Eric Anholt76a91e12010-03-27 14:04:43 -0700873
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700874static const char *builtins_110_greaterThanEqual = {
875 "((function greaterThanEqual\n"
876 " (signature bvec2\n"
877 " (parameters\n"
878 " (declare (in) vec2 arg0)\n"
879 " (declare (in) vec2 arg1))\n"
880 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700881 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
882 " (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 -0700883 " (return (var_ref temp))))\n"
884 "\n"
885 " (signature bvec3\n"
886 " (parameters\n"
887 " (declare (in) vec3 arg0)\n"
888 " (declare (in) vec3 arg1))\n"
889 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700890 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
891 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
892 " (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 -0700893 " (return (var_ref temp))))\n"
894 "\n"
895 " (signature bvec4\n"
896 " (parameters\n"
897 " (declare (in) vec4 arg0)\n"
898 " (declare (in) vec4 arg1))\n"
899 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700900 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
901 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
902 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
903 " (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 -0700904 " (return (var_ref temp))))\n"
905 "\n"
906 " (signature bvec2\n"
907 " (parameters\n"
908 " (declare (in) ivec2 arg0)\n"
909 " (declare (in) ivec2 arg1))\n"
910 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700911 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
912 " (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 -0700913 " (return (var_ref temp))))\n"
914 "\n"
915 " (signature bvec3\n"
916 " (parameters\n"
917 " (declare (in) ivec3 arg0)\n"
918 " (declare (in) ivec3 arg1))\n"
919 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700920 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
921 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
922 " (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 -0700923 " (return (var_ref temp))))\n"
924 "\n"
925 " (signature bvec4\n"
926 " (parameters\n"
927 " (declare (in) ivec4 arg0)\n"
928 " (declare (in) ivec4 arg1))\n"
929 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700930 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
931 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
932 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
933 " (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 -0700934 " (return (var_ref temp))))\n"
935 "))\n"
936};
Eric Anholt76a91e12010-03-27 14:04:43 -0700937
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700938static const char *builtins_110_inversesqrt = {
939 "((function inversesqrt\n"
940 " (signature float\n"
941 " (parameters\n"
942 " (declare (in) float arg0))\n"
943 " ((return (expression float rsq (var_ref arg0)))))\n"
944 "\n"
945 " (signature vec2\n"
946 " (parameters\n"
947 " (declare (in) vec2 arg0))\n"
948 " ((return (expression vec2 rsq (var_ref arg0)))))\n"
949 "\n"
950 " (signature vec3\n"
951 " (parameters\n"
952 " (declare (in) vec3 arg0))\n"
953 " ((return (expression vec3 rsq (var_ref arg0)))))\n"
954 "\n"
955 " (signature vec4\n"
956 " (parameters\n"
957 " (declare (in) vec4 arg0))\n"
958 " ((return (expression vec4 rsq (var_ref arg0)))))\n"
959 "))\n"
960};
Eric Anholt76a91e12010-03-27 14:04:43 -0700961
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700962static const char *builtins_110_length = {
963 "((function length\n"
964 " (signature float\n"
965 " (parameters\n"
966 " (declare (in) float arg0))\n"
967 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
968 "\n"
969 " (signature float\n"
970 " (parameters\n"
971 " (declare (in) vec2 arg0))\n"
972 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
973 "\n"
974 " (signature float\n"
975 " (parameters\n"
976 " (declare (in) vec3 arg0))\n"
977 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
978 "\n"
979 " (signature float\n"
980 " (parameters\n"
981 " (declare (in) vec4 arg0))\n"
982 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
983 "))\n"
984};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700985
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700986static const char *builtins_110_lessThan = {
987 "((function lessThan\n"
988 " (signature bvec2\n"
989 " (parameters\n"
990 " (declare (in) vec2 arg0)\n"
991 " (declare (in) vec2 arg1))\n"
992 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700993 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
994 " (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 -0700995 " (return (var_ref temp))))\n"
996 "\n"
997 " (signature bvec3\n"
998 " (parameters\n"
999 " (declare (in) vec3 arg0)\n"
1000 " (declare (in) vec3 arg1))\n"
1001 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001002 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1003 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1004 " (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 -07001005 " (return (var_ref temp))))\n"
1006 "\n"
1007 " (signature bvec4\n"
1008 " (parameters\n"
1009 " (declare (in) vec4 arg0)\n"
1010 " (declare (in) vec4 arg1))\n"
1011 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001012 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1013 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1014 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1015 " (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 -07001016 " (return (var_ref temp))))\n"
1017 "\n"
1018 " (signature bvec2\n"
1019 " (parameters\n"
1020 " (declare (in) ivec2 arg0)\n"
1021 " (declare (in) ivec2 arg1))\n"
1022 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001023 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1024 " (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 -07001025 " (return (var_ref temp))))\n"
1026 "\n"
1027 " (signature bvec3\n"
1028 " (parameters\n"
1029 " (declare (in) ivec3 arg0)\n"
1030 " (declare (in) ivec3 arg1))\n"
1031 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001032 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1033 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1034 " (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 -07001035 " (return (var_ref temp))))\n"
1036 "\n"
1037 " (signature bvec4\n"
1038 " (parameters\n"
1039 " (declare (in) ivec4 arg0)\n"
1040 " (declare (in) ivec4 arg1))\n"
1041 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001042 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1043 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1044 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1045 " (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 -07001046 " (return (var_ref temp))))\n"
1047 "))\n"
1048};
Eric Anholt76a91e12010-03-27 14:04:43 -07001049
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001050static const char *builtins_110_lessThanEqual = {
1051 "((function lessThanEqual\n"
1052 " (signature bvec2\n"
1053 " (parameters\n"
1054 " (declare (in) vec2 arg0)\n"
1055 " (declare (in) vec2 arg1))\n"
1056 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001057 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1058 " (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 -07001059 " (return (var_ref temp))))\n"
1060 "\n"
1061 " (signature bvec3\n"
1062 " (parameters\n"
1063 " (declare (in) vec3 arg0)\n"
1064 " (declare (in) vec3 arg1))\n"
1065 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001066 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1067 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1068 " (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 -07001069 " (return (var_ref temp))))\n"
1070 "\n"
1071 " (signature bvec4\n"
1072 " (parameters\n"
1073 " (declare (in) vec4 arg0)\n"
1074 " (declare (in) vec4 arg1))\n"
1075 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001076 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1077 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1078 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1079 " (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 -07001080 " (return (var_ref temp))))\n"
1081 "\n"
1082 " (signature bvec2\n"
1083 " (parameters\n"
1084 " (declare (in) ivec2 arg0)\n"
1085 " (declare (in) ivec2 arg1))\n"
1086 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001087 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1088 " (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 -07001089 " (return (var_ref temp))))\n"
1090 "\n"
1091 " (signature bvec3\n"
1092 " (parameters\n"
1093 " (declare (in) ivec3 arg0)\n"
1094 " (declare (in) ivec3 arg1))\n"
1095 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001096 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1097 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1098 " (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 -07001099 " (return (var_ref temp))))\n"
1100 "\n"
1101 " (signature bvec4\n"
1102 " (parameters\n"
1103 " (declare (in) ivec4 arg0)\n"
1104 " (declare (in) ivec4 arg1))\n"
1105 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001106 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1107 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1108 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1109 " (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 -07001110 " (return (var_ref temp))))\n"
1111 "))\n"
1112};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001113
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001114static const char *builtins_110_log = {
1115 "((function log\n"
1116 " (signature float\n"
1117 " (parameters\n"
1118 " (declare (in) float arg0))\n"
1119 " ((return (expression float log (var_ref arg0)))))\n"
1120 "\n"
1121 " (signature vec2\n"
1122 " (parameters\n"
1123 " (declare (in) vec2 arg0))\n"
1124 " ((return (expression vec2 log (var_ref arg0)))))\n"
1125 "\n"
1126 " (signature vec3\n"
1127 " (parameters\n"
1128 " (declare (in) vec3 arg0))\n"
1129 " ((return (expression vec3 log (var_ref arg0)))))\n"
1130 "\n"
1131 " (signature vec4\n"
1132 " (parameters\n"
1133 " (declare (in) vec4 arg0))\n"
1134 " ((return (expression vec4 log (var_ref arg0)))))\n"
1135 "))\n"
1136};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001137
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001138static const char *builtins_110_log2 = {
1139 "((function log2\n"
1140 " (signature float\n"
1141 " (parameters\n"
1142 " (declare (in) float arg0))\n"
1143 " ((return (expression float log2 (var_ref arg0)))))\n"
1144 "\n"
1145 " (signature vec2\n"
1146 " (parameters\n"
1147 " (declare (in) vec2 arg0))\n"
1148 " ((return (expression vec2 log2 (var_ref arg0)))))\n"
1149 "\n"
1150 " (signature vec3\n"
1151 " (parameters\n"
1152 " (declare (in) vec3 arg0))\n"
1153 " ((return (expression vec3 log2 (var_ref arg0)))))\n"
1154 "\n"
1155 " (signature vec4\n"
1156 " (parameters\n"
1157 " (declare (in) vec4 arg0))\n"
1158 " ((return (expression vec4 log2 (var_ref arg0)))))\n"
1159 "))\n"
1160};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001161
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07001162static const char *builtins_110_matrixCompMult = {
1163 "((function matrixCompMult\n"
1164 " (signature mat2\n"
1165 " (parameters\n"
1166 " (declare (in) mat2 x)\n"
1167 " (declare (in) mat2 y))\n"
1168 " ((declare () mat2 z)\n"
1169 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
1170 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
1171 "(return (var_ref z))))\n"
1172 "\n"
1173 " (signature mat3\n"
1174 " (parameters\n"
1175 " (declare (in) mat3 x)\n"
1176 " (declare (in) mat3 y))\n"
1177 " ((declare () mat3 z)\n"
1178 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
1179 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
1180 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
1181 "(return (var_ref z))))\n"
1182 "\n"
1183 " (signature mat4\n"
1184 " (parameters\n"
1185 " (declare (in) mat4 x)\n"
1186 " (declare (in) mat4 y))\n"
1187 " ((declare () mat4 z)\n"
1188 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
1189 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
1190 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
1191 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3))) (expression vec4 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) \n"
1192 "(return (var_ref z))))\n"
1193 "))\n"
1194 "\n"
1195};
1196
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001197static const char *builtins_110_max = {
1198 "((function max\n"
1199 " (signature float\n"
1200 " (parameters\n"
1201 " (declare (in) float arg0)\n"
1202 " (declare (in) float arg1))\n"
1203 " ((return (expression float max (var_ref arg0) (var_ref arg1)))))\n"
1204 "\n"
1205 " (signature vec2\n"
1206 " (parameters\n"
1207 " (declare (in) vec2 arg0)\n"
1208 " (declare (in) vec2 arg1))\n"
1209 " ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))\n"
1210 "\n"
1211 " (signature vec3\n"
1212 " (parameters\n"
1213 " (declare (in) vec3 arg0)\n"
1214 " (declare (in) vec3 arg1))\n"
1215 " ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))\n"
1216 "\n"
1217 " (signature vec4\n"
1218 " (parameters\n"
1219 " (declare (in) vec4 arg0)\n"
1220 " (declare (in) vec4 arg1))\n"
1221 " ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke76796ed2010-06-09 13:05:40 -07001222 "\n"
1223 " (signature vec2\n"
1224 " (parameters\n"
1225 " (declare (in) vec2 arg0)\n"
1226 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001227 " ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke76796ed2010-06-09 13:05:40 -07001228 "\n"
1229 " (signature vec3\n"
1230 " (parameters\n"
1231 " (declare (in) vec3 arg0)\n"
1232 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001233 " ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkecdf17262010-06-09 13:10:00 -07001234 "\n"
Kenneth Graunke76796ed2010-06-09 13:05:40 -07001235 " (signature vec4\n"
1236 " (parameters\n"
1237 " (declare (in) vec4 arg0)\n"
1238 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001239 " ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001240 "))\n"
1241};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001242
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001243static const char *builtins_110_min = {
1244 "((function min\n"
1245 " (signature float\n"
1246 " (parameters\n"
1247 " (declare (in) float arg0)\n"
1248 " (declare (in) float arg1))\n"
1249 " ((return (expression float min (var_ref arg0) (var_ref arg1)))))\n"
1250 "\n"
1251 " (signature vec2\n"
1252 " (parameters\n"
1253 " (declare (in) vec2 arg0)\n"
1254 " (declare (in) vec2 arg1))\n"
1255 " ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))\n"
1256 "\n"
1257 " (signature vec3\n"
1258 " (parameters\n"
1259 " (declare (in) vec3 arg0)\n"
1260 " (declare (in) vec3 arg1))\n"
1261 " ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))\n"
1262 "\n"
1263 " (signature vec4\n"
1264 " (parameters\n"
1265 " (declare (in) vec4 arg0)\n"
1266 " (declare (in) vec4 arg1))\n"
1267 " ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke47d44c82010-06-09 13:03:18 -07001268 "\n"
1269 " (signature vec2\n"
1270 " (parameters\n"
1271 " (declare (in) vec2 arg0)\n"
1272 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001273 " ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke47d44c82010-06-09 13:03:18 -07001274 "\n"
1275 " (signature vec3\n"
1276 " (parameters\n"
1277 " (declare (in) vec3 arg0)\n"
1278 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001279 " ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke47d44c82010-06-09 13:03:18 -07001280 "\n"
1281 " (signature vec4\n"
1282 " (parameters\n"
1283 " (declare (in) vec4 arg0)\n"
1284 " (declare (in) float arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07001285 " ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001286 "))\n"
1287};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001288
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001289static const char *builtins_110_mix = {
1290 "((function mix\n"
1291 " (signature float\n"
1292 " (parameters\n"
1293 " (declare (in) float arg0)\n"
1294 " (declare (in) float arg1)\n"
1295 " (declare (in) float arg2))\n"
1296 " ((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"
1297 "\n"
1298 " (signature vec2\n"
1299 " (parameters\n"
1300 " (declare (in) vec2 arg0)\n"
1301 " (declare (in) vec2 arg1)\n"
1302 " (declare (in) vec2 arg2))\n"
1303 " ((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"
1304 "\n"
1305 " (signature vec3\n"
1306 " (parameters\n"
1307 " (declare (in) vec3 arg0)\n"
1308 " (declare (in) vec3 arg1)\n"
1309 " (declare (in) vec3 arg2))\n"
1310 " ((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"
1311 "\n"
1312 " (signature vec4\n"
1313 " (parameters\n"
1314 " (declare (in) vec4 arg0)\n"
1315 " (declare (in) vec4 arg1)\n"
1316 " (declare (in) vec4 arg2))\n"
1317 " ((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 -07001318 "\n"
1319 " (signature vec2\n"
1320 " (parameters\n"
1321 " (declare (in) vec2 arg0)\n"
1322 " (declare (in) vec2 arg1)\n"
1323 " (declare (in) float arg2))\n"
Eric Anholte65dfa82010-07-22 14:25:26 -07001324 " ((return (expression vec2 + (expression vec2 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec2 * (var_ref arg1) (var_ref arg2))))))\n"
Eric Anholtf03acfc2010-05-19 13:05:01 -07001325 "\n"
1326 " (signature vec3\n"
1327 " (parameters\n"
1328 " (declare (in) vec3 arg0)\n"
1329 " (declare (in) vec3 arg1)\n"
1330 " (declare (in) float arg2))\n"
Eric Anholte65dfa82010-07-22 14:25:26 -07001331 " ((return (expression vec3 + (expression vec3 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec3 * (var_ref arg1) (var_ref arg2))))))\n"
Eric Anholtf03acfc2010-05-19 13:05:01 -07001332 "\n"
1333 " (signature vec4\n"
1334 " (parameters\n"
1335 " (declare (in) vec4 arg0)\n"
1336 " (declare (in) vec4 arg1)\n"
1337 " (declare (in) float arg2))\n"
Eric Anholte65dfa82010-07-22 14:25:26 -07001338 " ((return (expression vec4 + (expression vec4 * (var_ref arg0) (expression float - (constant float (1.000000)) (var_ref arg2))) (expression vec4 * (var_ref arg1) (var_ref arg2))))))\n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001339 "))\n"
1340};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001341
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001342static const char *builtins_110_mod = {
1343 "((function mod\n"
1344 " (signature float\n"
1345 " (parameters\n"
1346 " (declare (in) float arg0)\n"
1347 " (declare (in) float arg1))\n"
1348 " ((return (expression float % (var_ref arg0) (var_ref arg1)))))\n"
1349 "\n"
1350 " (signature vec2\n"
1351 " (parameters\n"
1352 " (declare (in) vec2 arg0)\n"
1353 " (declare (in) vec2 arg1))\n"
1354 " ((return (expression vec2 % (var_ref arg0) (var_ref arg1)))))\n"
1355 "\n"
1356 " (signature vec3\n"
1357 " (parameters\n"
1358 " (declare (in) vec3 arg0)\n"
1359 " (declare (in) vec3 arg1))\n"
1360 " ((return (expression vec3 % (var_ref arg0) (var_ref arg1)))))\n"
1361 "\n"
1362 " (signature vec4\n"
1363 " (parameters\n"
1364 " (declare (in) vec4 arg0)\n"
1365 " (declare (in) vec4 arg1))\n"
1366 " ((return (expression vec4 % (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke2438f642010-06-09 12:58:42 -07001367 "\n"
1368 " (signature vec2\n"
1369 " (parameters\n"
1370 " (declare (in) vec2 arg0)\n"
1371 " (declare (in) float arg1))\n"
Kenneth Graunke0a715272010-07-21 17:33:57 -07001372 " ((return (expression vec2 % (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke2438f642010-06-09 12:58:42 -07001373 "\n"
1374 " (signature vec3\n"
1375 " (parameters\n"
1376 " (declare (in) vec3 arg0)\n"
1377 " (declare (in) float arg1))\n"
Kenneth Graunke0a715272010-07-21 17:33:57 -07001378 " ((return (expression vec3 % (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunke2438f642010-06-09 12:58:42 -07001379 "\n"
1380 " (signature vec4\n"
1381 " (parameters\n"
1382 " (declare (in) vec4 arg0)\n"
1383 " (declare (in) float arg1))\n"
Kenneth Graunke0a715272010-07-21 17:33:57 -07001384 " ((return (expression vec4 % (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001385 "))\n"
1386};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001387
Kenneth Graunkec476ba82010-06-09 14:06:56 -07001388static const char *builtins_110_noise_fake = {
1389 "((function noise1\n"
1390 " (signature float\n"
1391 " (parameters\n"
1392 " (declare (in) float x))\n"
1393 " ((return (constant float (0)))))\n"
1394 " (signature float\n"
1395 " (parameters\n"
1396 " (declare (in) vec2 x))\n"
1397 " ((return (constant float (0)))))\n"
1398 " (signature float\n"
1399 " (parameters\n"
1400 " (declare (in) vec3 x))\n"
1401 " ((return (constant float (0)))))\n"
1402 " (signature float\n"
1403 " (parameters\n"
1404 " (declare (in) vec4 x))\n"
1405 " ((return (constant float (0)))))\n"
1406 " )\n"
1407 "\n"
1408 " (function noise2\n"
1409 " (signature vec2\n"
1410 " (parameters\n"
1411 " (declare (in) float x))\n"
1412 " ((return (constant vec2 (0 0)))))\n"
1413 " (signature vec2\n"
1414 " (parameters\n"
1415 " (declare (in) vec2 x))\n"
1416 " ((return (constant vec2 (0 0)))))\n"
1417 " (signature vec2\n"
1418 " (parameters\n"
1419 " (declare (in) vec3 x))\n"
1420 " ((return (constant vec2 (0 0)))))\n"
1421 " (signature vec2\n"
1422 " (parameters\n"
1423 " (declare (in) vec4 x))\n"
1424 " ((return (constant vec2 (0 0)))))\n"
1425 " )\n"
1426 "\n"
1427 " (function noise3\n"
1428 " (signature vec3\n"
1429 " (parameters\n"
1430 " (declare (in) float x))\n"
1431 " ((return (constant vec3 (0 0 0)))))\n"
1432 " (signature vec3\n"
1433 " (parameters\n"
1434 " (declare (in) vec2 x))\n"
1435 " ((return (constant vec3 (0 0 0)))))\n"
1436 " (signature vec3\n"
1437 " (parameters\n"
1438 " (declare (in) vec3 x))\n"
1439 " ((return (constant vec3 (0 0 0)))))\n"
1440 " (signature vec3\n"
1441 " (parameters\n"
1442 " (declare (in) vec4 x))\n"
1443 " ((return (constant vec3 (0 0 0)))))\n"
1444 " )\n"
1445 "\n"
1446 " (function noise4\n"
1447 " (signature vec4\n"
1448 " (parameters\n"
1449 " (declare (in) float x))\n"
1450 " ((return (constant vec4 (0 0 0 0)))))\n"
1451 " (signature vec4\n"
1452 " (parameters\n"
1453 " (declare (in) vec2 x))\n"
1454 " ((return (constant vec4 (0 0 0 0)))))\n"
1455 " (signature vec4\n"
1456 " (parameters\n"
1457 " (declare (in) vec3 x))\n"
1458 " ((return (constant vec4 (0 0 0 0)))))\n"
1459 " (signature vec4\n"
1460 " (parameters\n"
1461 " (declare (in) vec4 x))\n"
1462 " ((return (constant vec4 (0 0 0 0)))))\n"
1463 " )\n"
1464 ")\n"
1465};
1466
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001467static const char *builtins_110_normalize = {
1468 "((function normalize\n"
1469 " (signature float\n"
1470 " (parameters\n"
1471 " (declare (in) float arg0))\n"
1472 " ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1473 "\n"
1474 " (signature vec2\n"
1475 " (parameters\n"
1476 " (declare (in) vec2 arg0))\n"
1477 " ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1478 "\n"
1479 " (signature vec3\n"
1480 " (parameters\n"
1481 " (declare (in) vec3 arg0))\n"
1482 " ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1483 "\n"
1484 " (signature vec4\n"
1485 " (parameters\n"
1486 " (declare (in) vec4 arg0))\n"
1487 " ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
1488 "))\n"
1489};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001490
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001491static const char *builtins_110_not = {
1492 "((function not\n"
1493 " (signature bvec2\n"
1494 " (parameters\n"
1495 " (declare (in) bvec2 arg0))\n"
1496 " ((return (expression bvec2 ! (var_ref arg0)))))\n"
1497 "\n"
1498 " (signature bvec3\n"
1499 " (parameters\n"
1500 " (declare (in) bvec3 arg0))\n"
1501 " ((return (expression bvec3 ! (var_ref arg0)))))\n"
1502 "\n"
1503 " (signature bvec4\n"
1504 " (parameters\n"
1505 " (declare (in) bvec4 arg0))\n"
1506 " ((return (expression bvec4 ! (var_ref arg0)))))\n"
1507 "))\n"
1508};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001509
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001510static const char *builtins_110_notEqual = {
1511 "((function notEqual\n"
1512 " (signature bvec2\n"
1513 " (parameters\n"
1514 " (declare (in) vec2 arg0)\n"
1515 " (declare (in) vec2 arg1))\n"
1516 " ((declare () bvec2 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001517 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1518 " (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 -07001519 " (return (var_ref temp))))\n"
1520 "\n"
1521 " (signature bvec3\n"
1522 " (parameters\n"
1523 " (declare (in) vec3 arg0)\n"
1524 " (declare (in) vec3 arg1))\n"
1525 " ((declare () bvec3 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001526 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1527 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
1528 " (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 -07001529 " (return (var_ref temp))))\n"
1530 "\n"
1531 " (signature bvec4\n"
1532 " (parameters\n"
1533 " (declare (in) vec4 arg0)\n"
1534 " (declare (in) vec4 arg1))\n"
1535 " ((declare () bvec4 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001536 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1537 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
1538 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
1539 " (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 -07001540 " (return (var_ref temp))))\n"
1541 "\n"
1542 " (signature bvec2\n"
1543 " (parameters\n"
1544 " (declare (in) ivec2 arg0)\n"
1545 " (declare (in) ivec2 arg1))\n"
1546 " ((declare () bvec2 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001547 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1548 " (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 -07001549 " (return (var_ref temp))))\n"
1550 "\n"
1551 " (signature bvec3\n"
1552 " (parameters\n"
1553 " (declare (in) ivec3 arg0)\n"
1554 " (declare (in) ivec3 arg1))\n"
1555 " ((declare () bvec3 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001556 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1557 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
1558 " (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 -07001559 " (return (var_ref temp))))\n"
1560 "\n"
1561 " (signature bvec4\n"
1562 " (parameters\n"
1563 " (declare (in) ivec4 arg0)\n"
1564 " (declare (in) ivec4 arg1))\n"
1565 " ((declare () bvec4 temp)\n"
Eric Anholt117d1542010-07-20 11:56:48 -07001566 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1))))\n"
1567 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1))))\n"
1568 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1))))\n"
1569 " (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 -07001570 " (return (var_ref temp))))\n"
1571 "))\n"
1572};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001573
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001574static const char *builtins_110_pow = {
1575 "((function pow\n"
1576 " (signature float\n"
1577 " (parameters\n"
1578 " (declare (in) float arg0)\n"
1579 " (declare (in) float arg1))\n"
1580 " ((return (expression float pow (var_ref arg0) (var_ref arg1)))))\n"
1581 "\n"
1582 " (signature vec2\n"
1583 " (parameters\n"
1584 " (declare (in) vec2 arg0)\n"
1585 " (declare (in) vec2 arg1))\n"
1586 " ((return (expression vec2 pow (var_ref arg0) (var_ref arg1)))))\n"
1587 "\n"
1588 " (signature vec3\n"
1589 " (parameters\n"
1590 " (declare (in) vec3 arg0)\n"
1591 " (declare (in) vec3 arg1))\n"
1592 " ((return (expression vec3 pow (var_ref arg0) (var_ref arg1)))))\n"
1593 "\n"
1594 " (signature vec4\n"
1595 " (parameters\n"
1596 " (declare (in) vec4 arg0)\n"
1597 " (declare (in) vec4 arg1))\n"
1598 " ((return (expression vec4 pow (var_ref arg0) (var_ref arg1)))))\n"
1599 "))\n"
1600};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001601
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001602static const char *builtins_110_radians = {
1603 "((function radians\n"
1604 " (signature float\n"
1605 " (parameters\n"
1606 " (declare (in) float arg0))\n"
1607 " ((return (expression float * (var_ref arg0) (constant float (0.017453))))))\n"
1608 "\n"
1609 " (signature vec2\n"
1610 " (parameters\n"
1611 " (declare (in) vec2 arg0))\n"
1612 " ((return (expression vec2 * (var_ref arg0) (constant float (0.017453))))))\n"
1613 "\n"
1614 " (signature vec3\n"
1615 " (parameters\n"
1616 " (declare (in) vec3 arg0))\n"
1617 " ((return (expression vec3 * (var_ref arg0) (constant float (0.017453))))))\n"
1618 "\n"
1619 " (signature vec4\n"
1620 " (parameters\n"
1621 " (declare (in) vec4 arg0))\n"
1622 " ((return (expression vec4 * (var_ref arg0) (constant float (0.017453))))))\n"
1623 "))\n"
1624};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001625
Eric Anholt5b9ac872010-05-19 14:01:33 -07001626static const char *builtins_110_reflect = {
1627 "((function reflect\n"
1628 " (signature float\n"
1629 " (parameters\n"
1630 " (declare (in) float i)\n"
1631 " (declare (in) float n))\n"
1632 " ((return (expression float -\n"
1633 " (var_ref i)\n"
1634 " (expression float *\n"
1635 " (constant float (2.0))\n"
1636 " (expression float *\n"
1637 " (expression float dot\n"
1638 " (var_ref n)\n"
1639 " (var_ref i))\n"
1640 " (var_ref n)))))))\n"
1641 "\n"
1642 " (signature vec2\n"
1643 " (parameters\n"
1644 " (declare (in) vec2 i)\n"
1645 " (declare (in) vec2 n))\n"
1646 " ((return (expression vec2 -\n"
1647 " (var_ref i)\n"
1648 " (expression vec2 *\n"
1649 " (constant float (2.0))\n"
1650 " (expression vec2 *\n"
1651 " (expression float dot\n"
1652 " (var_ref n)\n"
1653 " (var_ref i))\n"
1654 " (var_ref n)))))))\n"
1655 "\n"
1656 " (signature vec3\n"
1657 " (parameters\n"
1658 " (declare (in) vec3 i)\n"
1659 " (declare (in) vec3 n))\n"
1660 " ((return (expression vec3 -\n"
1661 " (var_ref i)\n"
1662 " (expression vec3 *\n"
1663 " (constant float (2.0))\n"
1664 " (expression vec3 *\n"
1665 " (expression float dot\n"
1666 " (var_ref n)\n"
1667 " (var_ref i))\n"
1668 " (var_ref n)))))))\n"
1669 "\n"
1670 " (signature vec4\n"
1671 " (parameters\n"
1672 " (declare (in) vec4 i)\n"
1673 " (declare (in) vec4 n))\n"
1674 " ((return (expression vec4 -\n"
1675 " (var_ref i)\n"
1676 " (expression vec4 *\n"
1677 " (constant float (2.0))\n"
1678 " (expression vec4 *\n"
1679 " (expression float dot\n"
1680 " (var_ref n)\n"
1681 " (var_ref i))\n"
1682 " (var_ref n)))))))\n"
1683 "\n"
1684 "))\n"
1685};
1686
Kenneth Graunkecbd881d2010-06-09 14:30:52 -07001687static const char *builtins_110_refract = {
1688 "((function refract\n"
1689 " (signature float\n"
1690 " (parameters\n"
1691 " (declare (in) float i)\n"
1692 " (declare (in) float n)\n"
1693 " (declare (in) float eta))\n"
1694 " ((declare () float k)\n"
1695 " (assign (constant bool (1)) (var_ref k)\n"
1696 " (expression float - (constant float (1.0))\n"
1697 " (expression float * (var_ref eta)\n"
1698 " (expression float * (var_ref eta)\n"
1699 " (expression float - (constant float (1.0))\n"
1700 " (expression float * \n"
1701 " (expression float dot (var_ref n) (var_ref i))\n"
1702 " (expression float dot (var_ref n) (var_ref i))))))))\n"
1703 " (if (expression bool < (var_ref k) (constant float (0.0)))\n"
1704 " ((return (constant float (0.0))))\n"
1705 " ((return (expression float -\n"
1706 " (expression float * (var_ref eta) (var_ref i))\n"
1707 " (expression float *\n"
1708 " (expression float +\n"
1709 " (expression float * (var_ref eta)\n"
1710 " (expression float dot (var_ref n) (var_ref i)))\n"
1711 " (expression float sqrt (var_ref k)))\n"
1712 " (var_ref n))))))))\n"
1713 "\n"
1714 " (signature vec2\n"
1715 " (parameters\n"
1716 " (declare (in) vec2 i)\n"
1717 " (declare (in) vec2 n)\n"
1718 " (declare (in) float eta))\n"
1719 " ((declare () float k)\n"
1720 " (assign (constant bool (1)) (var_ref k)\n"
1721 " (expression float - (constant float (1.0))\n"
1722 " (expression float * (var_ref eta)\n"
1723 " (expression float * (var_ref eta)\n"
1724 " (expression float - (constant float (1.0))\n"
1725 " (expression float * \n"
1726 " (expression float dot (var_ref n) (var_ref i))\n"
1727 " (expression float dot (var_ref n) (var_ref i))))))))\n"
1728 " (if (expression bool < (var_ref k) (constant float (0.0)))\n"
1729 " ((return (constant vec2 (0.0 0.0))))\n"
1730 " ((return (expression vec2 -\n"
1731 " (expression vec2 * (var_ref eta) (var_ref i))\n"
1732 " (expression vec2 *\n"
1733 " (expression float +\n"
1734 " (expression float * (var_ref eta)\n"
1735 " (expression float dot (var_ref n) (var_ref i)))\n"
1736 " (expression float sqrt (var_ref k)))\n"
1737 " (var_ref n))))))))\n"
1738 "\n"
1739 " (signature vec3\n"
1740 " (parameters\n"
1741 " (declare (in) vec3 i)\n"
1742 " (declare (in) vec3 n)\n"
1743 " (declare (in) float eta))\n"
1744 " ((declare () float k)\n"
1745 " (assign (constant bool (1)) (var_ref k)\n"
1746 " (expression float - (constant float (1.0))\n"
1747 " (expression float * (var_ref eta)\n"
1748 " (expression float * (var_ref eta)\n"
1749 " (expression float - (constant float (1.0))\n"
1750 " (expression float * \n"
1751 " (expression float dot (var_ref n) (var_ref i))\n"
1752 " (expression float dot (var_ref n) (var_ref i))))))))\n"
1753 " (if (expression bool < (var_ref k) (constant float (0.0)))\n"
Eric Anholt0b74bbb2010-07-07 14:53:43 -07001754 " ((return (constant vec3 (0.0 0.0 0.0))))\n"
Kenneth Graunkecbd881d2010-06-09 14:30:52 -07001755 " ((return (expression vec3 -\n"
1756 " (expression vec3 * (var_ref eta) (var_ref i))\n"
1757 " (expression vec3 *\n"
1758 " (expression float +\n"
1759 " (expression float * (var_ref eta)\n"
1760 " (expression float dot (var_ref n) (var_ref i)))\n"
1761 " (expression float sqrt (var_ref k)))\n"
1762 " (var_ref n))))))))\n"
1763 "\n"
1764 " (signature vec4\n"
1765 " (parameters\n"
1766 " (declare (in) vec4 i)\n"
1767 " (declare (in) vec4 n)\n"
1768 " (declare (in) float eta))\n"
1769 " ((declare () float k)\n"
1770 " (assign (constant bool (1)) (var_ref k)\n"
1771 " (expression float - (constant float (1.0))\n"
1772 " (expression float * (var_ref eta)\n"
1773 " (expression float * (var_ref eta)\n"
1774 " (expression float - (constant float (1.0))\n"
1775 " (expression float * \n"
1776 " (expression float dot (var_ref n) (var_ref i))\n"
1777 " (expression float dot (var_ref n) (var_ref i))))))))\n"
1778 " (if (expression bool < (var_ref k) (constant float (0.0)))\n"
Eric Anholt0b74bbb2010-07-07 14:53:43 -07001779 " ((return (constant vec4 (0.0 0.0 0.0 0.0))))\n"
Kenneth Graunkecbd881d2010-06-09 14:30:52 -07001780 " ((return (expression vec4 -\n"
1781 " (expression vec4 * (var_ref eta) (var_ref i))\n"
1782 " (expression vec4 *\n"
1783 " (expression float +\n"
1784 " (expression float * (var_ref eta)\n"
1785 " (expression float dot (var_ref n) (var_ref i)))\n"
1786 " (expression float sqrt (var_ref k)))\n"
1787 " (var_ref n))))))))\n"
1788 "\n"
1789 "))\n"
1790};
1791
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001792static const char *builtins_110_sign = {
1793 "((function sign\n"
1794 " (signature float\n"
1795 " (parameters\n"
1796 " (declare (in) float x))\n"
1797 " ((return (expression float sign (var_ref x)))))\n"
1798 "\n"
1799 " (signature vec2\n"
1800 " (parameters\n"
1801 " (declare (in) vec2 x))\n"
Eric Anholtf5b3b2a2010-06-30 17:25:09 -07001802 " ((return (expression vec2 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001803 "\n"
1804 " (signature vec3\n"
1805 " (parameters\n"
1806 " (declare (in) vec3 x))\n"
Eric Anholtf5b3b2a2010-06-30 17:25:09 -07001807 " ((return (expression vec3 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001808 "\n"
1809 " (signature vec4\n"
1810 " (parameters\n"
1811 " (declare (in) vec4 x))\n"
Eric Anholtf5b3b2a2010-06-30 17:25:09 -07001812 " ((return (expression vec4 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001813 "))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001814};
1815
1816static const char *builtins_110_sin = {
1817 "((function sin\n"
1818 " (signature float\n"
1819 " (parameters\n"
1820 " (declare (in) float angle))\n"
1821 " ((return (expression float sin (var_ref angle)))))\n"
1822 "\n"
1823 " (signature vec2\n"
1824 " (parameters\n"
1825 " (declare (in) vec2 angle))\n"
1826 " ((return (expression vec2 sin (var_ref angle)))))\n"
1827 "\n"
1828 " (signature vec3\n"
1829 " (parameters\n"
1830 " (declare (in) vec3 angle))\n"
1831 " ((return (expression vec3 sin (var_ref angle)))))\n"
1832 "\n"
1833 " (signature vec4\n"
1834 " (parameters\n"
1835 " (declare (in) vec4 angle))\n"
1836 " ((return (expression vec4 sin (var_ref angle)))))\n"
1837 "))\n"
1838};
1839
1840static const char *builtins_110_smoothstep = {
1841 "((function smoothstep\n"
1842 " (signature float\n"
1843 " (parameters\n"
1844 " (declare (in) float edge0)\n"
1845 " (declare (in) float edge1)\n"
1846 " (declare (in) float x))\n"
1847 " ((declare () float t)\n"
1848 "\n"
1849 " (assign (constant bool (1)) (var_ref t)\n"
1850 " (expression float max\n"
1851 " (expression float min\n"
1852 " (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1853 " (constant float (1.0)))\n"
1854 " (constant float (0.0))))\n"
1855 " (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"
1856 "\n"
1857 " (signature vec2\n"
1858 " (parameters\n"
1859 " (declare (in) float edge0)\n"
1860 " (declare (in) float edge1)\n"
1861 " (declare (in) vec2 x))\n"
1862 " ((declare () vec2 t)\n"
1863 " (declare () vec2 retval)\n"
1864 "\n"
1865 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1866 " (expression float max\n"
1867 " (expression float min\n"
1868 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1869 " (constant float (1.0)))\n"
1870 " (constant float (0.0))))\n"
1871 " (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"
1872 "\n"
1873 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1874 " (expression float max\n"
1875 " (expression float min\n"
1876 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1877 " (constant float (1.0)))\n"
1878 " (constant float (0.0))))\n"
1879 " (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"
1880 " (return (var_ref retval))\n"
1881 " ))\n"
1882 "\n"
1883 " (signature vec3\n"
1884 " (parameters\n"
1885 " (declare (in) float edge0)\n"
1886 " (declare (in) float edge1)\n"
1887 " (declare (in) vec3 x))\n"
1888 " ((declare () vec3 t)\n"
1889 " (declare () vec3 retval)\n"
1890 "\n"
1891 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1892 " (expression float max\n"
1893 " (expression float min\n"
1894 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1895 " (constant float (1.0)))\n"
1896 " (constant float (0.0))))\n"
1897 " (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"
1898 "\n"
1899 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1900 " (expression float max\n"
1901 " (expression float min\n"
1902 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1903 " (constant float (1.0)))\n"
1904 " (constant float (0.0))))\n"
1905 " (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"
1906 "\n"
1907 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1908 " (expression float max\n"
1909 " (expression float min\n"
1910 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1911 " (constant float (1.0)))\n"
1912 " (constant float (0.0))))\n"
1913 " (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"
1914 " (return (var_ref retval))\n"
1915 " ))\n"
1916 "\n"
1917 "\n"
1918 " (signature vec4\n"
1919 " (parameters\n"
1920 " (declare (in) float edge0)\n"
1921 " (declare (in) float edge1)\n"
1922 " (declare (in) vec4 x))\n"
1923 " ((declare () vec4 t)\n"
1924 " (declare () vec4 retval)\n"
1925 "\n"
1926 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1927 " (expression float max\n"
1928 " (expression float min\n"
1929 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1930 " (constant float (1.0)))\n"
1931 " (constant float (0.0))))\n"
1932 " (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"
1933 "\n"
1934 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1935 " (expression float max\n"
1936 " (expression float min\n"
1937 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1938 " (constant float (1.0)))\n"
1939 " (constant float (0.0))))\n"
1940 " (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"
1941 "\n"
1942 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1943 " (expression float max\n"
1944 " (expression float min\n"
1945 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1946 " (constant float (1.0)))\n"
1947 " (constant float (0.0))))\n"
1948 " (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"
1949 "\n"
1950 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1951 " (expression float max\n"
1952 " (expression float min\n"
1953 " (expression float / (expression float - (swiz w (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1954 " (constant float (1.0)))\n"
1955 " (constant float (0.0))))\n"
1956 " (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"
1957 " (return (var_ref retval))\n"
1958 " ))\n"
1959 "\n"
1960 " (signature vec2\n"
1961 " (parameters\n"
1962 " (declare (in) vec2 edge0)\n"
1963 " (declare (in) vec2 edge1)\n"
1964 " (declare (in) vec2 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07001965 " ((return (expression vec2 max\n"
1966 " (expression vec2 min\n"
1967 " (expression vec2 / (expression vec2 - (var_ref x) (var_ref edge0)) (expression vec2 - (var_ref edge1) (var_ref edge0)))\n"
1968 " (constant vec2 (1.0 1.0)))\n"
1969 " (constant vec2 (0.0 0.0))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001970 "\n"
1971 " (signature vec3\n"
1972 " (parameters\n"
1973 " (declare (in) vec3 edge0)\n"
1974 " (declare (in) vec3 edge1)\n"
1975 " (declare (in) vec3 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07001976 " ((return (expression vec3 max\n"
1977 " (expression vec3 min\n"
1978 " (expression vec3 / (expression vec3 - (var_ref x) (var_ref edge0)) (expression vec3 - (var_ref edge1) (var_ref edge0)))\n"
1979 " (constant vec3 (1.0 1.0 1.0)))\n"
1980 " (constant vec3 (0.0 0.0 0.0))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001981 "\n"
1982 " (signature vec4\n"
1983 " (parameters\n"
1984 " (declare (in) vec4 edge0)\n"
1985 " (declare (in) vec4 edge1)\n"
1986 " (declare (in) vec4 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07001987 " ((return (expression vec4 max\n"
1988 " (expression vec4 min\n"
1989 " (expression vec4 / (expression vec4 - (var_ref x) (var_ref edge0)) (expression vec4 - (var_ref edge1) (var_ref edge0)))\n"
1990 " (constant vec4 (1.0 1.0 1.0 1.0)))\n"
1991 " (constant vec4 (0.0 0.0 0.0 0.0))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001992 "))\n"
1993 "\n"
1994};
1995
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001996static const char *builtins_110_sqrt = {
1997 "((function sqrt\n"
1998 " (signature float\n"
1999 " (parameters\n"
2000 " (declare (in) float arg0))\n"
2001 " ((return (expression float sqrt (var_ref arg0)))))\n"
2002 "\n"
2003 " (signature vec2\n"
2004 " (parameters\n"
2005 " (declare (in) vec2 arg0))\n"
2006 " ((return (expression vec2 sqrt (var_ref arg0)))))\n"
2007 "\n"
2008 " (signature vec3\n"
2009 " (parameters\n"
2010 " (declare (in) vec3 arg0))\n"
2011 " ((return (expression vec3 sqrt (var_ref arg0)))))\n"
2012 "\n"
2013 " (signature vec4\n"
2014 " (parameters\n"
2015 " (declare (in) vec4 arg0))\n"
2016 " ((return (expression vec4 sqrt (var_ref arg0)))))\n"
2017 "))\n"
2018};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07002019
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002020static const char *builtins_110_step = {
2021 "((function step\n"
2022 " (signature float\n"
2023 " (parameters\n"
2024 " (declare (in) float edge)\n"
2025 " (declare (in) float x))\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002026 " ((return (expression float b2f (expression bool >= (var_ref x) (var_ref edge))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002027 "\n"
2028 " (signature vec2\n"
2029 " (parameters\n"
2030 " (declare (in) float edge)\n"
2031 " (declare (in) vec2 x))\n"
2032 " ((declare () vec2 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002033 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge))))\n"
2034 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002035 " (return (var_ref t))))\n"
2036 "\n"
2037 " (signature vec3\n"
2038 " (parameters\n"
2039 " (declare (in) float edge)\n"
2040 " (declare (in) vec3 x))\n"
2041 " ((declare () vec3 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002042 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge))))\n"
2043 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge))))\n"
2044 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool >= (swiz z (var_ref x))(var_ref edge))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002045 " (return (var_ref t))))\n"
2046 "\n"
2047 " (signature vec4\n"
2048 " (parameters\n"
2049 " (declare (in) float edge)\n"
2050 " (declare (in) vec4 x))\n"
2051 " ((declare () vec4 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002052 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool >= (swiz x (var_ref x))(var_ref edge))))\n"
2053 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool >= (swiz y (var_ref x))(var_ref edge))))\n"
2054 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool >= (swiz z (var_ref x))(var_ref edge))))\n"
2055 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool >= (swiz w (var_ref x))(var_ref edge))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002056 " (return (var_ref t))))\n"
2057 "\n"
2058 " (signature vec2\n"
2059 " (parameters\n"
2060 " (declare (in) vec2 edge)\n"
2061 " (declare (in) vec2 x))\n"
2062 " ((declare () vec2 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002063 " (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"
2064 " (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"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002065 " (return (var_ref t))))\n"
2066 "\n"
2067 " (signature vec3\n"
2068 " (parameters\n"
2069 " (declare (in) vec3 edge)\n"
2070 " (declare (in) vec3 x))\n"
2071 " ((declare () vec3 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002072 " (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"
2073 " (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"
2074 " (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"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002075 " (return (var_ref t))))\n"
2076 "\n"
2077 " (signature vec4\n"
2078 " (parameters\n"
2079 " (declare (in) vec4 edge)\n"
2080 " (declare (in) vec4 x))\n"
2081 " ((declare () vec4 t)\n"
Eric Anholt02d61532010-06-30 16:22:52 -07002082 " (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"
2083 " (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"
2084 " (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"
2085 " (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"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002086 " (return (var_ref t))))\n"
2087 "))\n"
2088 "\n"
2089};
2090
2091static const char *builtins_110_tan = {
2092 "((function tan\n"
2093 " (signature float\n"
2094 " (parameters\n"
2095 " (declare (in) float angle))\n"
2096 " ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle))))))\n"
2097 "\n"
2098 " (signature vec2\n"
2099 " (parameters\n"
2100 " (declare (in) vec2 angle))\n"
Eric Anholteb7e1202010-08-02 12:28:38 -07002101 " ((return (expression vec2 / (expression vec2 sin (var_ref angle)) (expression vec2 cos (var_ref angle))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002102 "\n"
2103 " (signature vec3\n"
2104 " (parameters\n"
2105 " (declare (in) vec3 angle))\n"
Eric Anholteb7e1202010-08-02 12:28:38 -07002106 " ((return (expression vec3 / (expression vec3 sin (var_ref angle)) (expression vec3 cos (var_ref angle))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002107 "\n"
2108 " (signature vec4\n"
2109 " (parameters\n"
2110 " (declare (in) vec4 angle))\n"
Eric Anholteb7e1202010-08-02 12:28:38 -07002111 " ((return (expression vec4 / (expression vec4 sin (var_ref angle)) (expression vec4 cos (var_ref angle))))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002112 "))\n"
2113};
2114
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002115static const char *builtins_110_textures = {
2116 "((function texture1D\n"
2117 " (signature vec4\n"
2118 " (parameters\n"
2119 " (declare (in) sampler1D sampler)\n"
2120 " (declare (in) float P) )\n"
2121 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
2122 "\n"
2123 ")\n"
2124 " (function texture1DLod\n"
2125 " (signature vec4\n"
2126 " (parameters\n"
2127 " (declare (in) sampler1D sampler)\n"
2128 " (declare (in) float P) \n"
2129 " (declare (in) float lod) )\n"
2130 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
2131 "\n"
2132 ")\n"
2133 " (function texture1DProj\n"
2134 " (signature vec4\n"
2135 " (parameters\n"
2136 " (declare (in) sampler1D sampler)\n"
2137 " (declare (in) vec2 P) )\n"
2138 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
2139 "\n"
2140 " (signature vec4\n"
2141 " (parameters\n"
2142 " (declare (in) sampler1D sampler)\n"
2143 " (declare (in) vec4 P) )\n"
2144 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
2145 "\n"
2146 ")\n"
2147 " (function texture1DProjLod\n"
2148 " (signature vec4\n"
2149 " (parameters\n"
2150 " (declare (in) sampler1D sampler)\n"
2151 " (declare (in) vec2 P) \n"
2152 " (declare (in) float lod) )\n"
2153 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
2154 "\n"
2155 " (signature vec4\n"
2156 " (parameters\n"
2157 " (declare (in) sampler1D sampler)\n"
2158 " (declare (in) vec4 P) \n"
2159 " (declare (in) float lod) )\n"
2160 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
2161 "\n"
2162 ")\n"
2163 " (function texture2D\n"
2164 " (signature vec4\n"
2165 " (parameters\n"
2166 " (declare (in) sampler2D sampler)\n"
2167 " (declare (in) vec2 P) )\n"
2168 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
2169 "\n"
2170 ")\n"
2171 "(function texture2DLod\n"
2172 " (signature vec4\n"
2173 " (parameters\n"
2174 " (declare (in) sampler2D sampler)\n"
2175 " (declare (in) vec2 P) \n"
2176 " (declare (in) float lod) )\n"
2177 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
2178 "\n"
2179 ")\n"
2180 " (function texture2DProj\n"
2181 " (signature vec4\n"
2182 " (parameters\n"
2183 " (declare (in) sampler2D sampler)\n"
2184 " (declare (in) vec3 P) )\n"
2185 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
2186 "\n"
2187 " (signature vec4\n"
2188 " (parameters\n"
2189 " (declare (in) sampler2D sampler)\n"
2190 " (declare (in) vec4 P) )\n"
2191 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
2192 "\n"
2193 ")\n"
2194 " (function texture2DProjLod\n"
2195 " (signature vec4\n"
2196 " (parameters\n"
2197 " (declare (in) sampler2D sampler)\n"
2198 " (declare (in) vec3 P) \n"
2199 " (declare (in) float lod) )\n"
2200 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
2201 "\n"
2202 " (signature vec4\n"
2203 " (parameters\n"
2204 " (declare (in) sampler2D sampler)\n"
2205 " (declare (in) vec4 P) \n"
2206 " (declare (in) float lod) )\n"
2207 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
2208 "\n"
2209 ")\n"
2210 " (function texture3D\n"
2211 " (signature vec4\n"
2212 " (parameters\n"
2213 " (declare (in) sampler3D sampler)\n"
2214 " (declare (in) vec3 P) )\n"
2215 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
2216 "\n"
2217 ")\n"
2218 " (function texture3DLod\n"
2219 " (signature vec4\n"
2220 " (parameters\n"
2221 " (declare (in) sampler3D sampler)\n"
2222 " (declare (in) vec3 P) \n"
2223 " (declare (in) float lod) )\n"
2224 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
2225 "\n"
2226 ")\n"
2227 " (function texture3DProj\n"
2228 " (signature vec4\n"
2229 " (parameters\n"
2230 " (declare (in) sampler3D sampler)\n"
2231 " (declare (in) vec4 P) )\n"
2232 " ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
2233 "\n"
2234 ")\n"
2235 " (function texture3DProjLod\n"
2236 " (signature vec4\n"
2237 " (parameters\n"
2238 " (declare (in) sampler3D sampler)\n"
2239 " (declare (in) vec4 P) \n"
2240 " (declare (in) float lod) )\n"
2241 " ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
2242 "\n"
2243 ")\n"
2244 " (function textureCube\n"
2245 " (signature vec4\n"
2246 " (parameters\n"
2247 " (declare (in) samplerCube sampler)\n"
2248 " (declare (in) vec3 P) )\n"
2249 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
2250 "\n"
2251 ")\n"
2252 " (function textureCubeLod\n"
2253 " (signature vec4\n"
2254 " (parameters\n"
2255 " (declare (in) samplerCube sampler)\n"
2256 " (declare (in) vec3 P) \n"
2257 " (declare (in) float lod) )\n"
2258 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
2259 "\n"
2260 ")\n"
2261 " (function shadow1D\n"
2262 " (signature vec4\n"
2263 " (parameters\n"
2264 " (declare (in) sampler1DShadow sampler)\n"
2265 " (declare (in) vec3 P) )\n"
2266 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
2267 "\n"
2268 ")\n"
2269 " (function shadow1DLod\n"
2270 " (signature vec4\n"
2271 " (parameters\n"
2272 " (declare (in) sampler1DShadow sampler)\n"
2273 " (declare (in) vec3 P) \n"
2274 " (declare (in) float lod) )\n"
2275 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
2276 "\n"
2277 ")\n"
2278 " (function shadow1DProj\n"
2279 " (signature vec4\n"
2280 " (parameters\n"
2281 " (declare (in) sampler1DShadow sampler)\n"
2282 " (declare (in) vec4 P) )\n"
2283 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))\n"
2284 "\n"
2285 ")\n"
2286 " (function shadow1DProjLod\n"
2287 " (signature vec4\n"
2288 " (parameters\n"
2289 " (declare (in) sampler1DShadow sampler)\n"
2290 " (declare (in) vec4 P) \n"
2291 " (declare (in) float lod) )\n"
2292 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) ))))\n"
2293 "\n"
2294 ")\n"
2295 " (function shadow2D\n"
2296 " (signature vec4\n"
2297 " (parameters\n"
2298 " (declare (in) sampler2DShadow sampler)\n"
2299 " (declare (in) vec3 P) )\n"
2300 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
2301 "\n"
2302 ")\n"
2303 " (function shadow2DLod\n"
2304 " (signature vec4\n"
2305 " (parameters\n"
2306 " (declare (in) sampler2DShadow sampler)\n"
2307 " (declare (in) vec3 P) \n"
2308 " (declare (in) float lod) )\n"
2309 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
2310 "\n"
2311 ")\n"
2312 " (function shadow2DProj\n"
2313 " (signature vec4\n"
2314 " (parameters\n"
2315 " (declare (in) sampler2DShadow sampler)\n"
2316 " (declare (in) vec4 P) )\n"
2317 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) ))))\n"
2318 "\n"
2319 ")\n"
2320 " (function shadow2DProjLod\n"
2321 " (signature vec4\n"
2322 " (parameters\n"
2323 " (declare (in) sampler2DShadow sampler)\n"
2324 " (declare (in) vec4 P) \n"
2325 " (declare (in) float lod) )\n"
2326 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref lod) ))))\n"
2327 "\n"
2328 "))\n"
2329};
2330
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002331static const char *functions_for_110 [] = {
2332 builtins_110_abs,
2333 builtins_110_all,
2334 builtins_110_any,
Eric Anholt5e58e542010-05-19 12:19:54 -07002335 builtins_110_asin,
Eric Anholt60fa1a92010-05-19 12:44:23 -07002336 builtins_110_atan,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002337 builtins_110_ceil,
2338 builtins_110_clamp,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002339 builtins_110_cos,
2340 builtins_110_cross,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002341 builtins_110_degrees,
Kenneth Graunke29b22282010-06-09 13:17:00 -07002342 builtins_110_distance,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002343 builtins_110_dot,
2344 builtins_110_equal,
2345 builtins_110_exp,
2346 builtins_110_exp2,
Kenneth Graunke539f2932010-06-09 13:27:16 -07002347 builtins_110_faceforward,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002348 builtins_110_floor,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002349 builtins_110_fract,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002350 builtins_110_greaterThan,
2351 builtins_110_greaterThanEqual,
2352 builtins_110_inversesqrt,
2353 builtins_110_length,
2354 builtins_110_lessThan,
2355 builtins_110_lessThanEqual,
2356 builtins_110_log,
2357 builtins_110_log2,
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07002358 builtins_110_matrixCompMult,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002359 builtins_110_max,
2360 builtins_110_min,
2361 builtins_110_mix,
2362 builtins_110_mod,
Kenneth Graunkec476ba82010-06-09 14:06:56 -07002363 builtins_110_noise_fake,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002364 builtins_110_normalize,
2365 builtins_110_not,
2366 builtins_110_notEqual,
2367 builtins_110_pow,
2368 builtins_110_radians,
Eric Anholt5b9ac872010-05-19 14:01:33 -07002369 builtins_110_reflect,
Kenneth Graunkecbd881d2010-06-09 14:30:52 -07002370 builtins_110_refract,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002371 builtins_110_sign,
2372 builtins_110_sin,
2373 builtins_110_smoothstep,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002374 builtins_110_sqrt,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07002375 builtins_110_step,
2376 builtins_110_tan,
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002377 builtins_110_textures,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07002378};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07002379
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002380/* 110_fs builtins */
2381
Kenneth Graunkeb843c7a2010-06-09 14:42:41 -07002382static const char *builtins_110_fs_derivatives = {
2383 "((function dFdx\n"
2384 " (signature float\n"
2385 " (parameters\n"
2386 " (declare (in) float p))\n"
2387 " ((return (expression float dFdx (var_ref p)))))\n"
2388 "\n"
2389 " (signature vec2\n"
2390 " (parameters\n"
2391 " (declare (in) vec2 p))\n"
2392 " ((return (expression vec2 dFdx (var_ref p)))))\n"
2393 "\n"
2394 " (signature vec3\n"
2395 " (parameters\n"
2396 " (declare (in) vec3 p))\n"
2397 " ((return (expression vec3 dFdx (var_ref p)))))\n"
2398 "\n"
2399 " (signature vec4\n"
2400 " (parameters\n"
2401 " (declare (in) vec4 p))\n"
2402 " ((return (expression vec4 dFdx (var_ref p)))))\n"
2403 " )\n"
2404 "\n"
2405 " (function dFdy\n"
2406 " (signature float\n"
2407 " (parameters\n"
2408 " (declare (in) float p))\n"
2409 " ((return (expression float dFdy (var_ref p)))))\n"
2410 "\n"
2411 " (signature vec2\n"
2412 " (parameters\n"
2413 " (declare (in) vec2 p))\n"
2414 " ((return (expression vec2 dFdy (var_ref p)))))\n"
2415 "\n"
2416 " (signature vec3\n"
2417 " (parameters\n"
2418 " (declare (in) vec3 p))\n"
2419 " ((return (expression vec3 dFdy (var_ref p)))))\n"
2420 "\n"
2421 " (signature vec4\n"
2422 " (parameters\n"
2423 " (declare (in) vec4 p))\n"
2424 " ((return (expression vec4 dFdy (var_ref p)))))\n"
2425 " )\n"
2426 "\n"
2427 " (function fwidth\n"
2428 " (signature float\n"
2429 " (parameters\n"
2430 " (declare (in) float p))\n"
2431 " ((return (expression float +\n"
2432 " (expression float abs (expression float dFdx (var_ref p)))\n"
2433 " (expression float abs (expression float dFdy (var_ref p)))))))\n"
2434 "\n"
2435 " (signature vec2\n"
2436 " (parameters\n"
2437 " (declare (in) vec2 p))\n"
2438 " ((return (expression vec2 +\n"
2439 " (expression vec2 abs (expression vec2 dFdx (var_ref p)))\n"
2440 " (expression vec2 abs (expression vec2 dFdy (var_ref p)))))))\n"
2441 "\n"
2442 " (signature vec3\n"
2443 " (parameters\n"
2444 " (declare (in) vec3 p))\n"
2445 " ((return (expression vec3 +\n"
2446 " (expression vec3 abs (expression vec3 dFdx (var_ref p)))\n"
2447 " (expression vec3 abs (expression vec3 dFdy (var_ref p)))))))\n"
2448 "\n"
2449 " (signature vec4\n"
2450 " (parameters\n"
2451 " (declare (in) vec4 p))\n"
2452 " ((return (expression vec4 +\n"
2453 " (expression vec4 abs (expression vec4 dFdx (var_ref p)))\n"
2454 " (expression vec4 abs (expression vec4 dFdy (var_ref p)))))))\n"
2455 "))\n"
2456};
2457
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002458static const char *builtins_110_fs_textures = {
2459 "((function texture1D\n"
2460 " (signature vec4\n"
2461 " (parameters\n"
2462 " (declare (in) sampler1D sampler)\n"
2463 " (declare (in) float P) \n"
2464 " (declare (in) float bias) )\n"
2465 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
2466 "\n"
2467 ")\n"
2468 " (function texture1DProj\n"
2469 " (signature vec4\n"
2470 " (parameters\n"
2471 " (declare (in) sampler1D sampler)\n"
2472 " (declare (in) vec2 P) \n"
2473 " (declare (in) float bias) )\n"
2474 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
2475 "\n"
2476 " (signature vec4\n"
2477 " (parameters\n"
2478 " (declare (in) sampler1D sampler)\n"
2479 " (declare (in) vec4 P) \n"
2480 " (declare (in) float bias) )\n"
2481 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
2482 "\n"
2483 ")\n"
2484 " (function texture2D\n"
2485 " (signature vec4\n"
2486 " (parameters\n"
2487 " (declare (in) sampler2D sampler)\n"
2488 " (declare (in) vec2 P) \n"
2489 " (declare (in) float bias) )\n"
2490 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
2491 "\n"
2492 ")\n"
2493 " (function texture2DProj\n"
2494 " (signature vec4\n"
2495 " (parameters\n"
2496 " (declare (in) sampler2D sampler)\n"
2497 " (declare (in) vec3 P) \n"
2498 " (declare (in) float bias) )\n"
2499 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
2500 "\n"
2501 " (signature vec4\n"
2502 " (parameters\n"
2503 " (declare (in) sampler2D sampler)\n"
2504 " (declare (in) vec4 P) \n"
2505 " (declare (in) float bias) )\n"
2506 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
2507 "\n"
2508 ")\n"
2509 " (function texture3D\n"
2510 " (signature vec4\n"
2511 " (parameters\n"
2512 " (declare (in) sampler3D sampler)\n"
2513 " (declare (in) vec3 P) \n"
2514 " (declare (in) float bias) )\n"
2515 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
2516 "\n"
2517 ")\n"
2518 " (function texture3DProj\n"
2519 " (signature vec4\n"
2520 " (parameters\n"
2521 " (declare (in) sampler3D sampler)\n"
2522 " (declare (in) vec4 P) \n"
2523 " (declare (in) float bias) )\n"
2524 " ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
2525 "\n"
2526 ")\n"
2527 " (function textureCube\n"
2528 " (signature vec4\n"
2529 " (parameters\n"
2530 " (declare (in) samplerCube sampler)\n"
2531 " (declare (in) vec3 P) \n"
2532 " (declare (in) float bias) )\n"
2533 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
2534 "\n"
2535 ")\n"
2536 " (function shadow1D\n"
2537 " (signature vec4\n"
2538 " (parameters\n"
2539 " (declare (in) sampler1DShadow sampler)\n"
2540 " (declare (in) vec3 P) \n"
2541 " (declare (in) float bias) )\n"
2542 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
2543 "\n"
2544 ")\n"
2545 " (function shadow1DProj\n"
2546 " (signature vec4\n"
2547 " (parameters\n"
2548 " (declare (in) sampler1DShadow sampler)\n"
2549 " (declare (in) vec4 P) \n"
2550 " (declare (in) float bias) )\n"
2551 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) ))))\n"
2552 "\n"
2553 ")\n"
2554 " (function shadow2D\n"
2555 " (signature vec4\n"
2556 " (parameters\n"
2557 " (declare (in) sampler2DShadow sampler)\n"
2558 " (declare (in) vec3 P) \n"
2559 " (declare (in) float bias) )\n"
2560 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
2561 "\n"
2562 ")\n"
2563 " (function shadow2DProj\n"
2564 " (signature vec4\n"
2565 " (parameters\n"
2566 " (declare (in) sampler2DShadow sampler)\n"
2567 " (declare (in) vec4 P) \n"
2568 " (declare (in) float bias) )\n"
2569 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) (swiz z (var_ref P)) (var_ref bias) ))))\n"
2570 "\n"
2571 "))\n"
2572};
2573
2574static const char *functions_for_110_fs [] = {
Kenneth Graunkeb843c7a2010-06-09 14:42:41 -07002575 builtins_110_fs_derivatives,
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002576 builtins_110_fs_textures,
2577};
2578
2579/* 110_vs builtins */
Eric Anholtda46e5f2010-05-19 13:57:01 -07002580
2581static const char *builtins_110_vs_ftransform = {
Ian Romanickd5be2ac2010-07-20 11:29:46 -07002582 "((declare (uniform) mat4 gl_ModelViewProjectionMatrix)\n"
2583 " (declare (in) vec4 gl_Vertex)\n"
2584 " (function ftransform\n"
Eric Anholtda46e5f2010-05-19 13:57:01 -07002585 " (signature vec4\n"
2586 " (parameters)\n"
2587 " ((return (expression vec4 *\n"
2588 " (var_ref gl_ModelViewProjectionMatrix)\n"
2589 " (var_ref gl_Vertex)))))\n"
2590 "))\n"
2591};
2592
2593static const char *functions_for_110_vs [] = {
2594 builtins_110_vs_ftransform,
2595};
2596
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07002597/* 120 builtins */
2598
2599static const char *builtins_120_matrixCompMult = {
2600 "((function matrixCompMult\n"
2601 " (signature mat2x3\n"
2602 " (parameters\n"
2603 " (declare (in) mat2x3 x)\n"
2604 " (declare (in) mat2x3 y))\n"
2605 " ((declare () mat2x3 z)\n"
2606 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2607 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2608 "(return (var_ref z))))\n"
2609 "\n"
2610 " (signature mat3x2\n"
2611 " (parameters\n"
2612 " (declare (in) mat3x2 x)\n"
2613 " (declare (in) mat3x2 y))\n"
2614 " ((declare () mat3x2 z)\n"
2615 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2616 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2617 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
2618 "(return (var_ref z))))\n"
2619 "\n"
2620 " (signature mat2x4\n"
2621 " (parameters\n"
2622 " (declare (in) mat2x4 x)\n"
2623 " (declare (in) mat2x4 y))\n"
2624 " ((declare () mat2x4 z)\n"
2625 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2626 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2627 "(return (var_ref z))))\n"
2628 "\n"
2629 " (signature mat4x2\n"
2630 " (parameters\n"
2631 " (declare (in) mat4x2 x)\n"
2632 " (declare (in) mat4x2 y))\n"
2633 " ((declare () mat4x2 z)\n"
2634 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec2 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2635 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec2 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2636 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec2 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
2637 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3))) (expression vec2 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) \n"
2638 "(return (var_ref z))))\n"
2639 "\n"
2640 " (signature mat3x4\n"
2641 " (parameters\n"
2642 " (declare (in) mat3x4 x)\n"
2643 " (declare (in) mat3x4 y))\n"
2644 " ((declare () mat3x4 z)\n"
2645 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec4 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2646 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec4 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2647 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec4 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
2648 "(return (var_ref z))))\n"
2649 "\n"
2650 " (signature mat4x3\n"
2651 " (parameters\n"
2652 " (declare (in) mat4x3 x)\n"
2653 " (declare (in) mat4x3 y))\n"
2654 " ((declare () mat4x3 z)\n"
2655 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (0))) (expression vec3 * (array_ref (var_ref x) (constant int (0))) (array_ref (var_ref y) (constant int (0))))) \n"
2656 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (1))) (expression vec3 * (array_ref (var_ref x) (constant int (1))) (array_ref (var_ref y) (constant int (1))))) \n"
2657 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (2))) (expression vec3 * (array_ref (var_ref x) (constant int (2))) (array_ref (var_ref y) (constant int (2))))) \n"
2658 " (assign (constant bool (1)) (array_ref (var_ref z) (constant int (3))) (expression vec3 * (array_ref (var_ref x) (constant int (3))) (array_ref (var_ref y) (constant int (3))))) \n"
2659 "(return (var_ref z))))\n"
2660 "))\n"
2661};
2662
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002663static const char *builtins_120_outerProduct = {
2664 "((function outerProduct\n"
2665 " (signature mat2\n"
2666 " (parameters\n"
2667 " (declare (in) vec2 u)\n"
2668 " (declare (in) vec2 v))\n"
2669 " ((declare () mat2 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002670 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v))))\n"
2671 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v))))\n"
2672 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002673 "\n"
2674 " (signature mat2x3\n"
2675 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002676 " (declare (in) vec3 u)\n"
2677 " (declare (in) vec2 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002678 " ((declare () mat2x3 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002679 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v))))\n"
2680 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v))))\n"
2681 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002682 "\n"
2683 " (signature mat2x4\n"
2684 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002685 " (declare (in) vec4 u)\n"
2686 " (declare (in) vec2 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002687 " ((declare () mat2x4 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002688 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v))))\n"
2689 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v))))\n"
2690 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002691 "\n"
2692 " (signature mat3x2\n"
2693 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002694 " (declare (in) vec2 u)\n"
2695 " (declare (in) vec3 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002696 " ((declare () mat3x2 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002697 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v))))\n"
2698 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v))))\n"
2699 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref u) (swiz z (var_ref v))))\n"
2700 " (return (var_ref m))\n"
2701 " ))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002702 "\n"
2703 " (signature mat3\n"
2704 " (parameters\n"
2705 " (declare (in) vec3 u)\n"
2706 " (declare (in) vec3 v))\n"
2707 " ((declare () mat3 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002708 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v))))\n"
2709 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v))))\n"
2710 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref u) (swiz z (var_ref v))))\n"
2711 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002712 "\n"
2713 " (signature mat3x4\n"
2714 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002715 " (declare (in) vec4 u)\n"
2716 " (declare (in) vec3 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002717 " ((declare () mat3x4 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002718 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v))))\n"
2719 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v))))\n"
2720 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref u) (swiz z (var_ref v))))\n"
2721 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002722 "\n"
2723 " (signature mat4x2\n"
2724 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002725 " (declare (in) vec2 u)\n"
2726 " (declare (in) vec4 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002727 " ((declare () mat4x2 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002728 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec2 * (var_ref u) (swiz x (var_ref v))))\n"
2729 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec2 * (var_ref u) (swiz y (var_ref v))))\n"
2730 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec2 * (var_ref u) (swiz z (var_ref v))))\n"
2731 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec2 * (var_ref u) (swiz w (var_ref v))))\n"
2732 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002733 "\n"
2734 " (signature mat4x3\n"
2735 " (parameters\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002736 " (declare (in) vec3 u)\n"
2737 " (declare (in) vec4 v))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002738 " ((declare () mat4x3 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002739 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec3 * (var_ref u) (swiz x (var_ref v))))\n"
2740 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec3 * (var_ref u) (swiz y (var_ref v))))\n"
2741 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec3 * (var_ref u) (swiz z (var_ref v))))\n"
2742 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec3 * (var_ref u) (swiz w (var_ref v))))\n"
2743 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002744 "\n"
2745 " (signature mat4\n"
2746 " (parameters\n"
2747 " (declare (in) vec4 u)\n"
2748 " (declare (in) vec4 v))\n"
2749 " ((declare () mat4 m)\n"
Kenneth Graunke56af4e52010-07-28 11:58:27 -07002750 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (0))) (expression vec4 * (var_ref u) (swiz x (var_ref v))))\n"
2751 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (1))) (expression vec4 * (var_ref u) (swiz y (var_ref v))))\n"
2752 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (2))) (expression vec4 * (var_ref u) (swiz z (var_ref v))))\n"
2753 " (assign (constant bool (1)) (array_ref (var_ref m) (constant int (3))) (expression vec4 * (var_ref u) (swiz w (var_ref v))))\n"
2754 " (return (var_ref m))))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002755 "))\n"
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002756};
2757
Kenneth Graunke1d0e07c2010-06-09 15:56:46 -07002758static const char *builtins_120_transpose = {
2759 "((function transpose\n"
2760 " (signature mat2\n"
2761 " (parameters\n"
2762 " (declare (in) mat2 m))\n"
2763 " ((declare () mat2 t)\n"
2764 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2765 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2766 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2767 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2768 "(return (var_ref t))))\n"
2769 "\n"
2770 " (signature mat3x2\n"
2771 " (parameters\n"
2772 " (declare (in) mat2x3 m))\n"
2773 " ((declare () mat3x2 t)\n"
2774 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2775 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2776 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2777 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2778 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2779 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2780 "(return (var_ref t))))\n"
2781 "\n"
2782 " (signature mat4x2\n"
2783 " (parameters\n"
2784 " (declare (in) mat2x4 m))\n"
2785 " ((declare () mat4x2 t)\n"
2786 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2787 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2788 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2789 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0))))) \n"
2790 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2791 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2792 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2793 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1))))) \n"
2794 "(return (var_ref t))))\n"
2795 "\n"
2796 " (signature mat2x3\n"
2797 " (parameters\n"
2798 " (declare (in) mat3x2 m))\n"
2799 " ((declare () mat2x3 t)\n"
2800 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2801 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2802 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2803 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2804 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2805 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2806 "(return (var_ref t))))\n"
2807 "\n"
2808 " (signature mat3\n"
2809 " (parameters\n"
2810 " (declare (in) mat3 m))\n"
2811 " ((declare () mat3 t)\n"
2812 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2813 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2814 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2815 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2816 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2817 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2818 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2819 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2820 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2))))) \n"
2821 "(return (var_ref t))))\n"
2822 "\n"
2823 " (signature mat4x3\n"
2824 " (parameters\n"
2825 " (declare (in) mat3x4 m))\n"
2826 " ((declare () mat4x3 t)\n"
2827 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2828 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2829 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2830 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0))))) \n"
2831 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2832 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2833 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2834 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1))))) \n"
2835 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2836 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2837 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2))))) \n"
2838 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (2))))) \n"
2839 "(return (var_ref t))))\n"
2840 "\n"
2841 " (signature mat2x4\n"
2842 " (parameters\n"
2843 " (declare (in) mat4x2 m))\n"
2844 " ((declare () mat2x4 t)\n"
2845 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2846 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2847 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2848 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2849 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2850 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2851 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3))))) \n"
2852 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3))))) \n"
2853 "(return (var_ref t))))\n"
2854 "\n"
2855 " (signature mat3x4\n"
2856 " (parameters\n"
2857 " (declare (in) mat4x3 m))\n"
2858 " ((declare () mat3x4 t)\n"
2859 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2860 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2861 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2862 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2863 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2864 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2865 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2866 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2867 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2))))) \n"
2868 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3))))) \n"
2869 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3))))) \n"
2870 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (3))))) \n"
2871 "(return (var_ref t))))\n"
2872 "\n"
2873 " (signature mat4\n"
2874 " (parameters\n"
2875 " (declare (in) mat4 m))\n"
2876 " ((declare () mat4 t)\n"
2877 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (0))))) \n"
2878 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (0))))) \n"
2879 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (0))))) \n"
2880 " (assign (constant bool (1)) (swiz x (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (0))))) \n"
2881 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (1))))) \n"
2882 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (1))))) \n"
2883 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (1))))) \n"
2884 " (assign (constant bool (1)) (swiz y (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (1))))) \n"
2885 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (2))))) \n"
2886 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (2))))) \n"
2887 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (2))))) \n"
2888 " (assign (constant bool (1)) (swiz z (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (2))))) \n"
2889 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (0)))) (swiz x (array_ref (var_ref m) (constant int (3))))) \n"
2890 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (1)))) (swiz y (array_ref (var_ref m) (constant int (3))))) \n"
2891 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (2)))) (swiz z (array_ref (var_ref m) (constant int (3))))) \n"
2892 " (assign (constant bool (1)) (swiz w (array_ref (var_ref t) (constant int (3)))) (swiz w (array_ref (var_ref m) (constant int (3))))) \n"
2893 "(return (var_ref t))))\n"
2894 ")\n"
2895 "\n"
2896 ")\n"
2897 "\n"
2898};
2899
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07002900static const char *functions_for_120 [] = {
2901 builtins_120_matrixCompMult,
Kenneth Graunke43ff6fc2010-06-09 15:47:09 -07002902 builtins_120_outerProduct,
Kenneth Graunke1d0e07c2010-06-09 15:56:46 -07002903 builtins_120_transpose,
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07002904};
2905
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07002906/* 130 builtins */
Eric Anholtfeeb43b2010-04-08 15:02:59 -07002907
Kenneth Graunkeaf057032010-06-09 16:14:45 -07002908static const char *builtins_130_clamp = {
2909 "((function clamp\n"
2910 " (signature int\n"
2911 " (parameters\n"
2912 " (declare (in) int arg0)\n"
2913 " (declare (in) int arg1)\n"
2914 " (declare (in) int arg2))\n"
2915 " ((return (expression int max (expression int min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2916 "\n"
2917 " (signature ivec2\n"
2918 " (parameters\n"
2919 " (declare (in) ivec2 arg0)\n"
2920 " (declare (in) ivec2 arg1)\n"
2921 " (declare (in) ivec2 arg2))\n"
2922 " ((return (expression ivec2 max (expression ivec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2923 "\n"
2924 " (signature ivec3\n"
2925 " (parameters\n"
2926 " (declare (in) ivec3 arg0)\n"
2927 " (declare (in) ivec3 arg1)\n"
2928 " (declare (in) ivec3 arg2))\n"
2929 " ((return (expression ivec3 max (expression ivec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2930 "\n"
2931 " (signature ivec4\n"
2932 " (parameters\n"
2933 " (declare (in) ivec4 arg0)\n"
2934 " (declare (in) ivec4 arg1)\n"
2935 " (declare (in) ivec4 arg2))\n"
2936 " ((return (expression ivec4 max (expression ivec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2937 "\n"
2938 " (signature ivec2\n"
2939 " (parameters\n"
2940 " (declare (in) ivec2 arg0)\n"
2941 " (declare (in) int arg1)\n"
2942 " (declare (in) int arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07002943 " ((return (expression ivec2 max (expression ivec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07002944 "\n"
2945 " (signature ivec3\n"
2946 " (parameters\n"
2947 " (declare (in) ivec3 arg0)\n"
2948 " (declare (in) int arg1)\n"
2949 " (declare (in) int arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07002950 " ((return (expression ivec3 max (expression ivec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07002951 "\n"
2952 " (signature ivec4\n"
2953 " (parameters\n"
2954 " (declare (in) ivec4 arg0)\n"
2955 " (declare (in) int arg1)\n"
2956 " (declare (in) int arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07002957 " ((return (expression ivec4 max (expression ivec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07002958 "\n"
2959 " (signature uint\n"
2960 " (parameters\n"
2961 " (declare (in) uint arg0)\n"
2962 " (declare (in) uint arg1)\n"
2963 " (declare (in) uint arg2))\n"
2964 " ((return (expression uint max (expression uint min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2965 "\n"
2966 " (signature uvec2\n"
2967 " (parameters\n"
2968 " (declare (in) uvec2 arg0)\n"
2969 " (declare (in) uvec2 arg1)\n"
2970 " (declare (in) uvec2 arg2))\n"
2971 " ((return (expression uvec2 max (expression uvec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2972 "\n"
2973 " (signature uvec3\n"
2974 " (parameters\n"
2975 " (declare (in) uvec3 arg0)\n"
2976 " (declare (in) uvec3 arg1)\n"
2977 " (declare (in) uvec3 arg2))\n"
2978 " ((return (expression uvec3 max (expression uvec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2979 "\n"
2980 " (signature uvec4\n"
2981 " (parameters\n"
2982 " (declare (in) uvec4 arg0)\n"
2983 " (declare (in) uvec4 arg1)\n"
2984 " (declare (in) uvec4 arg2))\n"
2985 " ((return (expression uvec4 max (expression uvec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
2986 "\n"
2987 " (signature uvec2\n"
2988 " (parameters\n"
2989 " (declare (in) uvec2 arg0)\n"
2990 " (declare (in) uint arg1)\n"
2991 " (declare (in) uint arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07002992 " ((return (expression uvec2 max (expression uvec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07002993 "\n"
2994 " (signature uvec3\n"
2995 " (parameters\n"
2996 " (declare (in) uvec3 arg0)\n"
2997 " (declare (in) uint arg1)\n"
2998 " (declare (in) uint arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07002999 " ((return (expression uvec3 max (expression uvec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003000 "\n"
3001 " (signature uvec4\n"
3002 " (parameters\n"
3003 " (declare (in) uvec4 arg0)\n"
3004 " (declare (in) uint arg1)\n"
3005 " (declare (in) uint arg2))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003006 " ((return (expression uvec4 max (expression uvec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003007 "))\n"
3008};
3009
Kenneth Graunkec9aabc82010-06-09 16:08:36 -07003010static const char *builtins_130_cosh = {
3011 "((function cosh\n"
3012 " (signature float\n"
3013 " (parameters\n"
3014 " (declare (in) float x))\n"
3015 " ((return (expression float * (constant float (0.5))\n"
3016 " (expression float +\n"
3017 " (expression float exp (var_ref x))\n"
3018 " (expression float exp (expression float neg (var_ref x))))))))\n"
3019 " (signature vec2\n"
3020 " (parameters\n"
3021 " (declare (in) vec2 x))\n"
3022 " ((return (expression vec2 * (constant vec2 (0.5))\n"
3023 " (expression vec2 +\n"
3024 " (expression vec2 exp (var_ref x))\n"
3025 " (expression vec2 exp (expression vec2 neg (var_ref x))))))))\n"
3026 " (signature vec3\n"
3027 " (parameters\n"
3028 " (declare (in) vec3 x))\n"
3029 " ((return (expression vec3 * (constant vec3 (0.5))\n"
3030 " (expression vec3 +\n"
3031 " (expression vec3 exp (var_ref x))\n"
3032 " (expression vec3 exp (expression vec3 neg (var_ref x))))))))\n"
3033 " (signature vec4\n"
3034 " (parameters\n"
3035 " (declare (in) vec4 x))\n"
3036 " ((return (expression vec4 * (constant vec4 (0.5))\n"
3037 " (expression vec4 +\n"
3038 " (expression vec4 exp (var_ref x))\n"
3039 " (expression vec4 exp (expression vec4 neg (var_ref x))))))))\n"
3040 "))\n"
3041};
3042
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003043static const char *builtins_130_equal = {
3044 "((function equal\n"
3045 " (signature bvec2\n"
3046 " (parameters\n"
3047 " (declare (in) uvec2 arg0)\n"
3048 " (declare (in) uvec2 arg1))\n"
3049 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003050 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3051 " (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 -07003052 " (return (var_ref temp))))\n"
3053 "\n"
3054 " (signature bvec3\n"
3055 " (parameters\n"
3056 " (declare (in) uvec3 arg0)\n"
3057 " (declare (in) uvec3 arg1))\n"
3058 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003059 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3060 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3061 " (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 -07003062 " (return (var_ref temp))))\n"
3063 "\n"
3064 " (signature bvec4\n"
3065 " (parameters\n"
3066 " (declare (in) uvec4 arg0)\n"
3067 " (declare (in) uvec4 arg1))\n"
3068 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003069 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3070 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3071 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3072 " (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 -07003073 " (return (var_ref temp))))\n"
3074 "))\n"
3075};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003076
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003077static const char *builtins_130_greaterThan = {
3078 "((function greaterThan\n"
3079 " (signature bvec2\n"
3080 " (parameters\n"
3081 " (declare (in) uvec2 arg0)\n"
3082 " (declare (in) uvec2 arg1))\n"
3083 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003084 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3085 " (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 -07003086 " (return (var_ref temp))))\n"
3087 "\n"
3088 " (signature bvec3\n"
3089 " (parameters\n"
3090 " (declare (in) uvec3 arg0)\n"
3091 " (declare (in) uvec3 arg1))\n"
3092 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003093 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3094 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3095 " (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 -07003096 " (return (var_ref temp))))\n"
3097 "\n"
3098 " (signature bvec4\n"
3099 " (parameters\n"
3100 " (declare (in) uvec4 arg0)\n"
3101 " (declare (in) uvec4 arg1))\n"
3102 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003103 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3104 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3105 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3106 " (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 -07003107 " (return (var_ref temp))))\n"
3108 "))\n"
3109};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003110
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003111static const char *builtins_130_greaterThanEqual = {
3112 "((function greaterThanEqual\n"
3113 " (signature bvec2\n"
3114 " (parameters\n"
3115 " (declare (in) uvec2 arg0)\n"
3116 " (declare (in) uvec2 arg1))\n"
3117 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003118 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3119 " (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 -07003120 " (return (var_ref temp))))\n"
3121 "\n"
3122 " (signature bvec3\n"
3123 " (parameters\n"
3124 " (declare (in) uvec3 arg0)\n"
3125 " (declare (in) uvec3 arg1))\n"
3126 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003127 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3128 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3129 " (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 -07003130 " (return (var_ref temp))))\n"
3131 "\n"
3132 " (signature bvec4\n"
3133 " (parameters\n"
3134 " (declare (in) uvec4 arg0)\n"
3135 " (declare (in) uvec4 arg1))\n"
3136 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003137 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3138 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3139 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3140 " (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 -07003141 " (return (var_ref temp))))\n"
3142 "))\n"
3143};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003144
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003145static const char *builtins_130_lessThan = {
3146 "((function lessThan\n"
3147 " (signature bvec2\n"
3148 " (parameters\n"
3149 " (declare (in) uvec2 arg0)\n"
3150 " (declare (in) uvec2 arg1))\n"
3151 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003152 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3153 " (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 -07003154 " (return (var_ref temp))))\n"
3155 "\n"
3156 " (signature bvec3\n"
3157 " (parameters\n"
3158 " (declare (in) uvec3 arg0)\n"
3159 " (declare (in) uvec3 arg1))\n"
3160 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003161 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3162 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3163 " (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 -07003164 " (return (var_ref temp))))\n"
3165 "\n"
3166 " (signature bvec4\n"
3167 " (parameters\n"
3168 " (declare (in) uvec4 arg0)\n"
3169 " (declare (in) uvec4 arg1))\n"
3170 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003171 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3172 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3173 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3174 " (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 -07003175 " (return (var_ref temp))))\n"
3176 "))\n"
3177};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003178
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003179static const char *builtins_130_lessThanEqual = {
3180 "((function lessThanEqual\n"
3181 " (signature bvec2\n"
3182 " (parameters\n"
3183 " (declare (in) uvec2 arg0)\n"
3184 " (declare (in) uvec2 arg1))\n"
3185 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003186 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3187 " (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 -07003188 " (return (var_ref temp))))\n"
3189 "\n"
3190 " (signature bvec3\n"
3191 " (parameters\n"
3192 " (declare (in) uvec3 arg0)\n"
3193 " (declare (in) uvec3 arg1))\n"
3194 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003195 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3196 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3197 " (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 -07003198 " (return (var_ref temp))))\n"
3199 "\n"
3200 " (signature bvec4\n"
3201 " (parameters\n"
3202 " (declare (in) uvec4 arg0)\n"
3203 " (declare (in) uvec4 arg1))\n"
3204 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003205 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3206 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3207 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3208 " (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 -07003209 " (return (var_ref temp))))\n"
3210 "))\n"
3211};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003212
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003213static const char *builtins_130_max = {
3214 "((function max\n"
3215 " (signature int\n"
3216 " (parameters\n"
3217 " (declare (in) int arg0)\n"
3218 " (declare (in) int arg1))\n"
3219 " ((return (expression int max (var_ref arg0) (var_ref arg1)))))\n"
3220 "\n"
3221 " (signature ivec2\n"
3222 " (parameters\n"
3223 " (declare (in) ivec2 arg0)\n"
3224 " (declare (in) ivec2 arg1))\n"
3225 " ((return (expression ivec2 max (var_ref arg0) (var_ref arg1)))))\n"
3226 "\n"
3227 " (signature ivec3\n"
3228 " (parameters\n"
3229 " (declare (in) ivec3 arg0)\n"
3230 " (declare (in) ivec3 arg1))\n"
3231 " ((return (expression ivec3 max (var_ref arg0) (var_ref arg1)))))\n"
3232 "\n"
3233 " (signature ivec4\n"
3234 " (parameters\n"
3235 " (declare (in) ivec4 arg0)\n"
3236 " (declare (in) ivec4 arg1))\n"
3237 " ((return (expression ivec4 max (var_ref arg0) (var_ref arg1)))))\n"
3238 "\n"
3239 " (signature ivec2\n"
3240 " (parameters\n"
3241 " (declare (in) ivec2 arg0)\n"
3242 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003243 " ((return (expression ivec2 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003244 "\n"
3245 " (signature ivec3\n"
3246 " (parameters\n"
3247 " (declare (in) ivec3 arg0)\n"
3248 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003249 " ((return (expression ivec3 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003250 "\n"
3251 " (signature ivec4\n"
3252 " (parameters\n"
3253 " (declare (in) ivec4 arg0)\n"
3254 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003255 " ((return (expression ivec4 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003256 "\n"
3257 " (signature uint\n"
3258 " (parameters\n"
3259 " (declare (in) uint arg0)\n"
3260 " (declare (in) uint arg1))\n"
3261 " ((return (expression uint max (var_ref arg0) (var_ref arg1)))))\n"
3262 "\n"
3263 " (signature uvec2\n"
3264 " (parameters\n"
3265 " (declare (in) uvec2 arg0)\n"
3266 " (declare (in) uvec2 arg1))\n"
3267 " ((return (expression uvec2 max (var_ref arg0) (var_ref arg1)))))\n"
3268 "\n"
3269 " (signature uvec3\n"
3270 " (parameters\n"
3271 " (declare (in) uvec3 arg0)\n"
3272 " (declare (in) uvec3 arg1))\n"
3273 " ((return (expression uvec3 max (var_ref arg0) (var_ref arg1)))))\n"
3274 "\n"
3275 " (signature uvec4\n"
3276 " (parameters\n"
3277 " (declare (in) uvec4 arg0)\n"
3278 " (declare (in) uvec4 arg1))\n"
3279 " ((return (expression uvec4 max (var_ref arg0) (var_ref arg1)))))\n"
3280 "\n"
3281 " (signature uvec2\n"
3282 " (parameters\n"
3283 " (declare (in) uvec2 arg0)\n"
3284 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003285 " ((return (expression uvec2 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003286 "\n"
3287 " (signature uvec3\n"
3288 " (parameters\n"
3289 " (declare (in) uvec3 arg0)\n"
3290 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003291 " ((return (expression uvec3 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003292 "\n"
3293 " (signature uvec4\n"
3294 " (parameters\n"
3295 " (declare (in) uvec4 arg0)\n"
3296 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003297 " ((return (expression uvec4 max (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003298 "))\n"
3299};
3300
3301static const char *builtins_130_min = {
3302 "((function min\n"
3303 " (signature int\n"
3304 " (parameters\n"
3305 " (declare (in) int arg0)\n"
3306 " (declare (in) int arg1))\n"
3307 " ((return (expression int min (var_ref arg0) (var_ref arg1)))))\n"
3308 "\n"
3309 " (signature ivec2\n"
3310 " (parameters\n"
3311 " (declare (in) ivec2 arg0)\n"
3312 " (declare (in) ivec2 arg1))\n"
3313 " ((return (expression ivec2 min (var_ref arg0) (var_ref arg1)))))\n"
3314 "\n"
3315 " (signature ivec3\n"
3316 " (parameters\n"
3317 " (declare (in) ivec3 arg0)\n"
3318 " (declare (in) ivec3 arg1))\n"
3319 " ((return (expression ivec3 min (var_ref arg0) (var_ref arg1)))))\n"
3320 "\n"
3321 " (signature ivec4\n"
3322 " (parameters\n"
3323 " (declare (in) ivec4 arg0)\n"
3324 " (declare (in) ivec4 arg1))\n"
3325 " ((return (expression ivec4 min (var_ref arg0) (var_ref arg1)))))\n"
3326 "\n"
3327 " (signature ivec2\n"
3328 " (parameters\n"
3329 " (declare (in) ivec2 arg0)\n"
3330 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003331 " ((return (expression ivec2 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003332 "\n"
3333 " (signature ivec3\n"
3334 " (parameters\n"
3335 " (declare (in) ivec3 arg0)\n"
3336 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003337 " ((return (expression ivec3 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003338 "\n"
3339 " (signature ivec4\n"
3340 " (parameters\n"
3341 " (declare (in) ivec4 arg0)\n"
3342 " (declare (in) int arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003343 " ((return (expression ivec4 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003344 "\n"
3345 " (signature uint\n"
3346 " (parameters\n"
3347 " (declare (in) uint arg0)\n"
3348 " (declare (in) uint arg1))\n"
3349 " ((return (expression uint min (var_ref arg0) (var_ref arg1)))))\n"
3350 "\n"
3351 " (signature uvec2\n"
3352 " (parameters\n"
3353 " (declare (in) uvec2 arg0)\n"
3354 " (declare (in) uvec2 arg1))\n"
3355 " ((return (expression uvec2 min (var_ref arg0) (var_ref arg1)))))\n"
3356 "\n"
3357 " (signature uvec3\n"
3358 " (parameters\n"
3359 " (declare (in) uvec3 arg0)\n"
3360 " (declare (in) uvec3 arg1))\n"
3361 " ((return (expression uvec3 min (var_ref arg0) (var_ref arg1)))))\n"
3362 "\n"
3363 " (signature uvec4\n"
3364 " (parameters\n"
3365 " (declare (in) uvec4 arg0)\n"
3366 " (declare (in) uvec4 arg1))\n"
3367 " ((return (expression uvec4 min (var_ref arg0) (var_ref arg1)))))\n"
3368 "\n"
3369 " (signature uvec2\n"
3370 " (parameters\n"
3371 " (declare (in) uvec2 arg0)\n"
3372 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003373 " ((return (expression uvec2 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003374 "\n"
3375 " (signature uvec3\n"
3376 " (parameters\n"
3377 " (declare (in) uvec3 arg0)\n"
3378 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003379 " ((return (expression uvec3 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003380 "\n"
3381 " (signature uvec4\n"
3382 " (parameters\n"
3383 " (declare (in) uvec4 arg0)\n"
3384 " (declare (in) uint arg1))\n"
Kenneth Graunke53120802010-07-12 13:54:36 -07003385 " ((return (expression uvec4 min (var_ref arg0) (var_ref arg1)))))\n"
Kenneth Graunkeaf057032010-06-09 16:14:45 -07003386 "))\n"
3387};
3388
Kenneth Graunke0a715272010-07-21 17:33:57 -07003389static const char *builtins_130_mix = {
3390 "((function mix\n"
3391 " (signature float\n"
3392 " (parameters\n"
3393 " (declare (in) float v1)\n"
3394 " (declare (in) float v2)\n"
3395 " (declare (in) bool a))\n"
3396 " ((assign (var_ref a) (var_ref v1) (var_ref v2))\n"
3397 " (return (var_ref v1))))\n"
3398 "\n"
3399 " (signature vec2\n"
3400 " (parameters\n"
3401 " (declare (in) vec2 v1)\n"
3402 " (declare (in) vec2 v2)\n"
3403 " (declare (in) bvec2 a))\n"
3404 " ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))\n"
3405 " (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))\n"
3406 " (return (var_ref v1))))\n"
3407 "\n"
3408 " (signature vec3\n"
3409 " (parameters\n"
3410 " (declare (in) vec3 v1)\n"
3411 " (declare (in) vec3 v2)\n"
3412 " (declare (in) bvec3 a))\n"
3413 " ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))\n"
3414 " (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))\n"
3415 " (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))\n"
3416 " (return (var_ref v1))))\n"
3417 "\n"
3418 " (signature vec4\n"
3419 " (parameters\n"
3420 " (declare (in) vec4 v1)\n"
3421 " (declare (in) vec4 v2)\n"
3422 " (declare (in) bvec4 a))\n"
3423 " ((assign (swiz x (var_ref a)) (swiz x (var_ref v1)) (swiz x (var_ref v2)))\n"
3424 " (assign (swiz y (var_ref a)) (swiz y (var_ref v1)) (swiz y (var_ref v2)))\n"
3425 " (assign (swiz z (var_ref a)) (swiz z (var_ref v1)) (swiz z (var_ref v2)))\n"
3426 " (assign (swiz w (var_ref a)) (swiz w (var_ref v1)) (swiz w (var_ref v2)))\n"
3427 " (return (var_ref v1))))\n"
3428 "))\n"
3429};
3430
Kenneth Graunkeb3262122010-04-28 23:01:33 -07003431static const char *builtins_130_notEqual = {
3432 "((function notEqual\n"
3433 " (signature bvec2\n"
3434 " (parameters\n"
3435 " (declare (in) uvec2 arg0)\n"
3436 " (declare (in) uvec2 arg1))\n"
3437 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003438 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3439 " (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 -07003440 " (return (var_ref temp))))\n"
3441 "\n"
3442 " (signature bvec3\n"
3443 " (parameters\n"
3444 " (declare (in) uvec3 arg0)\n"
3445 " (declare (in) uvec3 arg1))\n"
3446 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003447 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3448 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3449 " (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 -07003450 " (return (var_ref temp))))\n"
3451 "\n"
3452 " (signature bvec4\n"
3453 " (parameters\n"
3454 " (declare (in) uvec4 arg0)\n"
3455 " (declare (in) uvec4 arg1))\n"
3456 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003457 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
3458 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
3459 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
3460 " (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 -07003461 " (return (var_ref temp))))\n"
3462 "))\n"
3463};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07003464
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003465static const char *builtins_130_sign = {
3466 "((function sign\n"
3467 " (signature int\n"
3468 " (parameters\n"
3469 " (declare (in) int x))\n"
Kenneth Graunke0a715272010-07-21 17:33:57 -07003470 " ((return (expression int sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003471 "\n"
3472 " (signature ivec2\n"
3473 " (parameters\n"
3474 " (declare (in) ivec2 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07003475 " ((return (expression ivec2 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003476 "\n"
3477 " (signature ivec3\n"
3478 " (parameters\n"
3479 " (declare (in) ivec3 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07003480 " ((return (expression ivec3 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003481 "\n"
3482 " (signature ivec4\n"
3483 " (parameters\n"
3484 " (declare (in) ivec4 x))\n"
Kenneth Graunke83035572010-07-02 18:20:19 -07003485 " ((return (expression ivec4 sign (var_ref x)))))\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07003486 "))\n"
3487 "\n"
3488};
3489
Kenneth Graunkec9aabc82010-06-09 16:08:36 -07003490static const char *builtins_130_sinh = {
3491 "((function sinh\n"
3492 " (signature float\n"
3493 " (parameters\n"
3494 " (declare (in) float x))\n"
3495 " ((return (expression float * (constant float (0.5))\n"
3496 " (expression float -\n"
3497 " (expression float exp (var_ref x))\n"
3498 " (expression float exp (expression float neg (var_ref x))))))))\n"
3499 " (signature vec2\n"
3500 " (parameters\n"
3501 " (declare (in) vec2 x))\n"
3502 " ((return (expression vec2 * (constant vec2 (0.5))\n"
3503 " (expression vec2 -\n"
3504 " (expression vec2 exp (var_ref x))\n"
3505 " (expression vec2 exp (expression vec2 neg (var_ref x))))))))\n"
3506 " (signature vec3\n"
3507 " (parameters\n"
3508 " (declare (in) vec3 x))\n"
3509 " ((return (expression vec3 * (constant vec3 (0.5))\n"
3510 " (expression vec3 -\n"
3511 " (expression vec3 exp (var_ref x))\n"
3512 " (expression vec3 exp (expression vec3 neg (var_ref x))))))))\n"
3513 " (signature vec4\n"
3514 " (parameters\n"
3515 " (declare (in) vec4 x))\n"
3516 " ((return (expression vec4 * (constant vec4 (0.5))\n"
3517 " (expression vec4 -\n"
3518 " (expression vec4 exp (var_ref x))\n"
3519 " (expression vec4 exp (expression vec4 neg (var_ref x))))))))\n"
3520 "))\n"
3521};
3522
3523static const char *builtins_130_tanh = {
3524 "((function tanh\n"
3525 " (signature float\n"
3526 " (parameters\n"
3527 " (declare (in) float x))\n"
3528 " ((return (expression float /\n"
3529 " (expression float -\n"
3530 " (expression float exp (var_ref x))\n"
3531 " (expression float exp (expression float neg (var_ref x))))\n"
3532 " (expression float +\n"
3533 " (expression float exp (var_ref x))\n"
3534 " (expression float exp (expression float neg (var_ref x))))))))\n"
3535 " (signature vec2\n"
3536 " (parameters\n"
3537 " (declare (in) vec2 x))\n"
3538 " ((return (expression vec2 /\n"
3539 " (expression vec2 -\n"
3540 " (expression vec2 exp (var_ref x))\n"
3541 " (expression vec2 exp (expression vec2 neg (var_ref x))))\n"
3542 " (expression vec2 +\n"
3543 " (expression vec2 exp (var_ref x))\n"
3544 " (expression vec2 exp (expression vec2 neg (var_ref x))))))))\n"
3545 " (signature vec3\n"
3546 " (parameters\n"
3547 " (declare (in) vec3 x))\n"
3548 " ((return (expression vec3 /\n"
3549 " (expression vec3 -\n"
3550 " (expression vec3 exp (var_ref x))\n"
3551 " (expression vec3 exp (expression vec3 neg (var_ref x))))\n"
3552 " (expression vec3 +\n"
3553 " (expression vec3 exp (var_ref x))\n"
3554 " (expression vec3 exp (expression vec3 neg (var_ref x))))))))\n"
3555 " (signature vec4\n"
3556 " (parameters\n"
3557 " (declare (in) vec4 x))\n"
3558 " ((return (expression vec4 /\n"
3559 " (expression vec4 -\n"
3560 " (expression vec4 exp (var_ref x))\n"
3561 " (expression vec4 exp (expression vec4 neg (var_ref x))))\n"
3562 " (expression vec4 +\n"
3563 " (expression vec4 exp (var_ref x))\n"
3564 " (expression vec4 exp (expression vec4 neg (var_ref x))))))))\n"
3565 "))\n"
3566};
3567
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07003568static const char *builtins_130_texelFetch = {
3569 "((function texelFetch\n"
3570 " (signature vec4\n"
3571 " (parameters\n"
3572 " (declare (in) sampler1D sampler)\n"
3573 " (declare (in) int P) \n"
3574 " (declare (in) int lod) )\n"
3575 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3576 "\n"
3577 " (signature ivec4\n"
3578 " (parameters\n"
3579 " (declare (in) isampler1D sampler)\n"
3580 " (declare (in) int P) \n"
3581 " (declare (in) int lod) )\n"
3582 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3583 "\n"
3584 " (signature uvec4\n"
3585 " (parameters\n"
3586 " (declare (in) usampler1D sampler)\n"
3587 " (declare (in) int P) \n"
3588 " (declare (in) int lod) )\n"
3589 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3590 "\n"
3591 " (signature vec4\n"
3592 " (parameters\n"
3593 " (declare (in) sampler2D sampler)\n"
3594 " (declare (in) ivec2 P) \n"
3595 " (declare (in) int lod) )\n"
3596 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3597 "\n"
3598 " (signature ivec4\n"
3599 " (parameters\n"
3600 " (declare (in) isampler2D sampler)\n"
3601 " (declare (in) ivec2 P) \n"
3602 " (declare (in) int lod) )\n"
3603 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3604 "\n"
3605 " (signature uvec4\n"
3606 " (parameters\n"
3607 " (declare (in) usampler2D sampler)\n"
3608 " (declare (in) ivec2 P) \n"
3609 " (declare (in) int lod) )\n"
3610 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3611 "\n"
3612 " (signature vec4\n"
3613 " (parameters\n"
3614 " (declare (in) sampler3D sampler)\n"
3615 " (declare (in) ivec3 P) \n"
3616 " (declare (in) int lod) )\n"
3617 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3618 "\n"
3619 " (signature ivec4\n"
3620 " (parameters\n"
3621 " (declare (in) isampler3D sampler)\n"
3622 " (declare (in) ivec3 P) \n"
3623 " (declare (in) int lod) )\n"
3624 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3625 "\n"
3626 " (signature uvec4\n"
3627 " (parameters\n"
3628 " (declare (in) usampler3D sampler)\n"
3629 " (declare (in) ivec3 P) \n"
3630 " (declare (in) int lod) )\n"
3631 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3632 "\n"
3633 " (signature vec4\n"
3634 " (parameters\n"
3635 " (declare (in) sampler1DArray sampler)\n"
3636 " (declare (in) ivec2 P) \n"
3637 " (declare (in) int lod) )\n"
3638 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3639 "\n"
3640 " (signature ivec4\n"
3641 " (parameters\n"
3642 " (declare (in) isampler1DArray sampler)\n"
3643 " (declare (in) ivec2 P) \n"
3644 " (declare (in) int lod) )\n"
3645 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3646 "\n"
3647 " (signature uvec4\n"
3648 " (parameters\n"
3649 " (declare (in) usampler1DArray sampler)\n"
3650 " (declare (in) ivec2 P) \n"
3651 " (declare (in) int lod) )\n"
3652 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3653 "\n"
3654 " (signature vec4\n"
3655 " (parameters\n"
3656 " (declare (in) sampler2DArray sampler)\n"
3657 " (declare (in) ivec3 P) \n"
3658 " (declare (in) int lod) )\n"
3659 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3660 "\n"
3661 " (signature ivec4\n"
3662 " (parameters\n"
3663 " (declare (in) isampler2DArray sampler)\n"
3664 " (declare (in) ivec3 P) \n"
3665 " (declare (in) int lod) )\n"
3666 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3667 "\n"
3668 " (signature uvec4\n"
3669 " (parameters\n"
3670 " (declare (in) usampler2DArray sampler)\n"
3671 " (declare (in) ivec3 P) \n"
3672 " (declare (in) int lod) )\n"
3673 " ((return (txf (var_ref sampler) (var_ref P) (0 0 0) (var_ref lod) ))))\n"
3674 "\n"
3675 "))\n"
3676};
3677
3678static const char *builtins_130_texture = {
3679 "((function texture\n"
3680 " (signature vec4\n"
3681 " (parameters\n"
3682 " (declare (in) sampler1D sampler)\n"
3683 " (declare (in) float P) )\n"
3684 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3685 "\n"
3686 " (signature ivec4\n"
3687 " (parameters\n"
3688 " (declare (in) isampler1D sampler)\n"
3689 " (declare (in) float P) )\n"
3690 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3691 "\n"
3692 " (signature uvec4\n"
3693 " (parameters\n"
3694 " (declare (in) usampler1D sampler)\n"
3695 " (declare (in) float P) )\n"
3696 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3697 "\n"
3698 " (signature vec4\n"
3699 " (parameters\n"
3700 " (declare (in) sampler2D sampler)\n"
3701 " (declare (in) vec2 P) )\n"
3702 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3703 "\n"
3704 " (signature ivec4\n"
3705 " (parameters\n"
3706 " (declare (in) isampler2D sampler)\n"
3707 " (declare (in) vec2 P) )\n"
3708 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3709 "\n"
3710 " (signature uvec4\n"
3711 " (parameters\n"
3712 " (declare (in) usampler2D sampler)\n"
3713 " (declare (in) vec2 P) )\n"
3714 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3715 "\n"
3716 " (signature vec4\n"
3717 " (parameters\n"
3718 " (declare (in) sampler3D sampler)\n"
3719 " (declare (in) vec3 P) )\n"
3720 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3721 "\n"
3722 " (signature ivec4\n"
3723 " (parameters\n"
3724 " (declare (in) isampler3D sampler)\n"
3725 " (declare (in) vec3 P) )\n"
3726 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3727 "\n"
3728 " (signature uvec4\n"
3729 " (parameters\n"
3730 " (declare (in) usampler3D sampler)\n"
3731 " (declare (in) vec3 P) )\n"
3732 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3733 "\n"
3734 " (signature vec4\n"
3735 " (parameters\n"
3736 " (declare (in) samplerCube sampler)\n"
3737 " (declare (in) vec3 P) )\n"
3738 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3739 "\n"
3740 " (signature ivec4\n"
3741 " (parameters\n"
3742 " (declare (in) isamplerCube sampler)\n"
3743 " (declare (in) vec3 P) )\n"
3744 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3745 "\n"
3746 " (signature uvec4\n"
3747 " (parameters\n"
3748 " (declare (in) usamplerCube sampler)\n"
3749 " (declare (in) vec3 P) )\n"
3750 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3751 "\n"
3752 " (signature vec4\n"
3753 " (parameters\n"
3754 " (declare (in) sampler1DArray sampler)\n"
3755 " (declare (in) vec2 P) )\n"
3756 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3757 "\n"
3758 " (signature ivec4\n"
3759 " (parameters\n"
3760 " (declare (in) isampler1DArray sampler)\n"
3761 " (declare (in) vec2 P) )\n"
3762 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3763 "\n"
3764 " (signature uvec4\n"
3765 " (parameters\n"
3766 " (declare (in) usampler1DArray sampler)\n"
3767 " (declare (in) vec2 P) )\n"
3768 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3769 "\n"
3770 " (signature vec4\n"
3771 " (parameters\n"
3772 " (declare (in) sampler2DArray sampler)\n"
3773 " (declare (in) vec3 P) )\n"
3774 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3775 "\n"
3776 " (signature ivec4\n"
3777 " (parameters\n"
3778 " (declare (in) isampler2DArray sampler)\n"
3779 " (declare (in) vec3 P) )\n"
3780 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3781 "\n"
3782 " (signature uvec4\n"
3783 " (parameters\n"
3784 " (declare (in) usampler2DArray sampler)\n"
3785 " (declare (in) vec3 P) )\n"
3786 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
3787 "\n"
3788 "))\n"
3789};
3790
3791static const char *builtins_130_textureGrad = {
3792 "((function textureGrad\n"
3793 " (signature vec4\n"
3794 " (parameters\n"
3795 " (declare (in) sampler1D sampler)\n"
3796 " (declare (in) float P) \n"
3797 " (declare (in) float dPdx) \n"
3798 " (declare (in) float dPdy) )\n"
3799 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3800 "\n"
3801 " (signature ivec4\n"
3802 " (parameters\n"
3803 " (declare (in) isampler1D sampler)\n"
3804 " (declare (in) float P) \n"
3805 " (declare (in) float dPdx) \n"
3806 " (declare (in) float dPdy) )\n"
3807 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3808 "\n"
3809 " (signature uvec4\n"
3810 " (parameters\n"
3811 " (declare (in) usampler1D sampler)\n"
3812 " (declare (in) float P) \n"
3813 " (declare (in) float dPdx) \n"
3814 " (declare (in) float dPdy) )\n"
3815 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3816 "\n"
3817 " (signature vec4\n"
3818 " (parameters\n"
3819 " (declare (in) sampler2D sampler)\n"
3820 " (declare (in) vec2 P) \n"
3821 " (declare (in) vec2 dPdx) \n"
3822 " (declare (in) vec2 dPdy) )\n"
3823 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3824 "\n"
3825 " (signature ivec4\n"
3826 " (parameters\n"
3827 " (declare (in) isampler2D sampler)\n"
3828 " (declare (in) vec2 P) \n"
3829 " (declare (in) vec2 dPdx) \n"
3830 " (declare (in) vec2 dPdy) )\n"
3831 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3832 "\n"
3833 " (signature uvec4\n"
3834 " (parameters\n"
3835 " (declare (in) usampler2D sampler)\n"
3836 " (declare (in) vec2 P) \n"
3837 " (declare (in) vec2 dPdx) \n"
3838 " (declare (in) vec2 dPdy) )\n"
3839 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3840 "\n"
3841 " (signature vec4\n"
3842 " (parameters\n"
3843 " (declare (in) sampler3D sampler)\n"
3844 " (declare (in) vec3 P) \n"
3845 " (declare (in) vec3 dPdx) \n"
3846 " (declare (in) vec3 dPdy) )\n"
3847 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3848 "\n"
3849 " (signature ivec4\n"
3850 " (parameters\n"
3851 " (declare (in) isampler3D sampler)\n"
3852 " (declare (in) vec3 P) \n"
3853 " (declare (in) vec3 dPdx) \n"
3854 " (declare (in) vec3 dPdy) )\n"
3855 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3856 "\n"
3857 " (signature uvec4\n"
3858 " (parameters\n"
3859 " (declare (in) usampler3D sampler)\n"
3860 " (declare (in) vec3 P) \n"
3861 " (declare (in) vec3 dPdx) \n"
3862 " (declare (in) vec3 dPdy) )\n"
3863 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3864 "\n"
3865 " (signature vec4\n"
3866 " (parameters\n"
3867 " (declare (in) samplerCube sampler)\n"
3868 " (declare (in) vec3 P) \n"
3869 " (declare (in) vec3 dPdx) \n"
3870 " (declare (in) vec3 dPdy) )\n"
3871 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3872 "\n"
3873 " (signature ivec4\n"
3874 " (parameters\n"
3875 " (declare (in) isamplerCube sampler)\n"
3876 " (declare (in) vec3 P) \n"
3877 " (declare (in) vec3 dPdx) \n"
3878 " (declare (in) vec3 dPdy) )\n"
3879 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3880 "\n"
3881 " (signature uvec4\n"
3882 " (parameters\n"
3883 " (declare (in) usamplerCube sampler)\n"
3884 " (declare (in) vec3 P) \n"
3885 " (declare (in) vec3 dPdx) \n"
3886 " (declare (in) vec3 dPdy) )\n"
3887 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3888 "\n"
3889 " (signature vec4\n"
3890 " (parameters\n"
3891 " (declare (in) sampler1DArray sampler)\n"
3892 " (declare (in) vec2 P) \n"
3893 " (declare (in) vec2 dPdx) \n"
3894 " (declare (in) vec2 dPdy) )\n"
3895 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3896 "\n"
3897 " (signature ivec4\n"
3898 " (parameters\n"
3899 " (declare (in) isampler1DArray sampler)\n"
3900 " (declare (in) vec2 P) \n"
3901 " (declare (in) vec2 dPdx) \n"
3902 " (declare (in) vec2 dPdy) )\n"
3903 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3904 "\n"
3905 " (signature uvec4\n"
3906 " (parameters\n"
3907 " (declare (in) usampler1DArray sampler)\n"
3908 " (declare (in) vec2 P) \n"
3909 " (declare (in) vec2 dPdx) \n"
3910 " (declare (in) vec2 dPdy) )\n"
3911 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3912 "\n"
3913 " (signature vec4\n"
3914 " (parameters\n"
3915 " (declare (in) sampler2DArray sampler)\n"
3916 " (declare (in) vec3 P) \n"
3917 " (declare (in) vec3 dPdx) \n"
3918 " (declare (in) vec3 dPdy) )\n"
3919 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3920 "\n"
3921 " (signature ivec4\n"
3922 " (parameters\n"
3923 " (declare (in) isampler2DArray sampler)\n"
3924 " (declare (in) vec3 P) \n"
3925 " (declare (in) vec3 dPdx) \n"
3926 " (declare (in) vec3 dPdy) )\n"
3927 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3928 "\n"
3929 " (signature uvec4\n"
3930 " (parameters\n"
3931 " (declare (in) usampler2DArray sampler)\n"
3932 " (declare (in) vec3 P) \n"
3933 " (declare (in) vec3 dPdx) \n"
3934 " (declare (in) vec3 dPdy) )\n"
3935 " ((return (txd (var_ref sampler) (var_ref P) (0 0 0) 1 () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
3936 "\n"
3937 ")\n"
3938 ")\n"
3939};
3940
3941static const char *builtins_130_textureLod = {
3942 "((function textureLod\n"
3943 " (signature vec4\n"
3944 " (parameters\n"
3945 " (declare (in) sampler1D sampler)\n"
3946 " (declare (in) float P) \n"
3947 " (declare (in) float lod) )\n"
3948 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3949 "\n"
3950 " (signature ivec4\n"
3951 " (parameters\n"
3952 " (declare (in) isampler1D sampler)\n"
3953 " (declare (in) float P) \n"
3954 " (declare (in) float lod) )\n"
3955 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3956 "\n"
3957 " (signature uvec4\n"
3958 " (parameters\n"
3959 " (declare (in) usampler1D sampler)\n"
3960 " (declare (in) float P) \n"
3961 " (declare (in) float lod) )\n"
3962 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3963 "\n"
3964 " (signature vec4\n"
3965 " (parameters\n"
3966 " (declare (in) sampler2D sampler)\n"
3967 " (declare (in) vec2 P) \n"
3968 " (declare (in) float lod) )\n"
3969 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3970 "\n"
3971 " (signature ivec4\n"
3972 " (parameters\n"
3973 " (declare (in) isampler2D sampler)\n"
3974 " (declare (in) vec2 P) \n"
3975 " (declare (in) float lod) )\n"
3976 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3977 "\n"
3978 " (signature uvec4\n"
3979 " (parameters\n"
3980 " (declare (in) usampler2D sampler)\n"
3981 " (declare (in) vec2 P) \n"
3982 " (declare (in) float lod) )\n"
3983 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3984 "\n"
3985 " (signature vec4\n"
3986 " (parameters\n"
3987 " (declare (in) sampler3D sampler)\n"
3988 " (declare (in) vec3 P) \n"
3989 " (declare (in) float lod) )\n"
3990 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3991 "\n"
3992 " (signature ivec4\n"
3993 " (parameters\n"
3994 " (declare (in) isampler3D sampler)\n"
3995 " (declare (in) vec3 P) \n"
3996 " (declare (in) float lod) )\n"
3997 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
3998 "\n"
3999 " (signature uvec4\n"
4000 " (parameters\n"
4001 " (declare (in) usampler3D sampler)\n"
4002 " (declare (in) vec3 P) \n"
4003 " (declare (in) float lod) )\n"
4004 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4005 "\n"
4006 " (signature vec4\n"
4007 " (parameters\n"
4008 " (declare (in) samplerCube sampler)\n"
4009 " (declare (in) vec3 P) \n"
4010 " (declare (in) float lod) )\n"
4011 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4012 "\n"
4013 " (signature ivec4\n"
4014 " (parameters\n"
4015 " (declare (in) isamplerCube sampler)\n"
4016 " (declare (in) vec3 P) \n"
4017 " (declare (in) float lod) )\n"
4018 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4019 "\n"
4020 " (signature uvec4\n"
4021 " (parameters\n"
4022 " (declare (in) usamplerCube sampler)\n"
4023 " (declare (in) vec3 P) \n"
4024 " (declare (in) float lod) )\n"
4025 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4026 "\n"
4027 " (signature vec4\n"
4028 " (parameters\n"
4029 " (declare (in) sampler1DArray sampler)\n"
4030 " (declare (in) vec2 P) \n"
4031 " (declare (in) float lod) )\n"
4032 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4033 "\n"
4034 " (signature ivec4\n"
4035 " (parameters\n"
4036 " (declare (in) isampler1DArray sampler)\n"
4037 " (declare (in) vec2 P) \n"
4038 " (declare (in) float lod) )\n"
4039 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4040 "\n"
4041 " (signature uvec4\n"
4042 " (parameters\n"
4043 " (declare (in) usampler1DArray sampler)\n"
4044 " (declare (in) vec2 P) \n"
4045 " (declare (in) float lod) )\n"
4046 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4047 "\n"
4048 " (signature vec4\n"
4049 " (parameters\n"
4050 " (declare (in) sampler2DArray sampler)\n"
4051 " (declare (in) vec3 P) \n"
4052 " (declare (in) float lod) )\n"
4053 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4054 "\n"
4055 " (signature ivec4\n"
4056 " (parameters\n"
4057 " (declare (in) isampler2DArray sampler)\n"
4058 " (declare (in) vec3 P) \n"
4059 " (declare (in) float lod) )\n"
4060 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4061 "\n"
4062 " (signature uvec4\n"
4063 " (parameters\n"
4064 " (declare (in) usampler2DArray sampler)\n"
4065 " (declare (in) vec3 P) \n"
4066 " (declare (in) float lod) )\n"
4067 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4068 "\n"
4069 "))\n"
4070};
4071
4072static const char *builtins_130_textureProj = {
4073 "((function textureProj\n"
4074 " (signature vec4\n"
4075 " (parameters\n"
4076 " (declare (in) sampler1D sampler)\n"
4077 " (declare (in) vec2 P) )\n"
4078 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
4079 "\n"
4080 " (signature ivec4\n"
4081 " (parameters\n"
4082 " (declare (in) isampler1D sampler)\n"
4083 " (declare (in) vec2 P) )\n"
4084 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
4085 "\n"
4086 " (signature uvec4\n"
4087 " (parameters\n"
4088 " (declare (in) usampler1D sampler)\n"
4089 " (declare (in) vec2 P) )\n"
4090 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ))))\n"
4091 "\n"
4092 " (signature vec4\n"
4093 " (parameters\n"
4094 " (declare (in) sampler1D sampler)\n"
4095 " (declare (in) vec4 P) )\n"
4096 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4097 "\n"
4098 " (signature ivec4\n"
4099 " (parameters\n"
4100 " (declare (in) isampler1D sampler)\n"
4101 " (declare (in) vec4 P) )\n"
4102 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4103 "\n"
4104 " (signature uvec4\n"
4105 " (parameters\n"
4106 " (declare (in) usampler1D sampler)\n"
4107 " (declare (in) vec4 P) )\n"
4108 " ((return (tex (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4109 "\n"
4110 " (signature vec4\n"
4111 " (parameters\n"
4112 " (declare (in) sampler2D sampler)\n"
4113 " (declare (in) vec3 P) )\n"
4114 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
4115 "\n"
4116 " (signature ivec4\n"
4117 " (parameters\n"
4118 " (declare (in) isampler2D sampler)\n"
4119 " (declare (in) vec3 P) )\n"
4120 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
4121 "\n"
4122 " (signature uvec4\n"
4123 " (parameters\n"
4124 " (declare (in) usampler2D sampler)\n"
4125 " (declare (in) vec3 P) )\n"
4126 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ))))\n"
4127 "\n"
4128 " (signature vec4\n"
4129 " (parameters\n"
4130 " (declare (in) sampler2D sampler)\n"
4131 " (declare (in) vec4 P) )\n"
4132 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4133 "\n"
4134 " (signature ivec4\n"
4135 " (parameters\n"
4136 " (declare (in) isampler2D sampler)\n"
4137 " (declare (in) vec4 P) )\n"
4138 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4139 "\n"
4140 " (signature uvec4\n"
4141 " (parameters\n"
4142 " (declare (in) usampler2D sampler)\n"
4143 " (declare (in) vec4 P) )\n"
4144 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4145 "\n"
4146 " (signature vec4\n"
4147 " (parameters\n"
4148 " (declare (in) sampler3D sampler)\n"
4149 " (declare (in) vec4 P) )\n"
4150 " ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4151 "\n"
4152 " (signature ivec4\n"
4153 " (parameters\n"
4154 " (declare (in) isampler3D sampler)\n"
4155 " (declare (in) vec4 P) )\n"
4156 " ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4157 "\n"
4158 " (signature uvec4\n"
4159 " (parameters\n"
4160 " (declare (in) usampler3D sampler)\n"
4161 " (declare (in) vec4 P) )\n"
4162 " ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ))))\n"
4163 "\n"
4164 "))\n"
4165};
4166
4167static const char *builtins_130_textureProjGrad = {
Kenneth Graunke8aa7dba2010-08-09 12:45:25 -07004168 "((function textureProjGrad\n"
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004169 " (signature vec4\n"
4170 " (parameters\n"
4171 " (declare (in) sampler1D sampler)\n"
4172 " (declare (in) vec2 P) \n"
4173 " (declare (in) float dPdx) \n"
4174 " (declare (in) float dPdy) )\n"
4175 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4176 "\n"
4177 " (signature ivec4\n"
4178 " (parameters\n"
4179 " (declare (in) isampler1D sampler)\n"
4180 " (declare (in) vec2 P) \n"
4181 " (declare (in) float dPdx) \n"
4182 " (declare (in) float dPdy) )\n"
4183 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4184 "\n"
4185 " (signature uvec4\n"
4186 " (parameters\n"
4187 " (declare (in) usampler1D sampler)\n"
4188 " (declare (in) vec2 P) \n"
4189 " (declare (in) float dPdx) \n"
4190 " (declare (in) float dPdy) )\n"
4191 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4192 "\n"
4193 " (signature vec4\n"
4194 " (parameters\n"
4195 " (declare (in) sampler1D sampler)\n"
4196 " (declare (in) vec4 P) \n"
4197 " (declare (in) float dPdx) \n"
4198 " (declare (in) float dPdy) )\n"
4199 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4200 "\n"
4201 " (signature ivec4\n"
4202 " (parameters\n"
4203 " (declare (in) isampler1D sampler)\n"
4204 " (declare (in) vec4 P) \n"
4205 " (declare (in) float dPdx) \n"
4206 " (declare (in) float dPdy) )\n"
4207 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4208 "\n"
4209 " (signature uvec4\n"
4210 " (parameters\n"
4211 " (declare (in) usampler1D sampler)\n"
4212 " (declare (in) vec4 P) \n"
4213 " (declare (in) float dPdx) \n"
4214 " (declare (in) float dPdy) )\n"
4215 " ((return (txd (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4216 "\n"
4217 " (signature vec4\n"
4218 " (parameters\n"
4219 " (declare (in) sampler2D sampler)\n"
4220 " (declare (in) vec3 P) \n"
4221 " (declare (in) vec2 dPdx) \n"
4222 " (declare (in) vec2 dPdy) )\n"
4223 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4224 "\n"
4225 " (signature ivec4\n"
4226 " (parameters\n"
4227 " (declare (in) isampler2D sampler)\n"
4228 " (declare (in) vec3 P) \n"
4229 " (declare (in) vec2 dPdx) \n"
4230 " (declare (in) vec2 dPdy) )\n"
4231 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4232 "\n"
4233 " (signature uvec4\n"
4234 " (parameters\n"
4235 " (declare (in) usampler2D sampler)\n"
4236 " (declare (in) vec3 P) \n"
4237 " (declare (in) vec2 dPdx) \n"
4238 " (declare (in) vec2 dPdy) )\n"
4239 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4240 "\n"
4241 " (signature vec4\n"
4242 " (parameters\n"
4243 " (declare (in) sampler2D sampler)\n"
4244 " (declare (in) vec4 P) \n"
4245 " (declare (in) vec2 dPdx) \n"
4246 " (declare (in) vec2 dPdy) )\n"
4247 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4248 "\n"
4249 " (signature ivec4\n"
4250 " (parameters\n"
4251 " (declare (in) isampler2D sampler)\n"
4252 " (declare (in) vec4 P) \n"
4253 " (declare (in) vec2 dPdx) \n"
4254 " (declare (in) vec2 dPdy) )\n"
4255 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4256 "\n"
4257 " (signature uvec4\n"
4258 " (parameters\n"
4259 " (declare (in) usampler2D sampler)\n"
4260 " (declare (in) vec4 P) \n"
4261 " (declare (in) vec2 dPdx) \n"
4262 " (declare (in) vec2 dPdy) )\n"
4263 " ((return (txd (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4264 "\n"
4265 " (signature vec4\n"
4266 " (parameters\n"
4267 " (declare (in) sampler3D sampler)\n"
4268 " (declare (in) vec4 P) \n"
4269 " (declare (in) vec3 dPdx) \n"
4270 " (declare (in) vec3 dPdy) )\n"
4271 " ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4272 "\n"
4273 " (signature ivec4\n"
4274 " (parameters\n"
4275 " (declare (in) isampler3D sampler)\n"
4276 " (declare (in) vec4 P) \n"
4277 " (declare (in) vec3 dPdx) \n"
4278 " (declare (in) vec3 dPdy) )\n"
4279 " ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4280 "\n"
4281 " (signature uvec4\n"
4282 " (parameters\n"
4283 " (declare (in) usampler3D sampler)\n"
4284 " (declare (in) vec4 P) \n"
4285 " (declare (in) vec3 dPdx) \n"
4286 " (declare (in) vec3 dPdy) )\n"
4287 " ((return (txd (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () ((var_ref dPdx) (var_ref dPdy)) ))))\n"
4288 "\n"
4289 "))\n"
4290};
4291
4292static const char *builtins_130_textureProjLod = {
Kenneth Graunke8aa7dba2010-08-09 12:45:25 -07004293 "((function textureProjLod\n"
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004294 " (signature vec4\n"
4295 " (parameters\n"
4296 " (declare (in) sampler1D sampler)\n"
4297 " (declare (in) vec2 P) \n"
4298 " (declare (in) float lod) )\n"
4299 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
4300 "\n"
4301 " (signature ivec4\n"
4302 " (parameters\n"
4303 " (declare (in) isampler1D sampler)\n"
4304 " (declare (in) vec2 P) \n"
4305 " (declare (in) float lod) )\n"
4306 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
4307 "\n"
4308 " (signature uvec4\n"
4309 " (parameters\n"
4310 " (declare (in) usampler1D sampler)\n"
4311 " (declare (in) vec2 P) \n"
4312 " (declare (in) float lod) )\n"
4313 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref lod) ))))\n"
4314 "\n"
4315 " (signature vec4\n"
4316 " (parameters\n"
4317 " (declare (in) sampler1D sampler)\n"
4318 " (declare (in) vec4 P) \n"
4319 " (declare (in) float lod) )\n"
4320 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4321 "\n"
4322 " (signature ivec4\n"
4323 " (parameters\n"
4324 " (declare (in) isampler1D sampler)\n"
4325 " (declare (in) vec4 P) \n"
4326 " (declare (in) float lod) )\n"
4327 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4328 "\n"
4329 " (signature uvec4\n"
4330 " (parameters\n"
4331 " (declare (in) usampler1D sampler)\n"
4332 " (declare (in) vec4 P) \n"
4333 " (declare (in) float lod) )\n"
4334 " ((return (txl (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4335 "\n"
4336 " (signature vec4\n"
4337 " (parameters\n"
4338 " (declare (in) sampler2D sampler)\n"
4339 " (declare (in) vec3 P) \n"
4340 " (declare (in) float lod) )\n"
4341 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
4342 "\n"
4343 " (signature ivec4\n"
4344 " (parameters\n"
4345 " (declare (in) isampler2D sampler)\n"
4346 " (declare (in) vec3 P) \n"
4347 " (declare (in) float lod) )\n"
4348 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
4349 "\n"
4350 " (signature uvec4\n"
4351 " (parameters\n"
4352 " (declare (in) usampler2D sampler)\n"
4353 " (declare (in) vec3 P) \n"
4354 " (declare (in) float lod) )\n"
4355 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref lod) ))))\n"
4356 "\n"
4357 " (signature vec4\n"
4358 " (parameters\n"
4359 " (declare (in) sampler2D sampler)\n"
4360 " (declare (in) vec4 P) \n"
4361 " (declare (in) float lod) )\n"
4362 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4363 "\n"
4364 " (signature ivec4\n"
4365 " (parameters\n"
4366 " (declare (in) isampler2D sampler)\n"
4367 " (declare (in) vec4 P) \n"
4368 " (declare (in) float lod) )\n"
4369 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4370 "\n"
4371 " (signature uvec4\n"
4372 " (parameters\n"
4373 " (declare (in) usampler2D sampler)\n"
4374 " (declare (in) vec4 P) \n"
4375 " (declare (in) float lod) )\n"
4376 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4377 "\n"
4378 " (signature vec4\n"
4379 " (parameters\n"
4380 " (declare (in) sampler3D sampler)\n"
4381 " (declare (in) vec4 P) \n"
4382 " (declare (in) float lod) )\n"
4383 " ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4384 "\n"
4385 " (signature ivec4\n"
4386 " (parameters\n"
4387 " (declare (in) isampler3D sampler)\n"
4388 " (declare (in) vec4 P) \n"
4389 " (declare (in) float lod) )\n"
4390 " ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4391 "\n"
4392 " (signature uvec4\n"
4393 " (parameters\n"
4394 " (declare (in) usampler3D sampler)\n"
4395 " (declare (in) vec4 P) \n"
4396 " (declare (in) float lod) )\n"
4397 " ((return (txl (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref lod) ))))\n"
4398 "\n"
4399 "))\n"
4400};
4401
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004402static const char *functions_for_130 [] = {
Kenneth Graunkeaf057032010-06-09 16:14:45 -07004403 builtins_130_clamp,
Kenneth Graunkec9aabc82010-06-09 16:08:36 -07004404 builtins_130_cosh,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004405 builtins_130_equal,
4406 builtins_130_greaterThan,
4407 builtins_130_greaterThanEqual,
4408 builtins_130_lessThan,
4409 builtins_130_lessThanEqual,
Kenneth Graunkeaf057032010-06-09 16:14:45 -07004410 builtins_130_max,
4411 builtins_130_min,
Kenneth Graunke0a715272010-07-21 17:33:57 -07004412 builtins_130_mix,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004413 builtins_130_notEqual,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07004414 builtins_130_sign,
Kenneth Graunkec9aabc82010-06-09 16:08:36 -07004415 builtins_130_sinh,
4416 builtins_130_tanh,
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004417 builtins_130_texelFetch,
4418 builtins_130_texture,
4419 builtins_130_textureGrad,
4420 builtins_130_textureLod,
4421 builtins_130_textureProj,
4422 builtins_130_textureProjGrad,
4423 builtins_130_textureProjLod,
4424};
4425
4426/* 130_fs builtins */
4427
4428static const char *builtins_130_fs_texture = {
4429 "((function texture\n"
4430 " (signature vec4\n"
4431 " (parameters\n"
4432 " (declare (in) sampler1D sampler)\n"
4433 " (declare (in) float P) \n"
4434 " (declare (in) float bias) )\n"
4435 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4436 "\n"
4437 " (signature ivec4\n"
4438 " (parameters\n"
4439 " (declare (in) isampler1D sampler)\n"
4440 " (declare (in) float P) \n"
4441 " (declare (in) float bias) )\n"
4442 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4443 "\n"
4444 " (signature uvec4\n"
4445 " (parameters\n"
4446 " (declare (in) usampler1D sampler)\n"
4447 " (declare (in) float P) \n"
4448 " (declare (in) float bias) )\n"
4449 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4450 "\n"
4451 " (signature vec4\n"
4452 " (parameters\n"
4453 " (declare (in) sampler2D sampler)\n"
4454 " (declare (in) vec2 P) \n"
4455 " (declare (in) float bias) )\n"
4456 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4457 "\n"
4458 " (signature ivec4\n"
4459 " (parameters\n"
4460 " (declare (in) isampler2D sampler)\n"
4461 " (declare (in) vec2 P) \n"
4462 " (declare (in) float bias) )\n"
4463 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4464 "\n"
4465 " (signature uvec4\n"
4466 " (parameters\n"
4467 " (declare (in) usampler2D sampler)\n"
4468 " (declare (in) vec2 P) \n"
4469 " (declare (in) float bias) )\n"
4470 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4471 "\n"
4472 " (signature vec4\n"
4473 " (parameters\n"
4474 " (declare (in) sampler3D sampler)\n"
4475 " (declare (in) vec3 P) \n"
4476 " (declare (in) float bias) )\n"
4477 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4478 "\n"
4479 " (signature ivec4\n"
4480 " (parameters\n"
4481 " (declare (in) isampler3D sampler)\n"
4482 " (declare (in) vec3 P) \n"
4483 " (declare (in) float bias) )\n"
4484 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4485 "\n"
4486 " (signature uvec4\n"
4487 " (parameters\n"
4488 " (declare (in) usampler3D sampler)\n"
4489 " (declare (in) vec3 P) \n"
4490 " (declare (in) float bias) )\n"
4491 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4492 "\n"
4493 " (signature vec4\n"
4494 " (parameters\n"
4495 " (declare (in) samplerCube sampler)\n"
4496 " (declare (in) vec3 P) \n"
4497 " (declare (in) float bias) )\n"
4498 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4499 "\n"
4500 " (signature ivec4\n"
4501 " (parameters\n"
4502 " (declare (in) isamplerCube sampler)\n"
4503 " (declare (in) vec3 P) \n"
4504 " (declare (in) float bias) )\n"
4505 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4506 "\n"
4507 " (signature uvec4\n"
4508 " (parameters\n"
4509 " (declare (in) usamplerCube sampler)\n"
4510 " (declare (in) vec3 P) \n"
4511 " (declare (in) float bias) )\n"
4512 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4513 "\n"
4514 " (signature vec4\n"
4515 " (parameters\n"
4516 " (declare (in) sampler1DArray sampler)\n"
4517 " (declare (in) vec2 P) \n"
4518 " (declare (in) float bias) )\n"
4519 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4520 "\n"
4521 " (signature ivec4\n"
4522 " (parameters\n"
4523 " (declare (in) isampler1DArray sampler)\n"
4524 " (declare (in) vec2 P) \n"
4525 " (declare (in) float bias) )\n"
4526 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4527 "\n"
4528 " (signature uvec4\n"
4529 " (parameters\n"
4530 " (declare (in) usampler1DArray sampler)\n"
4531 " (declare (in) vec2 P) \n"
4532 " (declare (in) float bias) )\n"
4533 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4534 "\n"
4535 " (signature vec4\n"
4536 " (parameters\n"
4537 " (declare (in) sampler2DArray sampler)\n"
4538 " (declare (in) vec3 P) \n"
4539 " (declare (in) float bias) )\n"
4540 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4541 "\n"
4542 " (signature ivec4\n"
4543 " (parameters\n"
4544 " (declare (in) isampler2DArray sampler)\n"
4545 " (declare (in) vec3 P) \n"
4546 " (declare (in) float bias) )\n"
4547 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4548 "\n"
4549 " (signature uvec4\n"
4550 " (parameters\n"
4551 " (declare (in) usampler2DArray sampler)\n"
4552 " (declare (in) vec3 P) \n"
4553 " (declare (in) float bias) )\n"
4554 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4555 "\n"
4556 "))\n"
4557};
4558
4559static const char *builtins_130_fs_textureProj = {
4560 "((function textureProj\n"
4561 " (signature vec4\n"
4562 " (parameters\n"
4563 " (declare (in) sampler1D sampler)\n"
4564 " (declare (in) vec2 P) \n"
4565 " (declare (in) float bias) )\n"
4566 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
4567 "\n"
4568 " (signature ivec4\n"
4569 " (parameters\n"
4570 " (declare (in) isampler1D sampler)\n"
4571 " (declare (in) vec2 P) \n"
4572 " (declare (in) float bias) )\n"
4573 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
4574 "\n"
4575 " (signature uvec4\n"
4576 " (parameters\n"
4577 " (declare (in) usampler1D sampler)\n"
4578 " (declare (in) vec2 P) \n"
4579 " (declare (in) float bias) )\n"
4580 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz y (var_ref P)) () (var_ref bias) ))))\n"
4581 "\n"
4582 " (signature vec4\n"
4583 " (parameters\n"
4584 " (declare (in) sampler1D sampler)\n"
4585 " (declare (in) vec4 P) \n"
4586 " (declare (in) float bias) )\n"
4587 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4588 "\n"
4589 " (signature ivec4\n"
4590 " (parameters\n"
4591 " (declare (in) isampler1D sampler)\n"
4592 " (declare (in) vec4 P) \n"
4593 " (declare (in) float bias) )\n"
4594 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4595 "\n"
4596 " (signature uvec4\n"
4597 " (parameters\n"
4598 " (declare (in) usampler1D sampler)\n"
4599 " (declare (in) vec4 P) \n"
4600 " (declare (in) float bias) )\n"
4601 " ((return (txb (var_ref sampler) (swiz x (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4602 "\n"
4603 " (signature vec4\n"
4604 " (parameters\n"
4605 " (declare (in) sampler2D sampler)\n"
4606 " (declare (in) vec3 P) \n"
4607 " (declare (in) float bias) )\n"
4608 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
4609 "\n"
4610 " (signature ivec4\n"
4611 " (parameters\n"
4612 " (declare (in) isampler2D sampler)\n"
4613 " (declare (in) vec3 P) \n"
4614 " (declare (in) float bias) )\n"
4615 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
4616 "\n"
4617 " (signature uvec4\n"
4618 " (parameters\n"
4619 " (declare (in) usampler2D sampler)\n"
4620 " (declare (in) vec3 P) \n"
4621 " (declare (in) float bias) )\n"
4622 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz z (var_ref P)) () (var_ref bias) ))))\n"
4623 "\n"
4624 " (signature vec4\n"
4625 " (parameters\n"
4626 " (declare (in) sampler2D sampler)\n"
4627 " (declare (in) vec4 P) \n"
4628 " (declare (in) float bias) )\n"
4629 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4630 "\n"
4631 " (signature ivec4\n"
4632 " (parameters\n"
4633 " (declare (in) isampler2D sampler)\n"
4634 " (declare (in) vec4 P) \n"
4635 " (declare (in) float bias) )\n"
4636 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4637 "\n"
4638 " (signature uvec4\n"
4639 " (parameters\n"
4640 " (declare (in) usampler2D sampler)\n"
4641 " (declare (in) vec4 P) \n"
4642 " (declare (in) float bias) )\n"
4643 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4644 "\n"
4645 " (signature vec4\n"
4646 " (parameters\n"
4647 " (declare (in) sampler3D sampler)\n"
4648 " (declare (in) vec4 P) \n"
4649 " (declare (in) float bias) )\n"
4650 " ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4651 "\n"
4652 " (signature ivec4\n"
4653 " (parameters\n"
4654 " (declare (in) isampler3D sampler)\n"
4655 " (declare (in) vec4 P) \n"
4656 " (declare (in) float bias) )\n"
4657 " ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4658 "\n"
4659 " (signature uvec4\n"
4660 " (parameters\n"
4661 " (declare (in) usampler3D sampler)\n"
4662 " (declare (in) vec4 P) \n"
4663 " (declare (in) float bias) )\n"
4664 " ((return (txb (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) (swiz w (var_ref P)) () (var_ref bias) ))))\n"
4665 "\n"
4666 "))\n"
4667};
4668
4669static const char *functions_for_130_fs [] = {
4670 builtins_130_fs_texture,
4671 builtins_130_fs_textureProj,
4672};
4673
4674/* ARB_texture_rectangle builtins */
4675
4676static const char *builtins_ARB_texture_rectangle_textures = {
4677 "((function texture2DRect\n"
4678 " (signature vec4\n"
4679 " (parameters\n"
4680 " (declare (in) sampler2DRect sampler)\n"
4681 " (declare (in) vec2 P) )\n"
4682 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
4683 "\n"
4684 ")\n"
4685 " (function shadow2DRect\n"
4686 " (signature vec4\n"
4687 " (parameters\n"
4688 " (declare (in) sampler2DRectShadow sampler)\n"
4689 " (declare (in) vec3 P) )\n"
4690 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
4691 "\n"
4692 "))\n"
4693};
4694
4695static const char *functions_for_ARB_texture_rectangle [] = {
4696 builtins_ARB_texture_rectangle_textures,
4697};
4698
4699/* EXT_texture_array builtins */
4700
4701static const char *builtins_EXT_texture_array_textures = {
4702 "((function texture1DArray\n"
4703 " (signature vec4\n"
4704 " (parameters\n"
4705 " (declare (in) sampler1DArray sampler)\n"
4706 " (declare (in) vec2 P) )\n"
4707 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
4708 "\n"
4709 ")\n"
4710 " (function texture1DArrayLod\n"
4711 " (signature vec4\n"
4712 " (parameters\n"
4713 " (declare (in) sampler1DArray sampler)\n"
4714 " (declare (in) vec2 P) \n"
4715 " (declare (in) float lod) )\n"
4716 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4717 "\n"
4718 ")\n"
4719 " (function texture2DArray\n"
4720 " (signature vec4\n"
4721 " (parameters\n"
4722 " (declare (in) sampler2DArray sampler)\n"
4723 " (declare (in) vec3 P) )\n"
4724 " ((return (tex (var_ref sampler) (var_ref P) (0 0 0) 1 () ))))\n"
4725 "\n"
4726 ")\n"
4727 " (function texture2DArrayLod\n"
4728 " (signature vec4\n"
4729 " (parameters\n"
4730 " (declare (in) sampler2DArray sampler)\n"
4731 " (declare (in) vec3 P) \n"
4732 " (declare (in) float lod) )\n"
4733 " ((return (txl (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref lod) ))))\n"
4734 "\n"
4735 ")\n"
4736 " (function shadow1DArray\n"
4737 " (signature vec4\n"
4738 " (parameters\n"
4739 " (declare (in) sampler1DArrayShadow sampler)\n"
4740 " (declare (in) vec3 P) )\n"
4741 " ((return (tex (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) ))))\n"
4742 "\n"
4743 ")\n"
4744 " (function shadow1DArrayLod\n"
4745 " (signature vec4\n"
4746 " (parameters\n"
4747 " (declare (in) sampler1DArrayShadow sampler)\n"
4748 " (declare (in) vec3 P) \n"
4749 " (declare (in) float lod) )\n"
4750 " ((return (txl (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref lod) ))))\n"
4751 "\n"
4752 ")\n"
4753 " (function shadow2DArray\n"
4754 " (signature vec4\n"
4755 " (parameters\n"
4756 " (declare (in) sampler2DArrayShadow sampler)\n"
4757 " (declare (in) vec4 P) )\n"
4758 " ((return (tex (var_ref sampler) (swiz xyz (var_ref P)) (0 0 0) 1 (swiz w (var_ref P)) ))))\n"
4759 "\n"
4760 "))\n"
4761};
4762
4763static const char *functions_for_EXT_texture_array [] = {
4764 builtins_EXT_texture_array_textures,
4765};
4766
4767/* EXT_texture_array_fs builtins */
4768
4769static const char *builtins_EXT_texture_array_fs_textures = {
4770 "((function texture1DArray\n"
4771 " (signature vec4\n"
4772 " (parameters\n"
4773 " (declare (in) sampler1DArray sampler)\n"
4774 " (declare (in) vec2 P) \n"
4775 " (declare (in) float bias) )\n"
4776 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4777 "\n"
4778 ")\n"
4779 " (function texture2DArray\n"
4780 " (signature vec4\n"
4781 " (parameters\n"
4782 " (declare (in) sampler2DArray sampler)\n"
4783 " (declare (in) vec3 P) \n"
4784 " (declare (in) float bias) )\n"
4785 " ((return (txb (var_ref sampler) (var_ref P) (0 0 0) 1 () (var_ref bias) ))))\n"
4786 "\n"
4787 ")\n"
4788 " (function shadow1DArray\n"
4789 " (signature vec4\n"
4790 " (parameters\n"
4791 " (declare (in) sampler1DArrayShadow sampler)\n"
4792 " (declare (in) vec3 P) \n"
4793 " (declare (in) float bias) )\n"
4794 " ((return (txb (var_ref sampler) (swiz xy (var_ref P)) (0 0 0) 1 (swiz z (var_ref P)) (var_ref bias) ))))\n"
4795 "\n"
4796 "))\n"
4797};
4798
4799static const char *functions_for_EXT_texture_array_fs [] = {
4800 builtins_EXT_texture_array_fs_textures,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004801};
Eric Anholtc22c4002010-03-26 18:20:30 -07004802
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004803void *builtin_mem_ctx = NULL;
4804
4805void
4806_mesa_glsl_release_functions(void)
4807{
4808 talloc_free(builtin_mem_ctx);
4809}
4810
Eric Anholtc22c4002010-03-26 18:20:30 -07004811void
4812_mesa_glsl_initialize_functions(exec_list *instructions,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004813 struct _mesa_glsl_parse_state *state)
Eric Anholtc22c4002010-03-26 18:20:30 -07004814{
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004815 if (builtin_mem_ctx == NULL)
4816 builtin_mem_ctx = talloc_init("GLSL built-in functions");
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004817
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004818 state->num_builtins_to_link = 0;
4819 if (state->language_version >= 110) {
4820 static gl_shader *sh = NULL;
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004821
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004822 if (sh == NULL) {
4823 sh = read_builtins(GL_VERTEX_SHADER, functions_for_110,
4824 Elements(functions_for_110));
4825 talloc_steal(builtin_mem_ctx, sh);
4826 }
Eric Anholtda46e5f2010-05-19 13:57:01 -07004827
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004828 import_prototypes(sh->ir, instructions, state->symbols, state);
4829 state->builtins_to_link[state->num_builtins_to_link] = sh;
4830 state->num_builtins_to_link++;
4831 }
Kenneth Graunke0c8ffad2010-06-09 15:17:41 -07004832
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004833 if (state->target == fragment_shader && state->language_version >= 110) {
4834 static gl_shader *sh = NULL;
Kenneth Graunkeb3262122010-04-28 23:01:33 -07004835
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004836 if (sh == NULL) {
4837 sh = read_builtins(GL_VERTEX_SHADER, functions_for_110_fs,
4838 Elements(functions_for_110_fs));
4839 talloc_steal(builtin_mem_ctx, sh);
4840 }
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004841
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004842 import_prototypes(sh->ir, instructions, state->symbols, state);
4843 state->builtins_to_link[state->num_builtins_to_link] = sh;
4844 state->num_builtins_to_link++;
4845 }
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004846
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004847 if (state->target == vertex_shader && state->language_version >= 110) {
4848 static gl_shader *sh = NULL;
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004849
Ian Romanickd5be2ac2010-07-20 11:29:46 -07004850 if (sh == NULL) {
4851 sh = read_builtins(GL_VERTEX_SHADER, functions_for_110_vs,
4852 Elements(functions_for_110_vs));
4853 talloc_steal(builtin_mem_ctx, sh);
4854 }
4855
4856 import_prototypes(sh->ir, instructions, state->symbols, state);
4857 state->builtins_to_link[state->num_builtins_to_link] = sh;
4858 state->num_builtins_to_link++;
4859 }
4860
4861 if (state->language_version >= 120) {
4862 static gl_shader *sh = NULL;
4863
4864 if (sh == NULL) {
4865 sh = read_builtins(GL_VERTEX_SHADER, functions_for_120,
4866 Elements(functions_for_120));
4867 talloc_steal(builtin_mem_ctx, sh);
4868 }
4869
4870 import_prototypes(sh->ir, instructions, state->symbols, state);
4871 state->builtins_to_link[state->num_builtins_to_link] = sh;
4872 state->num_builtins_to_link++;
4873 }
4874
4875 if (state->language_version >= 130) {
4876 static gl_shader *sh = NULL;
4877
4878 if (sh == NULL) {
4879 sh = read_builtins(GL_VERTEX_SHADER, functions_for_130,
4880 Elements(functions_for_130));
4881 talloc_steal(builtin_mem_ctx, sh);
4882 }
4883
4884 import_prototypes(sh->ir, instructions, state->symbols, state);
4885 state->builtins_to_link[state->num_builtins_to_link] = sh;
4886 state->num_builtins_to_link++;
4887 }
4888
4889 if (state->target == fragment_shader && state->language_version >= 130) {
4890 static gl_shader *sh = NULL;
4891
4892 if (sh == NULL) {
4893 sh = read_builtins(GL_VERTEX_SHADER, functions_for_130_fs,
4894 Elements(functions_for_130_fs));
4895 talloc_steal(builtin_mem_ctx, sh);
4896 }
4897
4898 import_prototypes(sh->ir, instructions, state->symbols, state);
4899 state->builtins_to_link[state->num_builtins_to_link] = sh;
4900 state->num_builtins_to_link++;
4901 }
4902
4903 if (state->ARB_texture_rectangle_enable) {
4904 static gl_shader *sh = NULL;
4905
4906 if (sh == NULL) {
4907 sh = read_builtins(GL_VERTEX_SHADER, functions_for_ARB_texture_rectangle,
4908 Elements(functions_for_ARB_texture_rectangle));
4909 talloc_steal(builtin_mem_ctx, sh);
4910 }
4911
4912 import_prototypes(sh->ir, instructions, state->symbols, state);
4913 state->builtins_to_link[state->num_builtins_to_link] = sh;
4914 state->num_builtins_to_link++;
4915 }
4916
4917 if (state->EXT_texture_array_enable) {
4918 static gl_shader *sh = NULL;
4919
4920 if (sh == NULL) {
4921 sh = read_builtins(GL_VERTEX_SHADER, functions_for_EXT_texture_array,
4922 Elements(functions_for_EXT_texture_array));
4923 talloc_steal(builtin_mem_ctx, sh);
4924 }
4925
4926 import_prototypes(sh->ir, instructions, state->symbols, state);
4927 state->builtins_to_link[state->num_builtins_to_link] = sh;
4928 state->num_builtins_to_link++;
4929 }
4930
4931 if (state->target == fragment_shader && state->EXT_texture_array_enable) {
4932 static gl_shader *sh = NULL;
4933
4934 if (sh == NULL) {
4935 sh = read_builtins(GL_VERTEX_SHADER, functions_for_EXT_texture_array_fs,
4936 Elements(functions_for_EXT_texture_array_fs));
4937 talloc_steal(builtin_mem_ctx, sh);
4938 }
4939
4940 import_prototypes(sh->ir, instructions, state->symbols, state);
4941 state->builtins_to_link[state->num_builtins_to_link] = sh;
4942 state->num_builtins_to_link++;
4943 }
Kenneth Graunke4b0029a2010-06-08 16:29:17 -07004944
Eric Anholtc22c4002010-03-26 18:20:30 -07004945}