blob: 909329c563abf3e8eb913f6d13a3e56876c666c6 [file] [log] [blame]
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001/* DO NOT MODIFY - automatically generated by generate_builtins.pl */
Eric Anholtc22c4002010-03-26 18:20:30 -07002/*
3 * Copyright © 2010 Intel Corporation
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
14 * Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
Kenneth Graunkeb3262122010-04-28 23:01:33 -070025#include <stdio.h>
Eric Anholtc22c4002010-03-26 18:20:30 -070026#include "glsl_parser_extras.h"
Kenneth Graunkeb3262122010-04-28 23:01:33 -070027#include "ir_reader.h"
Eric Anholtddd2e832010-03-27 12:59:42 -070028
Eric Anholtc22c4002010-03-26 18:20:30 -070029void
Kenneth Graunkeb3262122010-04-28 23:01:33 -070030read_builtins(_mesa_glsl_parse_state *st, exec_list *instructions,
31 const char **functions, unsigned count)
Eric Anholtc22c4002010-03-26 18:20:30 -070032{
Kenneth Graunkeb3262122010-04-28 23:01:33 -070033 if (st->error)
34 return;
Eric Anholtc22c4002010-03-26 18:20:30 -070035
Kenneth Graunkeb3262122010-04-28 23:01:33 -070036 for (unsigned i = 0; i < count; i++) {
37 _mesa_glsl_read_ir(st, instructions, functions[i]);
Eric Anholtc22c4002010-03-26 18:20:30 -070038
Kenneth Graunkeb3262122010-04-28 23:01:33 -070039 if (st->error) {
40 printf("error reading builtin: %.35s ...\n", functions[i]);
41 return;
42 }
Eric Anholtcc4ef152010-04-08 15:35:34 -070043 }
44}
45
Kenneth Graunkeb3262122010-04-28 23:01:33 -070046/* Version 110 builtins */
Eric Anholt53afc362010-03-27 13:55:04 -070047
Kenneth Graunkeb3262122010-04-28 23:01:33 -070048static const char *builtins_110_abs = {
49 "((function abs\n"
50 " (signature float\n"
51 " (parameters\n"
52 " (declare (in) float arg0))\n"
53 " ((return (expression float abs (var_ref arg0)))))\n"
54 "\n"
55 " (signature vec2\n"
56 " (parameters\n"
57 " (declare (in) vec2 arg0))\n"
58 " ((return (expression vec2 abs (var_ref arg0)))))\n"
59 "\n"
60 " (signature vec3\n"
61 " (parameters\n"
62 " (declare (in) vec3 arg0))\n"
63 " ((return (expression vec3 abs (var_ref arg0)))))\n"
64 "\n"
65 " (signature vec4\n"
66 " (parameters\n"
67 " (declare (in) vec4 arg0))\n"
68 " ((return (expression vec4 abs (var_ref arg0)))))\n"
69 "))\n"
70};
Eric Anholt53afc362010-03-27 13:55:04 -070071
Kenneth Graunkeb3262122010-04-28 23:01:33 -070072static const char *builtins_110_all = {
73 "((function all\n"
74 " (signature bool\n"
75 " (parameters\n"
76 " (declare (in) bvec2 arg0))\n"
77 " ((return (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
78 "\n"
79 " (signature bool\n"
80 " (parameters\n"
81 " (declare (in) bvec3 arg0))\n"
82 " ((return (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
83 "\n"
84 " (signature bool\n"
85 " (parameters\n"
86 " (declare (in) bvec4 arg0))\n"
87 " ((return (expression bool && (expression bool && (expression bool && (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0))))))\n"
88 "))\n"
89};
Eric Anholt53afc362010-03-27 13:55:04 -070090
Kenneth Graunkeb3262122010-04-28 23:01:33 -070091static const char *builtins_110_any = {
92 "((function any\n"
93 " (signature bool\n"
94 " (parameters\n"
95 " (declare (in) bvec2 arg0))\n"
96 " ((return (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))))))\n"
97 "\n"
98 " (signature bool\n"
99 " (parameters\n"
100 " (declare (in) bvec3 arg0))\n"
101 " ((return (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))))))\n"
102 "\n"
103 " (signature bool\n"
104 " (parameters\n"
105 " (declare (in) bvec4 arg0))\n"
106 " ((return (expression bool || (expression bool || (expression bool || (swiz x (var_ref arg0))(swiz y (var_ref arg0))) (swiz z (var_ref arg0))) (swiz w (var_ref arg0))))))\n"
107 "))\n"
108};
Eric Anholt53afc362010-03-27 13:55:04 -0700109
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700110static const char *builtins_110_ceil = {
111 "((function ceil\n"
112 " (signature float\n"
113 " (parameters\n"
114 " (declare (in) float arg0))\n"
115 " ((return (expression float ceil (var_ref arg0)))))\n"
116 "\n"
117 " (signature vec2\n"
118 " (parameters\n"
119 " (declare (in) vec2 arg0))\n"
120 " ((return (expression vec2 ceil (var_ref arg0)))))\n"
121 "\n"
122 " (signature vec3\n"
123 " (parameters\n"
124 " (declare (in) vec3 arg0))\n"
125 " ((return (expression vec3 ceil (var_ref arg0)))))\n"
126 "\n"
127 " (signature vec4\n"
128 " (parameters\n"
129 " (declare (in) vec4 arg0))\n"
130 " ((return (expression vec4 ceil (var_ref arg0)))))\n"
131 "))\n"
132};
Eric Anholt53afc362010-03-27 13:55:04 -0700133
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700134static const char *builtins_110_clamp = {
135 "((function clamp\n"
136 " (signature float\n"
137 " (parameters\n"
138 " (declare (in) float arg0)\n"
139 " (declare (in) float arg1)\n"
140 " (declare (in) float arg2))\n"
141 " ((return (expression float max (expression float min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
142 "\n"
143 " (signature vec2\n"
144 " (parameters\n"
145 " (declare (in) vec2 arg0)\n"
146 " (declare (in) vec2 arg1)\n"
147 " (declare (in) vec2 arg2))\n"
148 " ((return (expression vec2 max (expression vec2 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
149 "\n"
150 " (signature vec3\n"
151 " (parameters\n"
152 " (declare (in) vec3 arg0)\n"
153 " (declare (in) vec3 arg1)\n"
154 " (declare (in) vec3 arg2))\n"
155 " ((return (expression vec3 max (expression vec3 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
156 "\n"
157 " (signature vec4\n"
158 " (parameters\n"
159 " (declare (in) vec4 arg0)\n"
160 " (declare (in) vec4 arg1)\n"
161 " (declare (in) vec4 arg2))\n"
162 " ((return (expression vec4 max (expression vec4 min (var_ref arg0) (var_ref arg2)) (var_ref arg1)))))\n"
163 "))\n"
164};
Eric Anholt53afc362010-03-27 13:55:04 -0700165
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700166static const char *builtins_110_cos = {
167 "((function cos\n"
168 " (signature float\n"
169 " (parameters\n"
170 " (declare (in) float angle))\n"
171 " ((return (expression float cos (var_ref angle)))))\n"
172 "\n"
173 " (signature vec2\n"
174 " (parameters\n"
175 " (declare (in) vec2 angle))\n"
176 " ((return (expression vec2 cos (var_ref angle)))))\n"
177 "\n"
178 " (signature vec3\n"
179 " (parameters\n"
180 " (declare (in) vec3 angle))\n"
181 " ((return (expression vec3 cos (var_ref angle)))))\n"
182 "\n"
183 " (signature vec4\n"
184 " (parameters\n"
185 " (declare (in) vec4 angle))\n"
186 " ((return (expression vec4 cos (var_ref angle)))))\n"
187 "))\n"
188};
189
190static const char *builtins_110_cross = {
191 "((function cross\n"
192 " (signature vec3\n"
193 " (parameters\n"
194 " (declare (in) vec3 arg0)\n"
195 " (declare (in) vec3 arg1))\n"
196 " ((declare () vec3 t)\n"
197 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
198 " (expression float - (expression float * (swiz y (var_ref arg0)) (swiz z (var_ref arg1)))\n"
199 " (expression float * (swiz y (var_ref arg1)) (swiz z (var_ref arg0)))))\n"
200 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
201 " (expression float - (expression float * (swiz z (var_ref arg0)) (swiz x (var_ref arg1)))\n"
202 " (expression float * (swiz z (var_ref arg1)) (swiz x (var_ref arg0)))))\n"
203 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
204 " (expression float - (expression float * (swiz x (var_ref arg0)) (swiz y (var_ref arg1)))\n"
205 " (expression float * (swiz x (var_ref arg1)) (swiz y (var_ref arg0)))))\n"
206 " (return (var_ref t))))\n"
207 "))\n"
208};
209
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700210static const char *builtins_110_degrees = {
211 "((function degrees\n"
212 " (signature float\n"
213 " (parameters\n"
214 " (declare (in) float arg0))\n"
215 " ((return (expression float * (var_ref arg0) (constant float (57.295780))))))\n"
216 "\n"
217 " (signature vec2\n"
218 " (parameters\n"
219 " (declare (in) vec2 arg0))\n"
220 " ((return (expression vec2 * (var_ref arg0) (constant float (57.295780))))))\n"
221 "\n"
222 " (signature vec3\n"
223 " (parameters\n"
224 " (declare (in) vec3 arg0))\n"
225 " ((return (expression vec3 * (var_ref arg0) (constant float (57.295780))))))\n"
226 "\n"
227 " (signature vec4\n"
228 " (parameters\n"
229 " (declare (in) vec4 arg0))\n"
230 " ((return (expression vec4 * (var_ref arg0) (constant float (57.295780))))))\n"
231 "))\n"
232};
Eric Anholt53afc362010-03-27 13:55:04 -0700233
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700234static const char *builtins_110_dot = {
235 "((function dot\n"
236 " (signature float\n"
237 " (parameters\n"
238 " (declare (in) float arg0)\n"
239 " (declare (in) float arg1))\n"
240 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
241 "\n"
242 " (signature float\n"
243 " (parameters\n"
244 " (declare (in) vec2 arg0)\n"
245 " (declare (in) vec2 arg1))\n"
246 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
247 "\n"
248 " (signature float\n"
249 " (parameters\n"
250 " (declare (in) vec3 arg0)\n"
251 " (declare (in) vec3 arg1))\n"
252 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
253 "\n"
254 " (signature float\n"
255 " (parameters\n"
256 " (declare (in) vec4 arg0)\n"
257 " (declare (in) vec4 arg1))\n"
258 " ((return (expression float dot (var_ref arg0) (var_ref arg1)))))\n"
259 "))\n"
260};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700261
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700262static const char *builtins_110_equal = {
263 "((function equal\n"
264 " (signature bvec2\n"
265 " (parameters\n"
266 " (declare (in) vec2 arg0)\n"
267 " (declare (in) vec2 arg1))\n"
268 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700269 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
270 " (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 -0700271 " (return (var_ref temp))))\n"
272 "\n"
273 " (signature bvec3\n"
274 " (parameters\n"
275 " (declare (in) vec3 arg0)\n"
276 " (declare (in) vec3 arg1))\n"
277 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700278 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
279 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
280 " (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 -0700281 " (return (var_ref temp))))\n"
282 "\n"
283 " (signature bvec4\n"
284 " (parameters\n"
285 " (declare (in) vec4 arg0)\n"
286 " (declare (in) vec4 arg1))\n"
287 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700288 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
289 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
290 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
291 " (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 -0700292 " (return (var_ref temp))))\n"
293 "\n"
294 " (signature bvec2\n"
295 " (parameters\n"
296 " (declare (in) ivec2 arg0)\n"
297 " (declare (in) ivec2 arg1))\n"
298 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700299 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
300 " (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 -0700301 " (return (var_ref temp))))\n"
302 "\n"
303 " (signature bvec3\n"
304 " (parameters\n"
305 " (declare (in) ivec3 arg0)\n"
306 " (declare (in) ivec3 arg1))\n"
307 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700308 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
309 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
310 " (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 -0700311 " (return (var_ref temp))))\n"
312 "\n"
313 " (signature bvec4\n"
314 " (parameters\n"
315 " (declare (in) ivec4 arg0)\n"
316 " (declare (in) ivec4 arg1))\n"
317 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700318 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
319 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
320 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
321 " (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 -0700322 " (return (var_ref temp))))\n"
323 "))\n"
324};
Eric Anholtc22c4002010-03-26 18:20:30 -0700325
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700326static const char *builtins_110_exp = {
327 "((function exp\n"
328 " (signature float\n"
329 " (parameters\n"
330 " (declare (in) float arg0))\n"
331 " ((return (expression float exp (var_ref arg0)))))\n"
332 "\n"
333 " (signature vec2\n"
334 " (parameters\n"
335 " (declare (in) vec2 arg0))\n"
336 " ((return (expression vec2 exp (var_ref arg0)))))\n"
337 "\n"
338 " (signature vec3\n"
339 " (parameters\n"
340 " (declare (in) vec3 arg0))\n"
341 " ((return (expression vec3 exp (var_ref arg0)))))\n"
342 "\n"
343 " (signature vec4\n"
344 " (parameters\n"
345 " (declare (in) vec4 arg0))\n"
346 " ((return (expression vec4 exp (var_ref arg0)))))\n"
347 "))\n"
348};
Eric Anholt76a91e12010-03-27 14:04:43 -0700349
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700350static const char *builtins_110_exp2 = {
351 "((function exp2\n"
352 " (signature float\n"
353 " (parameters\n"
354 " (declare (in) float arg0))\n"
355 " ((return (expression float exp2 (var_ref arg0)))))\n"
356 "\n"
357 " (signature vec2\n"
358 " (parameters\n"
359 " (declare (in) vec2 arg0))\n"
360 " ((return (expression vec2 exp2 (var_ref arg0)))))\n"
361 "\n"
362 " (signature vec3\n"
363 " (parameters\n"
364 " (declare (in) vec3 arg0))\n"
365 " ((return (expression vec3 exp2 (var_ref arg0)))))\n"
366 "\n"
367 " (signature vec4\n"
368 " (parameters\n"
369 " (declare (in) vec4 arg0))\n"
370 " ((return (expression vec4 exp2 (var_ref arg0)))))\n"
371 "))\n"
372};
Eric Anholt76a91e12010-03-27 14:04:43 -0700373
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700374static const char *builtins_110_floor = {
375 "((function floor\n"
376 " (signature float\n"
377 " (parameters\n"
378 " (declare (in) float arg0))\n"
379 " ((return (expression float floor (var_ref arg0)))))\n"
380 "\n"
381 " (signature vec2\n"
382 " (parameters\n"
383 " (declare (in) vec2 arg0))\n"
384 " ((return (expression vec2 floor (var_ref arg0)))))\n"
385 "\n"
386 " (signature vec3\n"
387 " (parameters\n"
388 " (declare (in) vec3 arg0))\n"
389 " ((return (expression vec3 floor (var_ref arg0)))))\n"
390 "\n"
391 " (signature vec4\n"
392 " (parameters\n"
393 " (declare (in) vec4 arg0))\n"
394 " ((return (expression vec4 floor (var_ref arg0)))))\n"
395 "))\n"
396};
Eric Anholt76a91e12010-03-27 14:04:43 -0700397
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700398static const char *builtins_110_fract = {
399 "((function fract\n"
400 " (signature float\n"
401 " (parameters\n"
402 " (declare (in) float x))\n"
403 " ((return (expression float - (var_ref x) (expression float floor (var_ref x))))))\n"
404 "\n"
405 " (signature vec2\n"
406 " (parameters\n"
407 " (declare (in) vec2 x))\n"
408 " ((declare () vec2 t)\n"
409 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
410 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
411 " (return (var_ref t))))\n"
412 "\n"
413 " (signature vec3\n"
414 " (parameters\n"
415 " (declare (in) vec3 x))\n"
416 " ((declare () vec3 t)\n"
417 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
418 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
419 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
420 " (return (var_ref t))))\n"
421 "\n"
422 " (signature vec4\n"
423 " (parameters\n"
424 " (declare (in) vec4 x))\n"
425 " ((declare () vec4 t)\n"
426 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float - (swiz x (var_ref x)) (expression float floor (swiz x (var_ref x)))))\n"
427 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float - (swiz y (var_ref x)) (expression float floor (swiz y (var_ref x)))))\n"
428 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float - (swiz z (var_ref x)) (expression float floor (swiz z (var_ref x)))))\n"
429 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float - (swiz w (var_ref x)) (expression float floor (swiz w (var_ref x)))))\n"
430 " (return (var_ref t))))\n"
431 "))\n"
432 "\n"
433};
434
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700435static const char *builtins_110_greaterThan = {
436 "((function greaterThan\n"
437 " (signature bvec2\n"
438 " (parameters\n"
439 " (declare (in) vec2 arg0)\n"
440 " (declare (in) vec2 arg1))\n"
441 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700442 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
443 " (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 -0700444 " (return (var_ref temp))))\n"
445 "\n"
446 " (signature bvec3\n"
447 " (parameters\n"
448 " (declare (in) vec3 arg0)\n"
449 " (declare (in) vec3 arg1))\n"
450 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700451 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
452 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
453 " (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 -0700454 " (return (var_ref temp))))\n"
455 "\n"
456 " (signature bvec4\n"
457 " (parameters\n"
458 " (declare (in) vec4 arg0)\n"
459 " (declare (in) vec4 arg1))\n"
460 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700461 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
462 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
463 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
464 " (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 -0700465 " (return (var_ref temp))))\n"
466 "\n"
467 " (signature bvec2\n"
468 " (parameters\n"
469 " (declare (in) ivec2 arg0)\n"
470 " (declare (in) ivec2 arg1))\n"
471 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700472 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
473 " (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 -0700474 " (return (var_ref temp))))\n"
475 "\n"
476 " (signature bvec3\n"
477 " (parameters\n"
478 " (declare (in) ivec3 arg0)\n"
479 " (declare (in) ivec3 arg1))\n"
480 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700481 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
482 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
483 " (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 -0700484 " (return (var_ref temp))))\n"
485 "\n"
486 " (signature bvec4\n"
487 " (parameters\n"
488 " (declare (in) ivec4 arg0)\n"
489 " (declare (in) ivec4 arg1))\n"
490 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700491 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
492 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
493 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
494 " (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 -0700495 " (return (var_ref temp))))\n"
496 "))\n"
497};
Eric Anholt76a91e12010-03-27 14:04:43 -0700498
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700499static const char *builtins_110_greaterThanEqual = {
500 "((function greaterThanEqual\n"
501 " (signature bvec2\n"
502 " (parameters\n"
503 " (declare (in) vec2 arg0)\n"
504 " (declare (in) vec2 arg1))\n"
505 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700506 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
507 " (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 -0700508 " (return (var_ref temp))))\n"
509 "\n"
510 " (signature bvec3\n"
511 " (parameters\n"
512 " (declare (in) vec3 arg0)\n"
513 " (declare (in) vec3 arg1))\n"
514 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700515 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
516 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
517 " (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 -0700518 " (return (var_ref temp))))\n"
519 "\n"
520 " (signature bvec4\n"
521 " (parameters\n"
522 " (declare (in) vec4 arg0)\n"
523 " (declare (in) vec4 arg1))\n"
524 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700525 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
526 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
527 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
528 " (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 -0700529 " (return (var_ref temp))))\n"
530 "\n"
531 " (signature bvec2\n"
532 " (parameters\n"
533 " (declare (in) ivec2 arg0)\n"
534 " (declare (in) ivec2 arg1))\n"
535 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700536 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
537 " (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 -0700538 " (return (var_ref temp))))\n"
539 "\n"
540 " (signature bvec3\n"
541 " (parameters\n"
542 " (declare (in) ivec3 arg0)\n"
543 " (declare (in) ivec3 arg1))\n"
544 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700545 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
546 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
547 " (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 -0700548 " (return (var_ref temp))))\n"
549 "\n"
550 " (signature bvec4\n"
551 " (parameters\n"
552 " (declare (in) ivec4 arg0)\n"
553 " (declare (in) ivec4 arg1))\n"
554 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700555 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
556 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
557 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
558 " (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 -0700559 " (return (var_ref temp))))\n"
560 "))\n"
561};
Eric Anholt76a91e12010-03-27 14:04:43 -0700562
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700563static const char *builtins_110_inversesqrt = {
564 "((function inversesqrt\n"
565 " (signature float\n"
566 " (parameters\n"
567 " (declare (in) float arg0))\n"
568 " ((return (expression float rsq (var_ref arg0)))))\n"
569 "\n"
570 " (signature vec2\n"
571 " (parameters\n"
572 " (declare (in) vec2 arg0))\n"
573 " ((return (expression vec2 rsq (var_ref arg0)))))\n"
574 "\n"
575 " (signature vec3\n"
576 " (parameters\n"
577 " (declare (in) vec3 arg0))\n"
578 " ((return (expression vec3 rsq (var_ref arg0)))))\n"
579 "\n"
580 " (signature vec4\n"
581 " (parameters\n"
582 " (declare (in) vec4 arg0))\n"
583 " ((return (expression vec4 rsq (var_ref arg0)))))\n"
584 "))\n"
585};
Eric Anholt76a91e12010-03-27 14:04:43 -0700586
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700587static const char *builtins_110_length = {
588 "((function length\n"
589 " (signature float\n"
590 " (parameters\n"
591 " (declare (in) float arg0))\n"
592 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
593 "\n"
594 " (signature float\n"
595 " (parameters\n"
596 " (declare (in) vec2 arg0))\n"
597 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
598 "\n"
599 " (signature float\n"
600 " (parameters\n"
601 " (declare (in) vec3 arg0))\n"
602 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
603 "\n"
604 " (signature float\n"
605 " (parameters\n"
606 " (declare (in) vec4 arg0))\n"
607 " ((return (expression float sqrt (expression float dot (var_ref arg0) (var_ref arg0))))))\n"
608 "))\n"
609};
Kenneth Graunke9fa99f32010-04-21 12:30:22 -0700610
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700611static const char *builtins_110_lessThan = {
612 "((function lessThan\n"
613 " (signature bvec2\n"
614 " (parameters\n"
615 " (declare (in) vec2 arg0)\n"
616 " (declare (in) vec2 arg1))\n"
617 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700618 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
619 " (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 -0700620 " (return (var_ref temp))))\n"
621 "\n"
622 " (signature bvec3\n"
623 " (parameters\n"
624 " (declare (in) vec3 arg0)\n"
625 " (declare (in) vec3 arg1))\n"
626 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700627 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
628 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
629 " (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 -0700630 " (return (var_ref temp))))\n"
631 "\n"
632 " (signature bvec4\n"
633 " (parameters\n"
634 " (declare (in) vec4 arg0)\n"
635 " (declare (in) vec4 arg1))\n"
636 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700637 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
638 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
639 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
640 " (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 -0700641 " (return (var_ref temp))))\n"
642 "\n"
643 " (signature bvec2\n"
644 " (parameters\n"
645 " (declare (in) ivec2 arg0)\n"
646 " (declare (in) ivec2 arg1))\n"
647 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700648 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
649 " (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 -0700650 " (return (var_ref temp))))\n"
651 "\n"
652 " (signature bvec3\n"
653 " (parameters\n"
654 " (declare (in) ivec3 arg0)\n"
655 " (declare (in) ivec3 arg1))\n"
656 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700657 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
658 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
659 " (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 -0700660 " (return (var_ref temp))))\n"
661 "\n"
662 " (signature bvec4\n"
663 " (parameters\n"
664 " (declare (in) ivec4 arg0)\n"
665 " (declare (in) ivec4 arg1))\n"
666 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700667 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
668 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
669 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
670 " (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 -0700671 " (return (var_ref temp))))\n"
672 "))\n"
673};
Eric Anholt76a91e12010-03-27 14:04:43 -0700674
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700675static const char *builtins_110_lessThanEqual = {
676 "((function lessThanEqual\n"
677 " (signature bvec2\n"
678 " (parameters\n"
679 " (declare (in) vec2 arg0)\n"
680 " (declare (in) vec2 arg1))\n"
681 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700682 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
683 " (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 -0700684 " (return (var_ref temp))))\n"
685 "\n"
686 " (signature bvec3\n"
687 " (parameters\n"
688 " (declare (in) vec3 arg0)\n"
689 " (declare (in) vec3 arg1))\n"
690 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700691 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
692 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
693 " (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 -0700694 " (return (var_ref temp))))\n"
695 "\n"
696 " (signature bvec4\n"
697 " (parameters\n"
698 " (declare (in) vec4 arg0)\n"
699 " (declare (in) vec4 arg1))\n"
700 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700701 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
702 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
703 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
704 " (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 -0700705 " (return (var_ref temp))))\n"
706 "\n"
707 " (signature bvec2\n"
708 " (parameters\n"
709 " (declare (in) ivec2 arg0)\n"
710 " (declare (in) ivec2 arg1))\n"
711 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700712 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
713 " (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 -0700714 " (return (var_ref temp))))\n"
715 "\n"
716 " (signature bvec3\n"
717 " (parameters\n"
718 " (declare (in) ivec3 arg0)\n"
719 " (declare (in) ivec3 arg1))\n"
720 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700721 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
722 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
723 " (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 -0700724 " (return (var_ref temp))))\n"
725 "\n"
726 " (signature bvec4\n"
727 " (parameters\n"
728 " (declare (in) ivec4 arg0)\n"
729 " (declare (in) ivec4 arg1))\n"
730 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -0700731 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
732 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
733 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
734 " (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 -0700735 " (return (var_ref temp))))\n"
736 "))\n"
737};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700738
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700739static const char *builtins_110_log = {
740 "((function log\n"
741 " (signature float\n"
742 " (parameters\n"
743 " (declare (in) float arg0))\n"
744 " ((return (expression float log (var_ref arg0)))))\n"
745 "\n"
746 " (signature vec2\n"
747 " (parameters\n"
748 " (declare (in) vec2 arg0))\n"
749 " ((return (expression vec2 log (var_ref arg0)))))\n"
750 "\n"
751 " (signature vec3\n"
752 " (parameters\n"
753 " (declare (in) vec3 arg0))\n"
754 " ((return (expression vec3 log (var_ref arg0)))))\n"
755 "\n"
756 " (signature vec4\n"
757 " (parameters\n"
758 " (declare (in) vec4 arg0))\n"
759 " ((return (expression vec4 log (var_ref arg0)))))\n"
760 "))\n"
761};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700762
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700763static const char *builtins_110_log2 = {
764 "((function log2\n"
765 " (signature float\n"
766 " (parameters\n"
767 " (declare (in) float arg0))\n"
768 " ((return (expression float log2 (var_ref arg0)))))\n"
769 "\n"
770 " (signature vec2\n"
771 " (parameters\n"
772 " (declare (in) vec2 arg0))\n"
773 " ((return (expression vec2 log2 (var_ref arg0)))))\n"
774 "\n"
775 " (signature vec3\n"
776 " (parameters\n"
777 " (declare (in) vec3 arg0))\n"
778 " ((return (expression vec3 log2 (var_ref arg0)))))\n"
779 "\n"
780 " (signature vec4\n"
781 " (parameters\n"
782 " (declare (in) vec4 arg0))\n"
783 " ((return (expression vec4 log2 (var_ref arg0)))))\n"
784 "))\n"
785};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700786
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700787static const char *builtins_110_max = {
788 "((function max\n"
789 " (signature float\n"
790 " (parameters\n"
791 " (declare (in) float arg0)\n"
792 " (declare (in) float arg1))\n"
793 " ((return (expression float max (var_ref arg0) (var_ref arg1)))))\n"
794 "\n"
795 " (signature vec2\n"
796 " (parameters\n"
797 " (declare (in) vec2 arg0)\n"
798 " (declare (in) vec2 arg1))\n"
799 " ((return (expression vec2 max (var_ref arg0) (var_ref arg1)))))\n"
800 "\n"
801 " (signature vec3\n"
802 " (parameters\n"
803 " (declare (in) vec3 arg0)\n"
804 " (declare (in) vec3 arg1))\n"
805 " ((return (expression vec3 max (var_ref arg0) (var_ref arg1)))))\n"
806 "\n"
807 " (signature vec4\n"
808 " (parameters\n"
809 " (declare (in) vec4 arg0)\n"
810 " (declare (in) vec4 arg1))\n"
811 " ((return (expression vec4 max (var_ref arg0) (var_ref arg1)))))\n"
812 "))\n"
813};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700814
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700815static const char *builtins_110_min = {
816 "((function min\n"
817 " (signature float\n"
818 " (parameters\n"
819 " (declare (in) float arg0)\n"
820 " (declare (in) float arg1))\n"
821 " ((return (expression float min (var_ref arg0) (var_ref arg1)))))\n"
822 "\n"
823 " (signature vec2\n"
824 " (parameters\n"
825 " (declare (in) vec2 arg0)\n"
826 " (declare (in) vec2 arg1))\n"
827 " ((return (expression vec2 min (var_ref arg0) (var_ref arg1)))))\n"
828 "\n"
829 " (signature vec3\n"
830 " (parameters\n"
831 " (declare (in) vec3 arg0)\n"
832 " (declare (in) vec3 arg1))\n"
833 " ((return (expression vec3 min (var_ref arg0) (var_ref arg1)))))\n"
834 "\n"
835 " (signature vec4\n"
836 " (parameters\n"
837 " (declare (in) vec4 arg0)\n"
838 " (declare (in) vec4 arg1))\n"
839 " ((return (expression vec4 min (var_ref arg0) (var_ref arg1)))))\n"
840 "))\n"
841};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700842
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700843static const char *builtins_110_mix = {
844 "((function mix\n"
845 " (signature float\n"
846 " (parameters\n"
847 " (declare (in) float arg0)\n"
848 " (declare (in) float arg1)\n"
849 " (declare (in) float arg2))\n"
850 " ((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"
851 "\n"
852 " (signature vec2\n"
853 " (parameters\n"
854 " (declare (in) vec2 arg0)\n"
855 " (declare (in) vec2 arg1)\n"
856 " (declare (in) vec2 arg2))\n"
857 " ((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"
858 "\n"
859 " (signature vec3\n"
860 " (parameters\n"
861 " (declare (in) vec3 arg0)\n"
862 " (declare (in) vec3 arg1)\n"
863 " (declare (in) vec3 arg2))\n"
864 " ((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"
865 "\n"
866 " (signature vec4\n"
867 " (parameters\n"
868 " (declare (in) vec4 arg0)\n"
869 " (declare (in) vec4 arg1)\n"
870 " (declare (in) vec4 arg2))\n"
871 " ((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"
872 "))\n"
873};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700874
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700875static const char *builtins_110_mod = {
876 "((function mod\n"
877 " (signature float\n"
878 " (parameters\n"
879 " (declare (in) float arg0)\n"
880 " (declare (in) float arg1))\n"
881 " ((return (expression float % (var_ref arg0) (var_ref arg1)))))\n"
882 "\n"
883 " (signature vec2\n"
884 " (parameters\n"
885 " (declare (in) vec2 arg0)\n"
886 " (declare (in) vec2 arg1))\n"
887 " ((return (expression vec2 % (var_ref arg0) (var_ref arg1)))))\n"
888 "\n"
889 " (signature vec3\n"
890 " (parameters\n"
891 " (declare (in) vec3 arg0)\n"
892 " (declare (in) vec3 arg1))\n"
893 " ((return (expression vec3 % (var_ref arg0) (var_ref arg1)))))\n"
894 "\n"
895 " (signature vec4\n"
896 " (parameters\n"
897 " (declare (in) vec4 arg0)\n"
898 " (declare (in) vec4 arg1))\n"
899 " ((return (expression vec4 % (var_ref arg0) (var_ref arg1)))))\n"
900 "))\n"
901};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700902
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700903static const char *builtins_110_normalize = {
904 "((function normalize\n"
905 " (signature float\n"
906 " (parameters\n"
907 " (declare (in) float arg0))\n"
908 " ((return (expression float * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
909 "\n"
910 " (signature vec2\n"
911 " (parameters\n"
912 " (declare (in) vec2 arg0))\n"
913 " ((return (expression vec2 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
914 "\n"
915 " (signature vec3\n"
916 " (parameters\n"
917 " (declare (in) vec3 arg0))\n"
918 " ((return (expression vec3 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
919 "\n"
920 " (signature vec4\n"
921 " (parameters\n"
922 " (declare (in) vec4 arg0))\n"
923 " ((return (expression vec4 * (var_ref arg0) (expression float rsq (expression float dot (var_ref arg0) (var_ref arg0)))))))\n"
924 "))\n"
925};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700926
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700927static const char *builtins_110_not = {
928 "((function not\n"
929 " (signature bvec2\n"
930 " (parameters\n"
931 " (declare (in) bvec2 arg0))\n"
932 " ((return (expression bvec2 ! (var_ref arg0)))))\n"
933 "\n"
934 " (signature bvec3\n"
935 " (parameters\n"
936 " (declare (in) bvec3 arg0))\n"
937 " ((return (expression bvec3 ! (var_ref arg0)))))\n"
938 "\n"
939 " (signature bvec4\n"
940 " (parameters\n"
941 " (declare (in) bvec4 arg0))\n"
942 " ((return (expression bvec4 ! (var_ref arg0)))))\n"
943 "))\n"
944};
Eric Anholtfeeb43b2010-04-08 15:02:59 -0700945
Kenneth Graunkeb3262122010-04-28 23:01:33 -0700946static const char *builtins_110_notEqual = {
947 "((function notEqual\n"
948 " (signature bvec2\n"
949 " (parameters\n"
950 " (declare (in) vec2 arg0)\n"
951 " (declare (in) vec2 arg1))\n"
952 " ((declare () bvec2 temp)\n"
953 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
954 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
955 " (return (var_ref temp))))\n"
956 "\n"
957 " (signature bvec3\n"
958 " (parameters\n"
959 " (declare (in) vec3 arg0)\n"
960 " (declare (in) vec3 arg1))\n"
961 " ((declare () bvec3 temp)\n"
962 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
963 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
964 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
965 " (return (var_ref temp))))\n"
966 "\n"
967 " (signature bvec4\n"
968 " (parameters\n"
969 " (declare (in) vec4 arg0)\n"
970 " (declare (in) vec4 arg1))\n"
971 " ((declare () bvec4 temp)\n"
972 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression float != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
973 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression float != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
974 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression float != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
975 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression float != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
976 " (return (var_ref temp))))\n"
977 "\n"
978 " (signature bvec2\n"
979 " (parameters\n"
980 " (declare (in) ivec2 arg0)\n"
981 " (declare (in) ivec2 arg1))\n"
982 " ((declare () bvec2 temp)\n"
983 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
984 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
985 " (return (var_ref temp))))\n"
986 "\n"
987 " (signature bvec3\n"
988 " (parameters\n"
989 " (declare (in) ivec3 arg0)\n"
990 " (declare (in) ivec3 arg1))\n"
991 " ((declare () bvec3 temp)\n"
992 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
993 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
994 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
995 " (return (var_ref temp))))\n"
996 "\n"
997 " (signature bvec4\n"
998 " (parameters\n"
999 " (declare (in) ivec4 arg0)\n"
1000 " (declare (in) ivec4 arg1))\n"
1001 " ((declare () bvec4 temp)\n"
1002 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression int != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1003 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression int != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1004 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression int != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1005 " (assign (constant bool (1)) (swiz w (var_ref temp)) (expression int != (swiz w (var_ref arg0))(swiz w (var_ref arg1)))) \n"
1006 " (return (var_ref temp))))\n"
1007 "))\n"
1008};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001009
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001010static const char *builtins_110_pow = {
1011 "((function pow\n"
1012 " (signature float\n"
1013 " (parameters\n"
1014 " (declare (in) float arg0)\n"
1015 " (declare (in) float arg1))\n"
1016 " ((return (expression float pow (var_ref arg0) (var_ref arg1)))))\n"
1017 "\n"
1018 " (signature vec2\n"
1019 " (parameters\n"
1020 " (declare (in) vec2 arg0)\n"
1021 " (declare (in) vec2 arg1))\n"
1022 " ((return (expression vec2 pow (var_ref arg0) (var_ref arg1)))))\n"
1023 "\n"
1024 " (signature vec3\n"
1025 " (parameters\n"
1026 " (declare (in) vec3 arg0)\n"
1027 " (declare (in) vec3 arg1))\n"
1028 " ((return (expression vec3 pow (var_ref arg0) (var_ref arg1)))))\n"
1029 "\n"
1030 " (signature vec4\n"
1031 " (parameters\n"
1032 " (declare (in) vec4 arg0)\n"
1033 " (declare (in) vec4 arg1))\n"
1034 " ((return (expression vec4 pow (var_ref arg0) (var_ref arg1)))))\n"
1035 "))\n"
1036};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001037
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001038static const char *builtins_110_radians = {
1039 "((function radians\n"
1040 " (signature float\n"
1041 " (parameters\n"
1042 " (declare (in) float arg0))\n"
1043 " ((return (expression float * (var_ref arg0) (constant float (0.017453))))))\n"
1044 "\n"
1045 " (signature vec2\n"
1046 " (parameters\n"
1047 " (declare (in) vec2 arg0))\n"
1048 " ((return (expression vec2 * (var_ref arg0) (constant float (0.017453))))))\n"
1049 "\n"
1050 " (signature vec3\n"
1051 " (parameters\n"
1052 " (declare (in) vec3 arg0))\n"
1053 " ((return (expression vec3 * (var_ref arg0) (constant float (0.017453))))))\n"
1054 "\n"
1055 " (signature vec4\n"
1056 " (parameters\n"
1057 " (declare (in) vec4 arg0))\n"
1058 " ((return (expression vec4 * (var_ref arg0) (constant float (0.017453))))))\n"
1059 "))\n"
1060};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001061
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001062static const char *builtins_110_sign = {
1063 "((function sign\n"
1064 " (signature float\n"
1065 " (parameters\n"
1066 " (declare (in) float x))\n"
1067 " ((return (expression float sign (var_ref x)))))\n"
1068 "\n"
1069 " (signature vec2\n"
1070 " (parameters\n"
1071 " (declare (in) vec2 x))\n"
1072 " ((declare () vec2 t)\n"
1073 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1074 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1075 " (return (var_ref t))))\n"
1076 "\n"
1077 " (signature vec3\n"
1078 " (parameters\n"
1079 " (declare (in) vec3 x))\n"
1080 " ((declare () vec3 t)\n"
1081 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1082 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1083 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1084 " (return (var_ref t))))\n"
1085 "\n"
1086 " (signature vec4\n"
1087 " (parameters\n"
1088 " (declare (in) vec4 x))\n"
1089 " ((declare () vec4 t)\n"
1090 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float sign (swiz x (var_ref x))))\n"
1091 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float sign (swiz y (var_ref x))))\n"
1092 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float sign (swiz z (var_ref x))))\n"
1093 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float sign (swiz w (var_ref x))))\n"
1094 " (return (var_ref t))))\n"
1095 "))\n"
1096 "\n"
1097};
1098
1099static const char *builtins_110_sin = {
1100 "((function sin\n"
1101 " (signature float\n"
1102 " (parameters\n"
1103 " (declare (in) float angle))\n"
1104 " ((return (expression float sin (var_ref angle)))))\n"
1105 "\n"
1106 " (signature vec2\n"
1107 " (parameters\n"
1108 " (declare (in) vec2 angle))\n"
1109 " ((return (expression vec2 sin (var_ref angle)))))\n"
1110 "\n"
1111 " (signature vec3\n"
1112 " (parameters\n"
1113 " (declare (in) vec3 angle))\n"
1114 " ((return (expression vec3 sin (var_ref angle)))))\n"
1115 "\n"
1116 " (signature vec4\n"
1117 " (parameters\n"
1118 " (declare (in) vec4 angle))\n"
1119 " ((return (expression vec4 sin (var_ref angle)))))\n"
1120 "))\n"
1121};
1122
1123static const char *builtins_110_smoothstep = {
1124 "((function smoothstep\n"
1125 " (signature float\n"
1126 " (parameters\n"
1127 " (declare (in) float edge0)\n"
1128 " (declare (in) float edge1)\n"
1129 " (declare (in) float x))\n"
1130 " ((declare () float t)\n"
1131 "\n"
1132 " (assign (constant bool (1)) (var_ref t)\n"
1133 " (expression float max\n"
1134 " (expression float min\n"
1135 " (expression float / (expression float - (var_ref x) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1136 " (constant float (1.0)))\n"
1137 " (constant float (0.0))))\n"
1138 " (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"
1139 "\n"
1140 " (signature vec2\n"
1141 " (parameters\n"
1142 " (declare (in) float edge0)\n"
1143 " (declare (in) float edge1)\n"
1144 " (declare (in) vec2 x))\n"
1145 " ((declare () vec2 t)\n"
1146 " (declare () vec2 retval)\n"
1147 "\n"
1148 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1149 " (expression float max\n"
1150 " (expression float min\n"
1151 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1152 " (constant float (1.0)))\n"
1153 " (constant float (0.0))))\n"
1154 " (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"
1155 "\n"
1156 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1157 " (expression float max\n"
1158 " (expression float min\n"
1159 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1160 " (constant float (1.0)))\n"
1161 " (constant float (0.0))))\n"
1162 " (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"
1163 " (return (var_ref retval))\n"
1164 " ))\n"
1165 "\n"
1166 " (signature vec3\n"
1167 " (parameters\n"
1168 " (declare (in) float edge0)\n"
1169 " (declare (in) float edge1)\n"
1170 " (declare (in) vec3 x))\n"
1171 " ((declare () vec3 t)\n"
1172 " (declare () vec3 retval)\n"
1173 "\n"
1174 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1175 " (expression float max\n"
1176 " (expression float min\n"
1177 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1178 " (constant float (1.0)))\n"
1179 " (constant float (0.0))))\n"
1180 " (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"
1181 "\n"
1182 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1183 " (expression float max\n"
1184 " (expression float min\n"
1185 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1186 " (constant float (1.0)))\n"
1187 " (constant float (0.0))))\n"
1188 " (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"
1189 "\n"
1190 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1191 " (expression float max\n"
1192 " (expression float min\n"
1193 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1194 " (constant float (1.0)))\n"
1195 " (constant float (0.0))))\n"
1196 " (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"
1197 " (return (var_ref retval))\n"
1198 " ))\n"
1199 "\n"
1200 "\n"
1201 " (signature vec4\n"
1202 " (parameters\n"
1203 " (declare (in) float edge0)\n"
1204 " (declare (in) float edge1)\n"
1205 " (declare (in) vec4 x))\n"
1206 " ((declare () vec4 t)\n"
1207 " (declare () vec4 retval)\n"
1208 "\n"
1209 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1210 " (expression float max\n"
1211 " (expression float min\n"
1212 " (expression float / (expression float - (swiz x (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1213 " (constant float (1.0)))\n"
1214 " (constant float (0.0))))\n"
1215 " (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"
1216 "\n"
1217 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1218 " (expression float max\n"
1219 " (expression float min\n"
1220 " (expression float / (expression float - (swiz y (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1221 " (constant float (1.0)))\n"
1222 " (constant float (0.0))))\n"
1223 " (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"
1224 "\n"
1225 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1226 " (expression float max\n"
1227 " (expression float min\n"
1228 " (expression float / (expression float - (swiz z (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1229 " (constant float (1.0)))\n"
1230 " (constant float (0.0))))\n"
1231 " (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"
1232 "\n"
1233 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1234 " (expression float max\n"
1235 " (expression float min\n"
1236 " (expression float / (expression float - (swiz w (var_ref x)) (var_ref edge0)) (expression float - (var_ref edge1) (var_ref edge0)))\n"
1237 " (constant float (1.0)))\n"
1238 " (constant float (0.0))))\n"
1239 " (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"
1240 " (return (var_ref retval))\n"
1241 " ))\n"
1242 "\n"
1243 " (signature vec2\n"
1244 " (parameters\n"
1245 " (declare (in) vec2 edge0)\n"
1246 " (declare (in) vec2 edge1)\n"
1247 " (declare (in) vec2 x))\n"
1248 " ((declare () vec2 t)\n"
1249 " (declare () vec2 retval)\n"
1250 "\n"
1251 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1252 " (expression float max\n"
1253 " (expression float min\n"
1254 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1255 " (constant float (1.0)))\n"
1256 " (constant float (0.0))))\n"
1257 " (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"
1258 "\n"
1259 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1260 " (expression float max\n"
1261 " (expression float min\n"
1262 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1263 " (constant float (1.0)))\n"
1264 " (constant float (0.0))))\n"
1265 " (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"
1266 " (return (var_ref retval))\n"
1267 " ))\n"
1268 "\n"
1269 " (signature vec3\n"
1270 " (parameters\n"
1271 " (declare (in) vec3 edge0)\n"
1272 " (declare (in) vec3 edge1)\n"
1273 " (declare (in) vec3 x))\n"
1274 " ((declare () vec3 t)\n"
1275 " (declare () vec3 retval)\n"
1276 "\n"
1277 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1278 " (expression float max\n"
1279 " (expression float min\n"
1280 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1281 " (constant float (1.0)))\n"
1282 " (constant float (0.0))))\n"
1283 " (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"
1284 "\n"
1285 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1286 " (expression float max\n"
1287 " (expression float min\n"
1288 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1289 " (constant float (1.0)))\n"
1290 " (constant float (0.0))))\n"
1291 " (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"
1292 "\n"
1293 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1294 " (expression float max\n"
1295 " (expression float min\n"
1296 " (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0))))\n"
1297 " (constant float (1.0)))\n"
1298 " (constant float (0.0))))\n"
1299 " (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"
1300 " (return (var_ref retval))\n"
1301 " ))\n"
1302 "\n"
1303 "\n"
1304 " (signature vec4\n"
1305 " (parameters\n"
1306 " (declare (in) vec4 edge0)\n"
1307 " (declare (in) vec4 edge1)\n"
1308 " (declare (in) vec4 x))\n"
1309 " ((declare () vec4 t)\n"
1310 " (declare () vec4 retval)\n"
1311 "\n"
1312 " (assign (constant bool (1)) (swiz x (var_ref t))\n"
1313 " (expression float max\n"
1314 " (expression float min\n"
1315 " (expression float / (expression float - (swiz x (var_ref x)) (swiz x (var_ref edge0))) (expression float - (swiz x (var_ref edge1)) (swiz x (var_ref edge0))))\n"
1316 " (constant float (1.0)))\n"
1317 " (constant float (0.0))))\n"
1318 " (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"
1319 "\n"
1320 " (assign (constant bool (1)) (swiz y (var_ref t))\n"
1321 " (expression float max\n"
1322 " (expression float min\n"
1323 " (expression float / (expression float - (swiz y (var_ref x)) (swiz y (var_ref edge0))) (expression float - (swiz y (var_ref edge1)) (swiz y (var_ref edge0))))\n"
1324 " (constant float (1.0)))\n"
1325 " (constant float (0.0))))\n"
1326 " (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"
1327 "\n"
1328 " (assign (constant bool (1)) (swiz z (var_ref t))\n"
1329 " (expression float max\n"
1330 " (expression float min\n"
1331 " (expression float / (expression float - (swiz z (var_ref x)) (swiz z (var_ref edge0))) (expression float - (swiz z (var_ref edge1)) (swiz z (var_ref edge0))))\n"
1332 " (constant float (1.0)))\n"
1333 " (constant float (0.0))))\n"
1334 " (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"
1335 "\n"
1336 " (assign (constant bool (1)) (swiz w (var_ref t))\n"
1337 " (expression float max\n"
1338 " (expression float min\n"
1339 " (expression float / (expression float - (swiz w (var_ref x)) (swiz w (var_ref edge0))) (expression float - (swiz w (var_ref edge1)) (swiz w (var_ref edge0))))\n"
1340 " (constant float (1.0)))\n"
1341 " (constant float (0.0))))\n"
1342 " (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"
1343 " (return (var_ref retval))\n"
1344 " ))\n"
1345 "\n"
1346 "))\n"
1347 "\n"
1348};
1349
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001350static const char *builtins_110_sqrt = {
1351 "((function sqrt\n"
1352 " (signature float\n"
1353 " (parameters\n"
1354 " (declare (in) float arg0))\n"
1355 " ((return (expression float sqrt (var_ref arg0)))))\n"
1356 "\n"
1357 " (signature vec2\n"
1358 " (parameters\n"
1359 " (declare (in) vec2 arg0))\n"
1360 " ((return (expression vec2 sqrt (var_ref arg0)))))\n"
1361 "\n"
1362 " (signature vec3\n"
1363 " (parameters\n"
1364 " (declare (in) vec3 arg0))\n"
1365 " ((return (expression vec3 sqrt (var_ref arg0)))))\n"
1366 "\n"
1367 " (signature vec4\n"
1368 " (parameters\n"
1369 " (declare (in) vec4 arg0))\n"
1370 " ((return (expression vec4 sqrt (var_ref arg0)))))\n"
1371 "))\n"
1372};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001373
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001374static const char *builtins_110_step = {
1375 "((function step\n"
1376 " (signature float\n"
1377 " (parameters\n"
1378 " (declare (in) float edge)\n"
1379 " (declare (in) float x))\n"
1380 " ((return (expression float b2f (expression bool < (var_ref x) (var_ref edge))))))\n"
1381 "\n"
1382 " (signature vec2\n"
1383 " (parameters\n"
1384 " (declare (in) float edge)\n"
1385 " (declare (in) vec2 x))\n"
1386 " ((declare () vec2 t)\n"
1387 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1388 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1389 " (return (var_ref t))))\n"
1390 "\n"
1391 " (signature vec3\n"
1392 " (parameters\n"
1393 " (declare (in) float edge)\n"
1394 " (declare (in) vec3 x))\n"
1395 " ((declare () vec3 t)\n"
1396 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1397 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1398 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1399 " (return (var_ref t))))\n"
1400 "\n"
1401 " (signature vec4\n"
1402 " (parameters\n"
1403 " (declare (in) float edge)\n"
1404 " (declare (in) vec4 x))\n"
1405 " ((declare () vec4 t)\n"
1406 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression float b2f (expression bool < (swiz x (var_ref x))(var_ref edge))))\n"
1407 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression float b2f (expression bool < (swiz y (var_ref x))(var_ref edge))))\n"
1408 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression float b2f (expression bool < (swiz z (var_ref x))(var_ref edge))))\n"
1409 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression float b2f (expression bool < (swiz w (var_ref x))(var_ref edge))))\n"
1410 " (return (var_ref t))))\n"
1411 "\n"
1412 " (signature vec2\n"
1413 " (parameters\n"
1414 " (declare (in) vec2 edge)\n"
1415 " (declare (in) vec2 x))\n"
1416 " ((declare () vec2 t)\n"
1417 " (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"
1418 " (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"
1419 " (return (var_ref t))))\n"
1420 "\n"
1421 " (signature vec3\n"
1422 " (parameters\n"
1423 " (declare (in) vec3 edge)\n"
1424 " (declare (in) vec3 x))\n"
1425 " ((declare () vec3 t)\n"
1426 " (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"
1427 " (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"
1428 " (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"
1429 " (return (var_ref t))))\n"
1430 "\n"
1431 " (signature vec4\n"
1432 " (parameters\n"
1433 " (declare (in) vec4 edge)\n"
1434 " (declare (in) vec4 x))\n"
1435 " ((declare () vec4 t)\n"
1436 " (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"
1437 " (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"
1438 " (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"
1439 " (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"
1440 " (return (var_ref t))))\n"
1441 "))\n"
1442 "\n"
1443};
1444
1445static const char *builtins_110_tan = {
1446 "((function tan\n"
1447 " (signature float\n"
1448 " (parameters\n"
1449 " (declare (in) float angle))\n"
1450 " ((return (expression float / (expression float sin (var_ref angle)) (expression float cos (var_ref angle))))))\n"
1451 "\n"
1452 " (signature vec2\n"
1453 " (parameters\n"
1454 " (declare (in) vec2 angle))\n"
1455 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec2 cos (var_ref angle))))))\n"
1456 "\n"
1457 " (signature vec3\n"
1458 " (parameters\n"
1459 " (declare (in) vec3 angle))\n"
1460 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec3 cos (var_ref angle))))))\n"
1461 "\n"
1462 " (signature vec4\n"
1463 " (parameters\n"
1464 " (declare (in) vec4 angle))\n"
1465 " ((return (expression float / (expression float sin (var_ref angle)) (expression vec4 cos (var_ref angle))))))\n"
1466 "))\n"
1467};
1468
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001469static const char *functions_for_110 [] = {
1470 builtins_110_abs,
1471 builtins_110_all,
1472 builtins_110_any,
1473 builtins_110_ceil,
1474 builtins_110_clamp,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001475 builtins_110_cos,
1476 builtins_110_cross,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001477 builtins_110_degrees,
1478 builtins_110_dot,
1479 builtins_110_equal,
1480 builtins_110_exp,
1481 builtins_110_exp2,
1482 builtins_110_floor,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001483 builtins_110_fract,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001484 builtins_110_greaterThan,
1485 builtins_110_greaterThanEqual,
1486 builtins_110_inversesqrt,
1487 builtins_110_length,
1488 builtins_110_lessThan,
1489 builtins_110_lessThanEqual,
1490 builtins_110_log,
1491 builtins_110_log2,
1492 builtins_110_max,
1493 builtins_110_min,
1494 builtins_110_mix,
1495 builtins_110_mod,
1496 builtins_110_normalize,
1497 builtins_110_not,
1498 builtins_110_notEqual,
1499 builtins_110_pow,
1500 builtins_110_radians,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001501 builtins_110_sign,
1502 builtins_110_sin,
1503 builtins_110_smoothstep,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001504 builtins_110_sqrt,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001505 builtins_110_step,
1506 builtins_110_tan,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001507};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001508
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001509/* Version 130 builtins */
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001510
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001511static const char *builtins_130_equal = {
1512 "((function equal\n"
1513 " (signature bvec2\n"
1514 " (parameters\n"
1515 " (declare (in) uvec2 arg0)\n"
1516 " (declare (in) uvec2 arg1))\n"
1517 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001518 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1519 " (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 -07001520 " (return (var_ref temp))))\n"
1521 "\n"
1522 " (signature bvec3\n"
1523 " (parameters\n"
1524 " (declare (in) uvec3 arg0)\n"
1525 " (declare (in) uvec3 arg1))\n"
1526 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001527 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1528 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1529 " (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 -07001530 " (return (var_ref temp))))\n"
1531 "\n"
1532 " (signature bvec4\n"
1533 " (parameters\n"
1534 " (declare (in) uvec4 arg0)\n"
1535 " (declare (in) uvec4 arg1))\n"
1536 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001537 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool == (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1538 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool == (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1539 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool == (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1540 " (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 -07001541 " (return (var_ref temp))))\n"
1542 "))\n"
1543};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001544
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001545static const char *builtins_130_greaterThan = {
1546 "((function greaterThan\n"
1547 " (signature bvec2\n"
1548 " (parameters\n"
1549 " (declare (in) uvec2 arg0)\n"
1550 " (declare (in) uvec2 arg1))\n"
1551 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001552 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1553 " (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 -07001554 " (return (var_ref temp))))\n"
1555 "\n"
1556 " (signature bvec3\n"
1557 " (parameters\n"
1558 " (declare (in) uvec3 arg0)\n"
1559 " (declare (in) uvec3 arg1))\n"
1560 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001561 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1562 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1563 " (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 -07001564 " (return (var_ref temp))))\n"
1565 "\n"
1566 " (signature bvec4\n"
1567 " (parameters\n"
1568 " (declare (in) uvec4 arg0)\n"
1569 " (declare (in) uvec4 arg1))\n"
1570 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001571 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool > (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1572 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool > (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1573 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool > (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1574 " (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 -07001575 " (return (var_ref temp))))\n"
1576 "))\n"
1577};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001578
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001579static const char *builtins_130_greaterThanEqual = {
1580 "((function greaterThanEqual\n"
1581 " (signature bvec2\n"
1582 " (parameters\n"
1583 " (declare (in) uvec2 arg0)\n"
1584 " (declare (in) uvec2 arg1))\n"
1585 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001586 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1587 " (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 -07001588 " (return (var_ref temp))))\n"
1589 "\n"
1590 " (signature bvec3\n"
1591 " (parameters\n"
1592 " (declare (in) uvec3 arg0)\n"
1593 " (declare (in) uvec3 arg1))\n"
1594 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001595 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1596 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1597 " (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 -07001598 " (return (var_ref temp))))\n"
1599 "\n"
1600 " (signature bvec4\n"
1601 " (parameters\n"
1602 " (declare (in) uvec4 arg0)\n"
1603 " (declare (in) uvec4 arg1))\n"
1604 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001605 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool >= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1606 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool >= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1607 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool >= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1608 " (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 -07001609 " (return (var_ref temp))))\n"
1610 "))\n"
1611};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001612
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001613static const char *builtins_130_lessThan = {
1614 "((function lessThan\n"
1615 " (signature bvec2\n"
1616 " (parameters\n"
1617 " (declare (in) uvec2 arg0)\n"
1618 " (declare (in) uvec2 arg1))\n"
1619 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001620 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1621 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001622 " (return (var_ref temp))))\n"
1623 "\n"
1624 " (signature bvec3\n"
1625 " (parameters\n"
1626 " (declare (in) uvec3 arg0)\n"
1627 " (declare (in) uvec3 arg1))\n"
1628 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001629 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1630 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1631 " (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 -07001632 " (return (var_ref temp))))\n"
1633 "\n"
1634 " (signature bvec4\n"
1635 " (parameters\n"
1636 " (declare (in) uvec4 arg0)\n"
1637 " (declare (in) uvec4 arg1))\n"
1638 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001639 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool < (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1640 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool < (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1641 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool < (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1642 " (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 -07001643 " (return (var_ref temp))))\n"
1644 "))\n"
1645};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001646
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001647static const char *builtins_130_lessThanEqual = {
1648 "((function lessThanEqual\n"
1649 " (signature bvec2\n"
1650 " (parameters\n"
1651 " (declare (in) uvec2 arg0)\n"
1652 " (declare (in) uvec2 arg1))\n"
1653 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001654 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1655 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001656 " (return (var_ref temp))))\n"
1657 "\n"
1658 " (signature bvec3\n"
1659 " (parameters\n"
1660 " (declare (in) uvec3 arg0)\n"
1661 " (declare (in) uvec3 arg1))\n"
1662 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001663 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1664 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1665 " (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 -07001666 " (return (var_ref temp))))\n"
1667 "\n"
1668 " (signature bvec4\n"
1669 " (parameters\n"
1670 " (declare (in) uvec4 arg0)\n"
1671 " (declare (in) uvec4 arg1))\n"
1672 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001673 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool <= (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1674 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool <= (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1675 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool <= (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1676 " (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 -07001677 " (return (var_ref temp))))\n"
1678 "))\n"
1679};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001680
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001681static const char *builtins_130_notEqual = {
1682 "((function notEqual\n"
1683 " (signature bvec2\n"
1684 " (parameters\n"
1685 " (declare (in) uvec2 arg0)\n"
1686 " (declare (in) uvec2 arg1))\n"
1687 " ((declare () bvec2 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001688 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1689 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001690 " (return (var_ref temp))))\n"
1691 "\n"
1692 " (signature bvec3\n"
1693 " (parameters\n"
1694 " (declare (in) uvec3 arg0)\n"
1695 " (declare (in) uvec3 arg1))\n"
1696 " ((declare () bvec3 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001697 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1698 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1699 " (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 -07001700 " (return (var_ref temp))))\n"
1701 "\n"
1702 " (signature bvec4\n"
1703 " (parameters\n"
1704 " (declare (in) uvec4 arg0)\n"
1705 " (declare (in) uvec4 arg1))\n"
1706 " ((declare () bvec4 temp)\n"
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001707 " (assign (constant bool (1)) (swiz x (var_ref temp)) (expression bool != (swiz x (var_ref arg0))(swiz x (var_ref arg1)))) \n"
1708 " (assign (constant bool (1)) (swiz y (var_ref temp)) (expression bool != (swiz y (var_ref arg0))(swiz y (var_ref arg1)))) \n"
1709 " (assign (constant bool (1)) (swiz z (var_ref temp)) (expression bool != (swiz z (var_ref arg0))(swiz z (var_ref arg1)))) \n"
1710 " (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 -07001711 " (return (var_ref temp))))\n"
1712 "))\n"
1713};
Eric Anholtfeeb43b2010-04-08 15:02:59 -07001714
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001715static const char *builtins_130_sign = {
1716 "((function sign\n"
1717 " (signature int\n"
1718 " (parameters\n"
1719 " (declare (in) int x))\n"
1720 " ((return (expression int / (var_ref x) (expression int abs (var_ref x))))))\n"
1721 "\n"
1722 " (signature ivec2\n"
1723 " (parameters\n"
1724 " (declare (in) ivec2 x))\n"
1725 " ((declare () ivec2 t)\n"
1726 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1727 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1728 " (return (var_ref t))))\n"
1729 "\n"
1730 " (signature ivec3\n"
1731 " (parameters\n"
1732 " (declare (in) ivec3 x))\n"
1733 " ((declare () ivec3 t)\n"
1734 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1735 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1736 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
1737 " (return (var_ref t))))\n"
1738 "\n"
1739 " (signature ivec4\n"
1740 " (parameters\n"
1741 " (declare (in) ivec4 x))\n"
1742 " ((declare () ivec4 t)\n"
1743 " (assign (constant bool (1)) (swiz x (var_ref t)) (expression int sign (swiz x (var_ref x))))\n"
1744 " (assign (constant bool (1)) (swiz y (var_ref t)) (expression int sign (swiz y (var_ref x))))\n"
1745 " (assign (constant bool (1)) (swiz z (var_ref t)) (expression int sign (swiz z (var_ref x))))\n"
1746 " (assign (constant bool (1)) (swiz w (var_ref t)) (expression int sign (swiz w (var_ref x))))\n"
1747 " (return (var_ref t))))\n"
1748 "))\n"
1749 "\n"
1750};
1751
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001752static const char *functions_for_130 [] = {
1753 builtins_130_equal,
1754 builtins_130_greaterThan,
1755 builtins_130_greaterThanEqual,
1756 builtins_130_lessThan,
1757 builtins_130_lessThanEqual,
1758 builtins_130_notEqual,
Kenneth Graunke67e07ad2010-04-30 15:20:06 -07001759 builtins_130_sign,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001760};
Eric Anholtc22c4002010-03-26 18:20:30 -07001761
1762void
1763_mesa_glsl_initialize_functions(exec_list *instructions,
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001764 struct _mesa_glsl_parse_state *state)
Eric Anholtc22c4002010-03-26 18:20:30 -07001765{
Kenneth Graunkeb3262122010-04-28 23:01:33 -07001766 if (state->language_version >= 110)
1767 read_builtins(state, instructions, functions_for_110,
1768 sizeof(functions_for_110) / sizeof(const char *));
1769
1770 if (state->language_version >= 130)
1771 read_builtins(state, instructions, functions_for_130,
1772 sizeof(functions_for_130) / sizeof(const char *));
1773
Eric Anholtc22c4002010-03-26 18:20:30 -07001774}