remove the GLSL spec wording;
[mesa.git] / src / mesa / shader / slang / library / slang_core_gc.h
1 "\n"
2 "\n"
3 "\n"
4 "\n"
5 "\n"
6 "\n"
7 "\n"
8 "\n"
9 "\n"
10 "\n"
11 "\n"
12 "\n"
13 "\n"
14 "\n"
15 "\n"
16 "\n"
17 "\n"
18 "\n"
19 "\n"
20 "\n"
21 "\n"
22 "\n"
23 "\n"
24 "\n"
25 "\n"
26 "\n"
27 "\n"
28 "\n"
29 "\n"
30 "\n"
31 "\n"
32 "\n"
33 "\n"
34 "\n"
35 "\n"
36 "\n"
37 "\n"
38 "\n"
39 "\n"
40 "\n"
41 "\n"
42 "\n"
43 "\n"
44 "\n"
45 "\n"
46 "\n"
47 "\n"
48 "\n"
49 "\n"
50 "\n"
51 "\n"
52 "\n"
53 "\n"
54 "\n"
55 "\n"
56 "\n"
57 "\n"
58 "\n"
59 "\n"
60 "\n"
61 "\n"
62 "\n"
63 "\n"
64 "\n"
65 "\n"
66 "int __constructor (const float _f) {\n"
67 " int _i;\n"
68 " __asm float_to_int _i, _f;\n"
69 " return _i;\n"
70 "}\n"
71 "\n"
72 "bool __constructor (const int _i) {\n"
73 " return _i != 0;\n"
74 "}\n"
75 "\n"
76 "bool __constructor (const float _f) {\n"
77 " return _f != 0.0;\n"
78 "}\n"
79 "\n"
80 "int __constructor (const bool _b) {\n"
81 " return _b ? 1 : 0;\n"
82 "}\n"
83 "\n"
84 "float __constructor (const bool _b) {\n"
85 " return _b ? 1.0 : 0.0;\n"
86 "}\n"
87 "\n"
88 "float __constructor (const int _i) {\n"
89 " float _f;\n"
90 " __asm int_to_float _f, _i;\n"
91 " return _f;\n"
92 "}\n"
93 "\n"
94 "bool __constructor (const bool _b) {\n"
95 " return _b;\n"
96 "}\n"
97 "\n"
98 "int __constructor (const int _i) {\n"
99 " return _i;\n"
100 "}\n"
101 "\n"
102 "float __constructor (const float _f) {\n"
103 " return _f;\n"
104 "}\n"
105 "\n"
106 "vec2 __constructor (const float _f) {\n"
107 " return vec2 (_f, _f);\n"
108 "}\n"
109 "\n"
110 "vec2 __constructor (const int _i) {\n"
111 " return vec2 (_i, _i);\n"
112 "}\n"
113 "\n"
114 "vec2 __constructor (const bool _b) {\n"
115 " return vec2 (_b, _b);\n"
116 "}\n"
117 "\n"
118 "vec3 __constructor (const float _f) {\n"
119 " return vec3 (_f, _f, _f);\n"
120 "}\n"
121 "\n"
122 "vec3 __constructor (const int _i) {\n"
123 " return vec3 (_i, _i, _i);\n"
124 "}\n"
125 "\n"
126 "vec3 __constructor (const bool _b) {\n"
127 " return vec3 (_b, _b, _b);\n"
128 "}\n"
129 "\n"
130 "vec4 __constructor (const float _f) {\n"
131 " return vec4 (_f, _f, _f, _f);\n"
132 "}\n"
133 "\n"
134 "vec4 __constructor (const int _i) {\n"
135 " return vec4 (_i, _i, _i, _i);\n"
136 "}\n"
137 "\n"
138 "vec4 __constructor (const bool _b) {\n"
139 " return vec4 (_b, _b, _b, _b);\n"
140 "}\n"
141 "\n"
142 "ivec2 __constructor (const int _i) {\n"
143 " return ivec2 (_i, _i);\n"
144 "}\n"
145 "\n"
146 "ivec2 __constructor (const float _f) {\n"
147 " return ivec2 (_f, _f);\n"
148 "}\n"
149 "\n"
150 "ivec2 __constructor (const bool _b) {\n"
151 " return ivec2 (_b, _b);\n"
152 "}\n"
153 "\n"
154 "ivec3 __constructor (const int _i) {\n"
155 " return ivec3 (_i, _i, _i);\n"
156 "}\n"
157 "\n"
158 "ivec3 __constructor (const float _f) {\n"
159 " return ivec3 (_f, _f, _f);\n"
160 "}\n"
161 "\n"
162 "ivec3 __constructor (const bool _b) {\n"
163 " return ivec3 (_b, _b, _b);\n"
164 "}\n"
165 "\n"
166 "ivec4 __constructor (const int _i) {\n"
167 " return ivec4 (_i, _i, _i, _i);\n"
168 "}\n"
169 "\n"
170 "ivec4 __constructor (const float _f) {\n"
171 " return ivec4 (_f, _f, _f, _f);\n"
172 "}\n"
173 "\n"
174 "ivec4 __constructor (const bool _b) {\n"
175 " return ivec4 (_b, _b, _b, _b);\n"
176 "}\n"
177 "\n"
178 "bvec2 __constructor (const bool _b) {\n"
179 " return bvec2 (_b, _b);\n"
180 "}\n"
181 "\n"
182 "bvec2 __constructor (const float _f) {\n"
183 " return bvec2 (_f, _f);\n"
184 "}\n"
185 "\n"
186 "bvec2 __constructor (const int _i) {\n"
187 " return bvec2 (_i, _i);\n"
188 "}\n"
189 "\n"
190 "bvec3 __constructor (const bool _b) {\n"
191 " return bvec3 (_b, _b, _b);\n"
192 "}\n"
193 "\n"
194 "bvec3 __constructor (const float _f) {\n"
195 " return bvec3 (_f, _f, _f);\n"
196 "}\n"
197 "\n"
198 "bvec3 __constructor (const int _i) {\n"
199 " return bvec3 (_i, _i, _i);\n"
200 "}\n"
201 "\n"
202 "bvec4 __constructor (const bool _b) {\n"
203 " return bvec4 (_b, _b, _b, _b);\n"
204 "}\n"
205 "\n"
206 "bvec4 __constructor (const float _f) {\n"
207 " return bvec4 (_f, _f, _f, _f);\n"
208 "}\n"
209 "\n"
210 "bvec4 __constructor (const int _i) {\n"
211 " return bvec4 (_i, _i, _i, _i);\n"
212 "}\n"
213 "\n"
214 "mat2 __constructor (const float _f) {\n"
215 " return mat2 (\n"
216 " _f, .0,\n"
217 " .0, _f\n"
218 " );\n"
219 "}\n"
220 "\n"
221 "mat2 __constructor (const int _i) {\n"
222 " return mat2 (\n"
223 " _i, .0,\n"
224 " .0, _i\n"
225 " );\n"
226 "}\n"
227 "\n"
228 "mat2 __constructor (const bool _b) {\n"
229 " return mat2 (\n"
230 " _b, .0,\n"
231 " .0, _b\n"
232 " );\n"
233 "}\n"
234 "\n"
235 "mat3 __constructor (const float _f) {\n"
236 " return mat3 (\n"
237 " _f, .0, .0,\n"
238 " .0, _f, .0,\n"
239 " .0, .0, _f\n"
240 " );\n"
241 "}\n"
242 "\n"
243 "mat3 __constructor (const int _i) {\n"
244 " return mat3 (\n"
245 " _i, .0, .0,\n"
246 " .0, _i, .0,\n"
247 " .0, .0, _i\n"
248 " );\n"
249 "}\n"
250 "\n"
251 "mat3 __constructor (const bool _b) {\n"
252 " return mat3 (\n"
253 " _b, .0, .0,\n"
254 " .0, _b, .0,\n"
255 " .0, .0, _b\n"
256 " );\n"
257 "}\n"
258 "\n"
259 "mat4 __constructor (const float _f) {\n"
260 " return mat4 (\n"
261 " _f, .0, .0, .0,\n"
262 " .0, _f, .0, .0,\n"
263 " .0, .0, _f, .0,\n"
264 " .0, .0, .0, _f\n"
265 " );\n"
266 "}\n"
267 "\n"
268 "mat4 __constructor (const int _i) {\n"
269 " return mat4 (\n"
270 " _i, .0, .0, .0,\n"
271 " .0, _i, .0, .0,\n"
272 " .0, .0, _i, .0,\n"
273 " .0, .0, .0, _i\n"
274 " );\n"
275 "}\n"
276 "\n"
277 "mat4 __constructor (const bool _b) {\n"
278 " return mat4 (\n"
279 " _b, .0, .0, .0,\n"
280 " .0, _b, .0, .0,\n"
281 " .0, .0, _b, .0,\n"
282 " .0, .0, .0, _b\n"
283 " );\n"
284 "}\n"
285 "\n"
286 "\n"
287 "\n"
288 "\n"
289 "\n"
290 "\n"
291 "\n"
292 "\n"
293 "\n"
294 "\n"
295 "\n"
296 "\n"
297 "\n"
298 "\n"
299 "\n"
300 "\n"
301 "\n"
302 "\n"
303 "\n"
304 "\n"
305 "\n"
306 "\n"
307 "\n"
308 "\n"
309 "\n"
310 "\n"
311 "\n"
312 "\n"
313 "\n"
314 "\n"
315 "\n"
316 "\n"
317 "\n"
318 "\n"
319 "\n"
320 "\n"
321 "\n"
322 "\n"
323 "\n"
324 "\n"
325 "\n"
326 "\n"
327 "\n"
328 "\n"
329 "\n"
330 "\n"
331 "\n"
332 "\n"
333 "\n"
334 "\n"
335 "\n"
336 "\n"
337 "\n"
338 "\n"
339 "\n"
340 "\n"
341 "\n"
342 "\n"
343 "\n"
344 "\n"
345 "\n"
346 "void __operator += (inout float a, const float b) {\n"
347 " __asm float_add a, a, b;\n"
348 "}\n"
349 "\n"
350 "float __operator - (const float a) {\n"
351 " float c;\n"
352 " __asm float_negate c, a;\n"
353 " return c;\n"
354 "}\n"
355 "\n"
356 "void __operator -= (inout float a, const float b) {\n"
357 " a += -b;\n"
358 "}\n"
359 "\n"
360 "void __operator *= (inout float a, const float b) {\n"
361 " __asm float_multiply a, a, b;\n"
362 "}\n"
363 "\n"
364 "void __operator /= (inout float a, const float b) {\n"
365 " __asm float_divide a, a, b;\n"
366 "}\n"
367 "\n"
368 "float __operator + (const float a, const float b) {\n"
369 " float c;\n"
370 " c = a;\n"
371 " return c += b;\n"
372 "}\n"
373 "\n"
374 "void __operator += (inout int a, const int b) {\n"
375 " a = int (float (a) + float (b));\n"
376 "}\n"
377 "\n"
378 "int __operator - (const int a) {\n"
379 " return int (-float (a));\n"
380 "}\n"
381 "\n"
382 "void __operator -= (inout int a, const int b) {\n"
383 " a += -b;\n"
384 "}\n"
385 "\n"
386 "float __operator * (const float a, const float b) {\n"
387 " float c;\n"
388 " c = a;\n"
389 " return c *= b;\n"
390 "}\n"
391 "\n"
392 "void __operator *= (inout int a, const int b) {\n"
393 " a = int (float (a) * float (b));\n"
394 "}\n"
395 "\n"
396 "float __operator / (const float a, const float b) {\n"
397 " float c;\n"
398 " c = a;\n"
399 " return c /= b;\n"
400 "}\n"
401 "\n"
402 "void __operator /= (inout int a, const int b) {\n"
403 " a = int (float (a) / float (b));\n"
404 "}\n"
405 "\n"
406 "void __operator += (inout vec2 v, const vec2 u) {\n"
407 " v.x += u.x, v.y += u.y;\n"
408 "}\n"
409 "\n"
410 "void __operator -= (inout vec2 v, const vec2 u) {\n"
411 " v.x -= u.x, v.y -= u.y;\n"
412 "}\n"
413 "\n"
414 "void __operator *= (inout vec2 v, const vec2 u) {\n"
415 " v.x *= u.x, v.y *= u.y;\n"
416 "}\n"
417 "\n"
418 "void __operator /= (inout vec2 v, const vec2 u) {\n"
419 " v.x /= u.x, v.y /= u.y;\n"
420 "}\n"
421 "\n"
422 "void __operator += (inout vec3 v, const vec3 u) {\n"
423 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
424 "}\n"
425 "\n"
426 "void __operator -= (inout vec3 v, const vec3 u) {\n"
427 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
428 "}\n"
429 "\n"
430 "void __operator *= (inout vec3 v, const vec3 u) {\n"
431 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
432 "}\n"
433 "\n"
434 "void __operator /= (inout vec3 v, const vec3 u) {\n"
435 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
436 "}\n"
437 "\n"
438 "void __operator += (inout vec4 v, const vec4 u) {\n"
439 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
440 "}\n"
441 "\n"
442 "void __operator -= (inout vec4 v, const vec4 u) {\n"
443 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
444 "}\n"
445 "\n"
446 "void __operator *= (inout vec4 v, const vec4 u) {\n"
447 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
448 "}\n"
449 "\n"
450 "void __operator /= (inout vec4 v, const vec4 u) {\n"
451 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
452 "}\n"
453 "\n"
454 "void __operator += (inout ivec2 v, const ivec2 u) {\n"
455 " v.x += u.x, v.y += u.y;\n"
456 "}\n"
457 "\n"
458 "void __operator -= (inout ivec2 v, const ivec2 u) {\n"
459 " v.x -= u.x, v.y -= u.y;\n"
460 "}\n"
461 "\n"
462 "void __operator *= (inout ivec2 v, const ivec2 u) {\n"
463 " v.x *= u.x, v.y *= u.y;\n"
464 "}\n"
465 "\n"
466 "void __operator /= (inout ivec2 v, const ivec2 u) {\n"
467 " v.x /= u.x, v.y /= u.y;\n"
468 "}\n"
469 "\n"
470 "void __operator += (inout ivec3 v, const ivec3 u) {\n"
471 " v.x += u.x, v.y += u.y, v.z += u.z;\n"
472 "}\n"
473 "\n"
474 "void __operator -= (inout ivec3 v, const ivec3 u) {\n"
475 " v.x -= u.x, v.y -= u.y, v.z -= u.z;\n"
476 "}\n"
477 "\n"
478 "void __operator *= (inout ivec3 v, const ivec3 u) {\n"
479 " v.x *= u.x, v.y *= u.y, v.z *= u.z;\n"
480 "}\n"
481 "\n"
482 "void __operator /= (inout ivec3 v, const ivec3 u) {\n"
483 " v.x /= u.x, v.y /= u.y, v.z /= u.z;\n"
484 "}\n"
485 "\n"
486 "void __operator += (inout ivec4 v, const ivec4 u) {\n"
487 " v.x += u.x, v.y += u.y, v.z += u.z, v.w += u.w;\n"
488 "}\n"
489 "\n"
490 "void __operator -= (inout ivec4 v, const ivec4 u) {\n"
491 " v.x -= u.x, v.y -= u.y, v.z -= u.z, v.w -= u.w;\n"
492 "}\n"
493 "\n"
494 "void __operator *= (inout ivec4 v, const ivec4 u) {\n"
495 " v.x *= u.x, v.y *= u.y, v.z *= u.z, v.w *= u.w;\n"
496 "}\n"
497 "\n"
498 "void __operator /= (inout ivec4 v, const ivec4 u) {\n"
499 " v.x /= u.x, v.y /= u.y, v.z /= u.z, v.w /= u.w;\n"
500 "}\n"
501 "\n"
502 "void __operator += (inout mat2 m, const mat2 n) {\n"
503 " m[0] += n[0], m[1] += n[1];\n"
504 "}\n"
505 "\n"
506 "void __operator -= (inout mat2 m, const mat2 n) {\n"
507 " m[0] -= n[0], m[1] -= n[1];\n"
508 "}\n"
509 "\n"
510 "vec2 __operator * (const mat2 m, const vec2 v) {\n"
511 " return vec2 (\n"
512 " v.x * m[0].x + v.y * m[1].x,\n"
513 " v.x * m[0].y + v.y * m[1].y\n"
514 " );\n"
515 "}\n"
516 "\n"
517 "mat2 __operator * (const mat2 m, const mat2 n) {\n"
518 " return mat2 (m * n[0], m * n[1]);\n"
519 "}\n"
520 "\n"
521 "void __operator *= (inout mat2 m, const mat2 n) {\n"
522 " m = m * n;\n"
523 "}\n"
524 "\n"
525 "void __operator /= (inout mat2 m, const mat2 n) {\n"
526 " m[0] /= n[0], m[1] /= n[1];\n"
527 "}\n"
528 "\n"
529 "void __operator += (inout mat3 m, const mat3 n) {\n"
530 " m[0] += n[0], m[1] += n[1], m[2] += n[2];\n"
531 "}\n"
532 "\n"
533 "void __operator -= (inout mat3 m, const mat3 n) {\n"
534 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2];\n"
535 "}\n"
536 "\n"
537 "vec3 __operator * (const mat3 m, const vec3 v) {\n"
538 " return vec3 (\n"
539 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x,\n"
540 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y,\n"
541 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z\n"
542 " );\n"
543 "}\n"
544 "\n"
545 "mat3 __operator * (const mat3 m, const mat3 n) {\n"
546 " return mat3 (m * n[0], m * n[1], m * n[2]);\n"
547 "}\n"
548 "\n"
549 "void __operator *= (inout mat3 m, const mat3 n) {\n"
550 " m = m * n;\n"
551 "}\n"
552 "\n"
553 "void __operator /= (inout mat3 m, const mat3 n) {\n"
554 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2];\n"
555 "}\n"
556 "\n"
557 "void __operator += (inout mat4 m, const mat4 n) {\n"
558 " m[0] += n[0], m[1] += n[1], m[2] += n[2], m[3] += n[3];\n"
559 "}\n"
560 "\n"
561 "void __operator -= (inout mat4 m, const mat4 n) {\n"
562 " m[0] -= n[0], m[1] -= n[1], m[2] -= n[2], m[3] -= n[3];\n"
563 "}\n"
564 "\n"
565 "vec4 __operator * (const mat4 m, const vec4 v) {\n"
566 " return vec4 (\n"
567 " v.x * m[0].x + v.y * m[1].x + v.z * m[2].x + v.w * m[3].x,\n"
568 " v.x * m[0].y + v.y * m[1].y + v.z * m[2].y + v.w * m[3].y,\n"
569 " v.x * m[0].z + v.y * m[1].z + v.z * m[2].z + v.w * m[3].z,\n"
570 " v.x * m[0].w + v.y * m[1].w + v.z * m[2].w + v.w * m[3].w\n"
571 " );\n"
572 "}\n"
573 "\n"
574 "mat4 __operator * (const mat4 m, const mat4 n) {\n"
575 " return mat4 (m * n[0], m * n[1], m * n[2], m * n[3]);\n"
576 "}\n"
577 "\n"
578 "void __operator *= (inout mat4 m, const mat4 n) {\n"
579 " m = m * n;\n"
580 "}\n"
581 "\n"
582 "void __operator /= (inout mat4 m, const mat4 n) {\n"
583 " m[0] /= n[0], m[1] /= n[1], m[2] /= n[2], m[3] /= n[3];\n"
584 "}\n"
585 "\n"
586 "void __operator += (inout vec2 v, const float a) {\n"
587 " v.x += a, v.y += a;\n"
588 "}\n"
589 "\n"
590 "void __operator -= (inout vec2 v, const float a) {\n"
591 " v.x -= a, v.y -= a;\n"
592 "}\n"
593 "\n"
594 "void __operator *= (inout vec2 v, const float a) {\n"
595 " v.x *= a, v.y *= a;\n"
596 "}\n"
597 "\n"
598 "void __operator /= (inout vec2 v, const float a) {\n"
599 " v.x /= a, v.y /= a;\n"
600 "}\n"
601 "\n"
602 "void __operator += (inout vec3 v, const float a) {\n"
603 " v.x += a, v.y += a, v.z += a;\n"
604 "}\n"
605 "\n"
606 "void __operator -= (inout vec3 v, const float a) {\n"
607 " v.x -= a, v.y -= a, v.z -= a;\n"
608 "}\n"
609 "\n"
610 "void __operator *= (inout vec3 v, const float a) {\n"
611 " v.x *= a, v.y *= a, v.z *= a;\n"
612 "}\n"
613 "\n"
614 "void __operator /= (inout vec3 v, const float a) {\n"
615 " v.x /= a, v.y /= a, v.z /= a;\n"
616 "}\n"
617 "\n"
618 "void __operator += (inout vec4 v, const float a) {\n"
619 " v.x += a, v.y += a, v.z += a, v.w += a;\n"
620 "}\n"
621 "\n"
622 "void __operator -= (inout vec4 v, const float a) {\n"
623 " v.x -= a, v.y -= a, v.z -= a, v.w -= a;\n"
624 "}\n"
625 "\n"
626 "void __operator *= (inout vec4 v, const float a) {\n"
627 " v.x *= a, v.y *= a, v.z *= a, v.w *= a;\n"
628 "}\n"
629 "\n"
630 "void __operator /= (inout vec4 v, const float a) {\n"
631 " v.x /= a, v.y /= a, v.z /= a, v.w /= a;\n"
632 "}\n"
633 "\n"
634 "void __operator += (inout mat2 m, const float a) {\n"
635 " m[0] += a, m[1] += a;\n"
636 "}\n"
637 "\n"
638 "void __operator -= (inout mat2 m, const float a) {\n"
639 " m[0] -= a, m[1] -= a;\n"
640 "}\n"
641 "\n"
642 "void __operator *= (inout mat2 m, const float a) {\n"
643 " m[0] *= a, m[1] *= a;\n"
644 "}\n"
645 "\n"
646 "void __operator /= (inout mat2 m, const float a) {\n"
647 " m[0] /= a, m[1] /= a;\n"
648 "}\n"
649 "\n"
650 "void __operator += (inout mat3 m, const float a) {\n"
651 " m[0] += a, m[1] += a, m[2] += a;\n"
652 "}\n"
653 "\n"
654 "void __operator -= (inout mat3 m, const float a) {\n"
655 " m[0] -= a, m[1] -= a, m[2] -= a;\n"
656 "}\n"
657 "\n"
658 "void __operator *= (inout mat3 m, const float a) {\n"
659 " m[0] *= a, m[1] *= a, m[2] *= a;\n"
660 "}\n"
661 "\n"
662 "void __operator /= (inout mat3 m, const float a) {\n"
663 " m[0] /= a, m[1] /= a, m[2] /= a;\n"
664 "}\n"
665 "\n"
666 "void __operator += (inout mat4 m, const float a) {\n"
667 " m[0] += a, m[1] += a, m[2] += a, m[3] += a;\n"
668 "}\n"
669 "\n"
670 "void __operator -= (inout mat4 m, const float a) {\n"
671 " m[0] -= a, m[1] -= a, m[2] -= a, m[3] -= a;\n"
672 "}\n"
673 "\n"
674 "void __operator *= (inout mat4 m, const float a) {\n"
675 " m[0] *= a, m[1] *= a, m[2] *= a, m[3] *= a;\n"
676 "}\n"
677 "\n"
678 "void __operator /= (inout mat4 m, const float a) {\n"
679 " m[0] /= a, m[1] /= a, m[2] /= a, m[3] /= a;\n"
680 "}\n"
681 "\n"
682 "vec2 __operator * (const vec2 v, const mat2 m) {\n"
683 " return vec2 (\n"
684 " v.x * m[0].x + v.y * m[0].y,\n"
685 " v.x * m[1].x + v.y * m[1].y\n"
686 " );\n"
687 "}\n"
688 "\n"
689 "void __operator *= (inout vec2 v, const mat2 m) {\n"
690 " v = v * m;\n"
691 "}\n"
692 "\n"
693 "vec3 __operator * (const vec3 v, const mat3 m) {\n"
694 " return vec3 (\n"
695 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z,\n"
696 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z,\n"
697 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z\n"
698 " );\n"
699 "}\n"
700 "\n"
701 "void __operator *= (inout vec3 v, const mat3 m) {\n"
702 " v = v * m;\n"
703 "}\n"
704 "\n"
705 "vec4 __operator * (const vec4 v, const mat4 m) {\n"
706 " return vec4 (\n"
707 " v.x * m[0].x + v.y * m[0].y + v.z * m[0].z + v.w * m[0].w,\n"
708 " v.x * m[1].x + v.y * m[1].y + v.z * m[1].z + v.w * m[1].w,\n"
709 " v.x * m[2].x + v.y * m[2].y + v.z * m[2].z + v.w * m[2].w,\n"
710 " v.x * m[3].x + v.y * m[3].y + v.z * m[3].z + v.w * m[3].w\n"
711 " );\n"
712 "}\n"
713 "\n"
714 "void __operator *= (inout vec4 v, const mat4 m) {\n"
715 " v = v * m;\n"
716 "}\n"
717 "\n"
718 "float __operator - (const float a, const float b) {\n"
719 " return a + -b;\n"
720 "}\n"
721 "\n"
722 "int __operator + (const int a, const int b) {\n"
723 " int c;\n"
724 " c = a;\n"
725 " return c += b;\n"
726 "}\n"
727 "\n"
728 "int __operator - (const int a, const int b) {\n"
729 " return a + -b;\n"
730 "}\n"
731 "\n"
732 "int __operator * (const int a, const int b) {\n"
733 " int c;\n"
734 " return (c = a) *= b;\n"
735 "}\n"
736 "\n"
737 "int __operator / (const int a, const int b) {\n"
738 " int c;\n"
739 " return (c = a) /= b;\n"
740 "}\n"
741 "\n"
742 "vec2 __operator + (const vec2 v, const vec2 u) {\n"
743 " return vec2 (v.x + u.x, v.y + u.y);\n"
744 "}\n"
745 "\n"
746 "vec2 __operator - (const vec2 v, const vec2 u) {\n"
747 " return vec2 (v.x - u.x, v.y - u.y);\n"
748 "}\n"
749 "\n"
750 "vec3 __operator + (const vec3 v, const vec3 u) {\n"
751 " return vec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
752 "}\n"
753 "\n"
754 "vec3 __operator - (const vec3 v, const vec3 u) {\n"
755 " return vec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
756 "}\n"
757 "\n"
758 "vec4 __operator + (const vec4 v, const vec4 u) {\n"
759 " return vec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
760 "}\n"
761 "\n"
762 "vec4 __operator - (const vec4 v, const vec4 u) {\n"
763 " return vec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
764 "}\n"
765 "\n"
766 "ivec2 __operator + (const ivec2 v, const ivec2 u) {\n"
767 " return ivec2 (v.x + u.x, v.y + u.y);\n"
768 "}\n"
769 "\n"
770 "ivec2 __operator - (const ivec2 v, const ivec2 u) {\n"
771 " return ivec2 (v.x - u.x, v.y - u.y);\n"
772 "}\n"
773 "\n"
774 "ivec3 __operator + (const ivec3 v, const ivec3 u) {\n"
775 " return ivec3 (v.x + u.x, v.y + u.y, v.z + u.z);\n"
776 "}\n"
777 "\n"
778 "ivec3 __operator - (const ivec3 v, const ivec3 u) {\n"
779 " return ivec3 (v.x - u.x, v.y - u.y, v.z - u.z);\n"
780 "}\n"
781 "\n"
782 "ivec4 __operator + (const ivec4 v, const ivec4 u) {\n"
783 " return ivec4 (v.x + u.x, v.y + u.y, v.z + u.z, v.w + u.w);\n"
784 "}\n"
785 "\n"
786 "ivec4 __operator - (const ivec4 v, const ivec4 u) {\n"
787 " return ivec4 (v.x - u.x, v.y - u.y, v.z - u.z, v.w - u.w);\n"
788 "}\n"
789 "\n"
790 "mat2 __operator + (const mat2 m, const mat2 n) {\n"
791 " return mat2 (m[0] + n[0], m[1] + n[1]);\n"
792 "}\n"
793 "\n"
794 "mat2 __operator - (const mat2 m, const mat2 n) {\n"
795 " return mat2 (m[0] - n[0], m[1] - n[1]);\n"
796 "}\n"
797 "\n"
798 "mat3 __operator + (const mat3 m, const mat3 n) {\n"
799 " return mat3 (m[0] + n[0], m[1] + n[1], m[2] + n[2]);\n"
800 "}\n"
801 "\n"
802 "mat3 __operator - (const mat3 m, const mat3 n) {\n"
803 " return mat3 (m[0] - n[0], m[1] - n[1], m[2] - n[2]);\n"
804 "}\n"
805 "\n"
806 "mat4 __operator + (const mat4 m, const mat4 n) {\n"
807 " return mat4 (m[0] + n[0], m[1] + n[1], m[2] + n[2], m[3] + n[3]);\n"
808 "}\n"
809 "\n"
810 "mat4 __operator - (const mat4 m, const mat4 n) {\n"
811 " return mat4 (m[0] - n[0], m[1] - n[1], m[2] - n[2], m[3] - n[3]);\n"
812 "}\n"
813 "\n"
814 "vec2 __operator + (const float a, const vec2 u) {\n"
815 " return vec2 (a + u.x, a + u.y);\n"
816 "}\n"
817 "\n"
818 "vec2 __operator + (const vec2 v, const float b) {\n"
819 " return vec2 (v.x + b, v.y + b);\n"
820 "}\n"
821 "\n"
822 "vec2 __operator - (const float a, const vec2 u) {\n"
823 " return vec2 (a - u.x, a - u.y);\n"
824 "}\n"
825 "\n"
826 "vec2 __operator - (const vec2 v, const float b) {\n"
827 " return vec2 (v.x - b, v.y - b);\n"
828 "}\n"
829 "\n"
830 "vec2 __operator * (const float a, const vec2 u) {\n"
831 " return vec2 (a * u.x, a * u.y);\n"
832 "}\n"
833 "\n"
834 "vec2 __operator * (const vec2 v, const float b) {\n"
835 " return vec2 (v.x * b, v.y * b);\n"
836 "}\n"
837 "\n"
838 "vec2 __operator / (const float a, const vec2 u) {\n"
839 " return vec2 (a / u.x, a / u.y);\n"
840 "}\n"
841 "\n"
842 "vec2 __operator / (const vec2 v, const float b) {\n"
843 " return vec2 (v.x / b, v.y / b);\n"
844 "}\n"
845 "\n"
846 "vec3 __operator + (const float a, const vec3 u) {\n"
847 " return vec3 (a + u.x, a + u.y, a + u.z);\n"
848 "}\n"
849 "\n"
850 "vec3 __operator + (const vec3 v, const float b) {\n"
851 " return vec3 (v.x + b, v.y + b, v.z + b);\n"
852 "}\n"
853 "\n"
854 "vec3 __operator - (const float a, const vec3 u) {\n"
855 " return vec3 (a - u.x, a - u.y, a - u.z);\n"
856 "}\n"
857 "\n"
858 "vec3 __operator - (const vec3 v, const float b) {\n"
859 " return vec3 (v.x - b, v.y - b, v.z - b);\n"
860 "}\n"
861 "\n"
862 "vec3 __operator * (const float a, const vec3 u) {\n"
863 " return vec3 (a * u.x, a * u.y, a * u.z);\n"
864 "}\n"
865 "\n"
866 "vec3 __operator * (const vec3 v, const float b) {\n"
867 " return vec3 (v.x * b, v.y * b, v.z * b);\n"
868 "}\n"
869 "\n"
870 "vec3 __operator / (const float a, const vec3 u) {\n"
871 " return vec3 (a / u.x, a / u.y, a / u.z);\n"
872 "}\n"
873 "\n"
874 "vec3 __operator / (const vec3 v, const float b) {\n"
875 " return vec3 (v.x / b, v.y / b, v.z / b);\n"
876 "}\n"
877 "\n"
878 "vec4 __operator + (const float a, const vec4 u) {\n"
879 " return vec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
880 "}\n"
881 "\n"
882 "vec4 __operator + (const vec4 v, const float b) {\n"
883 " return vec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
884 "}\n"
885 "\n"
886 "vec4 __operator - (const float a, const vec4 u) {\n"
887 " return vec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
888 "}\n"
889 "\n"
890 "vec4 __operator - (const vec4 v, const float b) {\n"
891 " return vec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
892 "}\n"
893 "\n"
894 "vec4 __operator * (const float a, const vec4 u) {\n"
895 " return vec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
896 "}\n"
897 "\n"
898 "vec4 __operator * (const vec4 v, const float b) {\n"
899 " return vec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
900 "}\n"
901 "\n"
902 "vec4 __operator / (const float a, const vec4 u) {\n"
903 " return vec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
904 "}\n"
905 "\n"
906 "vec4 __operator / (const vec4 v, const float b) {\n"
907 " return vec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
908 "}\n"
909 "\n"
910 "mat2 __operator + (const float a, const mat2 n) {\n"
911 " return mat2 (a + n[0], a + n[1]);\n"
912 "}\n"
913 "\n"
914 "mat2 __operator + (const mat2 m, const float b) {\n"
915 " return mat2 (m[0] + b, m[1] + b);\n"
916 "}\n"
917 "\n"
918 "mat2 __operator - (const float a, const mat2 n) {\n"
919 " return mat2 (a - n[0], a - n[1]);\n"
920 "}\n"
921 "\n"
922 "mat2 __operator - (const mat2 m, const float b) {\n"
923 " return mat2 (m[0] - b, m[1] - b);\n"
924 "}\n"
925 "\n"
926 "mat2 __operator * (const float a, const mat2 n) {\n"
927 " return mat2 (a * n[0], a * n[1]);\n"
928 "}\n"
929 "\n"
930 "mat2 __operator * (const mat2 m, const float b) {\n"
931 " return mat2 (m[0] * b, m[1] * b);\n"
932 "}\n"
933 "\n"
934 "mat2 __operator / (const float a, const mat2 n) {\n"
935 " return mat2 (a / n[0], a / n[1]);\n"
936 "}\n"
937 "\n"
938 "mat2 __operator / (const mat2 m, const float b) {\n"
939 " return mat2 (m[0] / b, m[1] / b);\n"
940 "}\n"
941 "\n"
942 "mat3 __operator + (const float a, const mat3 n) {\n"
943 " return mat3 (a + n[0], a + n[1], a + n[2]);\n"
944 "}\n"
945 "\n"
946 "mat3 __operator + (const mat3 m, const float b) {\n"
947 " return mat3 (m[0] + b, m[1] + b, m[2] + b);\n"
948 "}\n"
949 "\n"
950 "mat3 __operator - (const float a, const mat3 n) {\n"
951 " return mat3 (a - n[0], a - n[1], a - n[2]);\n"
952 "}\n"
953 "\n"
954 "mat3 __operator - (const mat3 m, const float b) {\n"
955 " return mat3 (m[0] - b, m[1] - b, m[2] - b);\n"
956 "}\n"
957 "\n"
958 "mat3 __operator * (const float a, const mat3 n) {\n"
959 " return mat3 (a * n[0], a * n[1], a * n[2]);\n"
960 "}\n"
961 "\n"
962 "mat3 __operator * (const mat3 m, const float b) {\n"
963 " return mat3 (m[0] * b, m[1] * b, m[2] * b);\n"
964 "}\n"
965 "\n"
966 "mat3 __operator / (const float a, const mat3 n) {\n"
967 " return mat3 (a / n[0], a / n[1], a / n[2]);\n"
968 "}\n"
969 "\n"
970 "mat3 __operator / (const mat3 m, const float b) {\n"
971 " return mat3 (m[0] / b, m[1] / b, m[2] / b);\n"
972 "}\n"
973 "\n"
974 "mat4 __operator + (const float a, const mat4 n) {\n"
975 " return mat4 (a + n[0], a + n[1], a + n[2], a + n[3]);\n"
976 "}\n"
977 "\n"
978 "mat4 __operator + (const mat4 m, const float b) {\n"
979 " return mat4 (m[0] + b, m[1] + b, m[2] + b, m[3] + b);\n"
980 "}\n"
981 "\n"
982 "mat4 __operator - (const float a, const mat4 n) {\n"
983 " return mat4 (a - n[0], a - n[1], a - n[2], a - n[3]);\n"
984 "}\n"
985 "\n"
986 "mat4 __operator - (const mat4 m, const float b) {\n"
987 " return mat4 (m[0] - b, m[1] - b, m[2] - b, m[3] - b);\n"
988 "}\n"
989 "\n"
990 "mat4 __operator * (const float a, const mat4 n) {\n"
991 " return mat4 (a * n[0], a * n[1], a * n[2], a * n[3]);\n"
992 "}\n"
993 "\n"
994 "mat4 __operator * (const mat4 m, const float b) {\n"
995 " return mat4 (m[0] * b, m[1] * b, m[2] * b, m[3] * b);\n"
996 "}\n"
997 "\n"
998 "mat4 __operator / (const float a, const mat4 n) {\n"
999 " return mat4 (a / n[0], a / n[1], a / n[2], a / n[3]);\n"
1000 "}\n"
1001 "\n"
1002 "mat4 __operator / (const mat4 m, const float b) {\n"
1003 " return mat4 (m[0] / b, m[1] / b, m[2] / b, m[3] / b);\n"
1004 "}\n"
1005 "\n"
1006 "ivec2 __operator + (const int a, const ivec2 u) {\n"
1007 " return ivec2 (a + u.x, a + u.y);\n"
1008 "}\n"
1009 "\n"
1010 "ivec2 __operator + (const ivec2 v, const int b) {\n"
1011 " return ivec2 (v.x + b, v.y + b);\n"
1012 "}\n"
1013 "\n"
1014 "ivec2 __operator - (const int a, const ivec2 u) {\n"
1015 " return ivec2 (a - u.x, a - u.y);\n"
1016 "}\n"
1017 "\n"
1018 "ivec2 __operator - (const ivec2 v, const int b) {\n"
1019 " return ivec2 (v.x - b, v.y - b);\n"
1020 "}\n"
1021 "\n"
1022 "ivec2 __operator * (const int a, const ivec2 u) {\n"
1023 " return ivec2 (a * u.x, a * u.y);\n"
1024 "}\n"
1025 "\n"
1026 "ivec2 __operator * (const ivec2 v, const int b) {\n"
1027 " return ivec2 (v.x * b, v.y * b);\n"
1028 "}\n"
1029 "\n"
1030 "ivec2 __operator / (const int a, const ivec2 u) {\n"
1031 " return ivec2 (a / u.x, a / u.y);\n"
1032 "}\n"
1033 "\n"
1034 "ivec2 __operator / (const ivec2 v, const int b) {\n"
1035 " return ivec2 (v.x / b, v.y / b);\n"
1036 "}\n"
1037 "\n"
1038 "ivec3 __operator + (const int a, const ivec3 u) {\n"
1039 " return ivec3 (a + u.x, a + u.y, a + u.z);\n"
1040 "}\n"
1041 "\n"
1042 "ivec3 __operator + (const ivec3 v, const int b) {\n"
1043 " return ivec3 (v.x + b, v.y + b, v.z + b);\n"
1044 "}\n"
1045 "\n"
1046 "ivec3 __operator - (const int a, const ivec3 u) {\n"
1047 " return ivec3 (a - u.x, a - u.y, a - u.z);\n"
1048 "}\n"
1049 "\n"
1050 "ivec3 __operator - (const ivec3 v, const int b) {\n"
1051 " return ivec3 (v.x - b, v.y - b, v.z - b);\n"
1052 "}\n"
1053 "\n"
1054 "ivec3 __operator * (const int a, const ivec3 u) {\n"
1055 " return ivec3 (a * u.x, a * u.y, a * u.z);\n"
1056 "}\n"
1057 "\n"
1058 "ivec3 __operator * (const ivec3 v, const int b) {\n"
1059 " return ivec3 (v.x * b, v.y * b, v.z * b);\n"
1060 "}\n"
1061 "\n"
1062 "ivec3 __operator / (const int a, const ivec3 u) {\n"
1063 " return ivec3 (a / u.x, a / u.y, a / u.z);\n"
1064 "}\n"
1065 "\n"
1066 "ivec3 __operator / (const ivec3 v, const int b) {\n"
1067 " return ivec3 (v.x / b, v.y / b, v.z / b);\n"
1068 "}\n"
1069 "\n"
1070 "ivec4 __operator + (const int a, const ivec4 u) {\n"
1071 " return ivec4 (a + u.x, a + u.y, a + u.z, a + u.w);\n"
1072 "}\n"
1073 "\n"
1074 "ivec4 __operator + (const ivec4 v, const int b) {\n"
1075 " return ivec4 (v.x + b, v.y + b, v.z + b, v.w + b);\n"
1076 "}\n"
1077 "\n"
1078 "ivec4 __operator - (const int a, const ivec4 u) {\n"
1079 " return ivec4 (a - u.x, a - u.y, a - u.z, a - u.w);\n"
1080 "}\n"
1081 "\n"
1082 "ivec4 __operator - (const ivec4 v, const int b) {\n"
1083 " return ivec4 (v.x - b, v.y - b, v.z - b, v.w - b);\n"
1084 "}\n"
1085 "\n"
1086 "ivec4 __operator * (const int a, const ivec4 u) {\n"
1087 " return ivec4 (a * u.x, a * u.y, a * u.z, a * u.w);\n"
1088 "}\n"
1089 "\n"
1090 "ivec4 __operator * (const ivec4 v, const int b) {\n"
1091 " return ivec4 (v.x * b, v.y * b, v.z * b, v.w * b);\n"
1092 "}\n"
1093 "\n"
1094 "ivec4 __operator / (const int a, const ivec4 u) {\n"
1095 " return ivec4 (a / u.x, a / u.y, a / u.z, a / u.w);\n"
1096 "}\n"
1097 "\n"
1098 "ivec4 __operator / (const ivec4 v, const int b) {\n"
1099 " return ivec4 (v.x / b, v.y / b, v.z / b, v.w / b);\n"
1100 "}\n"
1101 "\n"
1102 "vec2 __operator * (const vec2 v, const vec2 u) {\n"
1103 " return vec2 (v.x * u.x, v.y * u.y);\n"
1104 "}\n"
1105 "\n"
1106 "vec3 __operator * (const vec3 v, const vec3 u) {\n"
1107 " return vec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1108 "}\n"
1109 "\n"
1110 "vec4 __operator * (const vec4 v, const vec4 u) {\n"
1111 " return vec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1112 "}\n"
1113 "\n"
1114 "ivec2 __operator * (const ivec2 v, const ivec2 u) {\n"
1115 " return ivec2 (v.x * u.x, v.y * u.y);\n"
1116 "}\n"
1117 "\n"
1118 "ivec3 __operator * (const ivec3 v, const ivec3 u) {\n"
1119 " return ivec3 (v.x * u.x, v.y * u.y, v.z * u.z);\n"
1120 "}\n"
1121 "\n"
1122 "ivec4 __operator * (const ivec4 v, const ivec4 u) {\n"
1123 " return ivec4 (v.x * u.x, v.y * u.y, v.z * u.z, v.w * u.w);\n"
1124 "}\n"
1125 "\n"
1126 "vec2 __operator / (const vec2 v, const vec2 u) {\n"
1127 " return vec2 (v.x / u.x, v.y / u.y);\n"
1128 "}\n"
1129 "\n"
1130 "vec3 __operator / (const vec3 v, const vec3 u) {\n"
1131 " return vec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1132 "}\n"
1133 "\n"
1134 "vec4 __operator / (const vec4 v, const vec4 u) {\n"
1135 " return vec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1136 "}\n"
1137 "\n"
1138 "ivec2 __operator / (const ivec2 v, const ivec2 u) {\n"
1139 " return ivec2 (v.x / u.x, v.y / u.y);\n"
1140 "}\n"
1141 "\n"
1142 "ivec3 __operator / (const ivec3 v, const ivec3 u) {\n"
1143 " return ivec3 (v.x / u.x, v.y / u.y, v.z / u.z);\n"
1144 "}\n"
1145 "\n"
1146 "ivec4 __operator / (const ivec4 v, const ivec4 u) {\n"
1147 " return ivec4 (v.x / u.x, v.y / u.y, v.z / u.z, v.w / u.w);\n"
1148 "}\n"
1149 "\n"
1150 "mat2 __operator / (const mat2 m, const mat2 n) {\n"
1151 " return mat2 (m[0] / n[0], m[1] / n[1]);\n"
1152 "}\n"
1153 "\n"
1154 "mat3 __operator / (const mat3 m, const mat3 n) {\n"
1155 " return mat3 (m[0] / n[0], m[1] / n[1], m[2] / n[2]);\n"
1156 "}\n"
1157 "\n"
1158 "mat4 __operator / (const mat4 m, const mat4 n) {\n"
1159 " return mat4 (m[0] / n[0], m[1] / n[1], m[2] / n[2], m[3] / n[3]);\n"
1160 "}\n"
1161 "\n"
1162 "vec2 __operator - (const vec2 v) {\n"
1163 " return vec2 (-v.x, -v.y);\n"
1164 "}\n"
1165 "\n"
1166 "vec3 __operator - (const vec3 v) {\n"
1167 " return vec3 (-v.x, -v.y, -v.z);\n"
1168 "}\n"
1169 "\n"
1170 "vec4 __operator - (const vec4 v) {\n"
1171 " return vec4 (-v.x, -v.y, -v.z, -v.w);\n"
1172 "}\n"
1173 "\n"
1174 "ivec2 __operator - (const ivec2 v) {\n"
1175 " return ivec2 (-v.x, -v.y);\n"
1176 "}\n"
1177 "\n"
1178 "ivec3 __operator - (const ivec3 v) {\n"
1179 " return ivec3 (-v.x, -v.y, -v.z);\n"
1180 "}\n"
1181 "\n"
1182 "ivec4 __operator - (const ivec4 v) {\n"
1183 " return ivec4 (-v.x, -v.y, -v.z, -v.w);\n"
1184 "}\n"
1185 "\n"
1186 "mat2 __operator - (const mat2 m) {\n"
1187 " return mat2 (-m[0], -m[1]);\n"
1188 "}\n"
1189 "\n"
1190 "mat3 __operator - (const mat3 m) {\n"
1191 " return mat3 (-m[0], -m[1], -m[2]);\n"
1192 "}\n"
1193 "\n"
1194 "mat4 __operator - (const mat4 m) {\n"
1195 " return mat4 (-m[0], -m[1], -m[2], -m[3]);\n"
1196 "}\n"
1197 "\n"
1198 "\n"
1199 "\n"
1200 "\n"
1201 "\n"
1202 "\n"
1203 "void __operator -- (inout float a) {\n"
1204 " a -= 1.0;\n"
1205 "}\n"
1206 "\n"
1207 "void __operator -- (inout int a) {\n"
1208 " a -= 1;\n"
1209 "}\n"
1210 "\n"
1211 "void __operator -- (inout vec2 v) {\n"
1212 " --v.x, --v.y;\n"
1213 "}\n"
1214 "\n"
1215 "void __operator -- (inout vec3 v) {\n"
1216 " --v.x, --v.y, --v.z;\n"
1217 "}\n"
1218 "\n"
1219 "void __operator -- (inout vec4 v) {\n"
1220 " --v.x, --v.y, --v.z, --v.w;\n"
1221 "}\n"
1222 "\n"
1223 "void __operator -- (inout ivec2 v) {\n"
1224 " --v.x, --v.y;\n"
1225 "}\n"
1226 "\n"
1227 "void __operator -- (inout ivec3 v) {\n"
1228 " --v.x, --v.y, --v.z;\n"
1229 "}\n"
1230 "\n"
1231 "void __operator -- (inout ivec4 v) {\n"
1232 " --v.x, --v.y, --v.z, --v.w;\n"
1233 "}\n"
1234 "\n"
1235 "void __operator -- (inout mat2 m) {\n"
1236 " --m[0], --m[1];\n"
1237 "}\n"
1238 "\n"
1239 "void __operator -- (inout mat3 m) {\n"
1240 " --m[0], --m[1], --m[2];\n"
1241 "}\n"
1242 "\n"
1243 "void __operator -- (inout mat4 m) {\n"
1244 " --m[0], --m[1], --m[2], --m[3];\n"
1245 "}\n"
1246 "\n"
1247 "void __operator ++ (inout float a) {\n"
1248 " a += 1.0;\n"
1249 "}\n"
1250 "\n"
1251 "void __operator ++ (inout int a) {\n"
1252 " a += 1;\n"
1253 "}\n"
1254 "\n"
1255 "void __operator ++ (inout vec2 v) {\n"
1256 " ++v.x, ++v.y;\n"
1257 "}\n"
1258 "\n"
1259 "void __operator ++ (inout vec3 v) {\n"
1260 " ++v.x, ++v.y, ++v.z;\n"
1261 "}\n"
1262 "\n"
1263 "void __operator ++ (inout vec4 v) {\n"
1264 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1265 "}\n"
1266 "\n"
1267 "void __operator ++ (inout ivec2 v) {\n"
1268 " ++v.x, ++v.y;\n"
1269 "}\n"
1270 "\n"
1271 "void __operator ++ (inout ivec3 v) {\n"
1272 " ++v.x, ++v.y, ++v.z;\n"
1273 "}\n"
1274 "\n"
1275 "void __operator ++ (inout ivec4 v) {\n"
1276 " ++v.x, ++v.y, ++v.z, ++v.w;\n"
1277 "}\n"
1278 "\n"
1279 "void __operator ++ (inout mat2 m) {\n"
1280 " ++m[0], ++m[1];\n"
1281 "}\n"
1282 "\n"
1283 "void __operator ++ (inout mat3 m) {\n"
1284 " ++m[0], ++m[1], ++m[2];\n"
1285 "}\n"
1286 "\n"
1287 "void __operator ++ (inout mat4 m) {\n"
1288 " ++m[0], ++m[1], ++m[2], ++m[3];\n"
1289 "}\n"
1290 "\n"
1291 "float __operator -- (inout float a, const int) {\n"
1292 " float c;\n"
1293 " c = a;\n"
1294 " --a;\n"
1295 " return c;\n"
1296 "}\n"
1297 "\n"
1298 "int __operator -- (inout int a, const int) {\n"
1299 " int c;\n"
1300 " c = a;\n"
1301 " --a;\n"
1302 " return c;\n"
1303 "}\n"
1304 "\n"
1305 "vec2 __operator -- (inout vec2 v, const int) {\n"
1306 " return vec2 (v.x--, v.y--);\n"
1307 "}\n"
1308 "\n"
1309 "vec3 __operator -- (inout vec3 v, const int) {\n"
1310 " return vec3 (v.x--, v.y--, v.z--);\n"
1311 "}\n"
1312 "\n"
1313 "vec4 __operator -- (inout vec4 v, const int) {\n"
1314 " return vec4 (v.x--, v.y--, v.z--, v.w--);\n"
1315 "}\n"
1316 "\n"
1317 "ivec2 __operator -- (inout ivec2 v, const int) {\n"
1318 " return ivec2 (v.x--, v.y--);\n"
1319 "}\n"
1320 "\n"
1321 "ivec3 __operator -- (inout ivec3 v, const int) {\n"
1322 " return ivec3 (v.x--, v.y--, v.z--);\n"
1323 "}\n"
1324 "\n"
1325 "ivec4 __operator -- (inout ivec4 v, const int) {\n"
1326 " return ivec4 (v.x--, v.y--, v.z--, v.w--);\n"
1327 "}\n"
1328 "\n"
1329 "mat2 __operator -- (inout mat2 m, const int) {\n"
1330 " return mat2 (m[0]--, m[1]--);\n"
1331 "}\n"
1332 "\n"
1333 "mat3 __operator -- (inout mat3 m, const int) {\n"
1334 " return mat3 (m[0]--, m[1]--, m[2]--);\n"
1335 "}\n"
1336 "\n"
1337 "mat4 __operator -- (inout mat4 m, const int) {\n"
1338 " return mat4 (m[0]--, m[1]--, m[2]--, m[3]--);\n"
1339 "}\n"
1340 "\n"
1341 "float __operator ++ (inout float a, const int) {\n"
1342 " float c;\n"
1343 " c = a;\n"
1344 " ++a;\n"
1345 " return c;\n"
1346 "}\n"
1347 "\n"
1348 "int __operator ++ (inout int a, const int) {\n"
1349 " int c;\n"
1350 " c = a;\n"
1351 " ++a;\n"
1352 " return c;\n"
1353 "}\n"
1354 "\n"
1355 "vec2 __operator ++ (inout vec2 v, const int) {\n"
1356 " return vec2 (v.x++, v.y++);\n"
1357 "}\n"
1358 "\n"
1359 "vec3 __operator ++ (inout vec3 v, const int) {\n"
1360 " return vec3 (v.x++, v.y++, v.z++);\n"
1361 "}\n"
1362 "\n"
1363 "vec4 __operator ++ (inout vec4 v, const int) {\n"
1364 " return vec4 (v.x++, v.y++, v.z++, v.w++);\n"
1365 "}\n"
1366 "\n"
1367 "ivec2 __operator ++ (inout ivec2 v, const int) {\n"
1368 " return ivec2 (v.x++, v.y++);\n"
1369 "}\n"
1370 "\n"
1371 "ivec3 __operator ++ (inout ivec3 v, const int) {\n"
1372 " return ivec3 (v.x++, v.y++, v.z++);\n"
1373 "}\n"
1374 "\n"
1375 "ivec4 __operator ++ (inout ivec4 v, const int) {\n"
1376 " return ivec4 (v.x++, v.y++, v.z++, v.w++);\n"
1377 "}\n"
1378 "\n"
1379 "mat2 __operator ++ (inout mat2 m, const int) {\n"
1380 " return mat2 (m[0]++, m[1]++);\n"
1381 "}\n"
1382 "\n"
1383 "mat3 __operator ++ (inout mat3 m, const int) {\n"
1384 " return mat3 (m[0]++, m[1]++, m[2]++);\n"
1385 "}\n"
1386 "\n"
1387 "mat4 __operator ++ (inout mat4 m, const int) {\n"
1388 " return mat4 (m[0]++, m[1]++, m[2]++, m[3]++);\n"
1389 "}\n"
1390 "\n"
1391 "bool __operator < (const float a, const float b) {\n"
1392 " bool c;\n"
1393 " __asm float_less c, a, b;\n"
1394 " return c;\n"
1395 "}\n"
1396 "\n"
1397 "bool __operator < (const int a, const int b) {\n"
1398 " return float (a) < float (b);\n"
1399 "}\n"
1400 "\n"
1401 "bool __operator > (const float a, const float b) {\n"
1402 " return b < a;\n"
1403 "}\n"
1404 "\n"
1405 "bool __operator > (const int a, const int b) {\n"
1406 " return b < a;\n"
1407 "}\n"
1408 "\n"
1409 "bool __operator >= (const float a, const float b) {\n"
1410 " return a > b || a == b;\n"
1411 "}\n"
1412 "\n"
1413 "bool __operator >= (const int a, const int b) {\n"
1414 " return a > b || a == b;\n"
1415 "}\n"
1416 "\n"
1417 "bool __operator <= (const float a, const float b) {\n"
1418 " return a < b || a == b;\n"
1419 "}\n"
1420 "\n"
1421 "bool __operator <= (const int a, const int b) {\n"
1422 " return a < b || a == b;\n"
1423 "}\n"
1424 "\n"
1425 "\n"
1426 "\n"
1427 "\n"
1428 "\n"
1429 "\n"
1430 "\n"
1431 "\n"
1432 "\n"
1433 "\n"
1434 "\n"
1435 "\n"
1436 "\n"
1437 "\n"
1438 "\n"
1439 "\n"
1440 "\n"
1441 "\n"
1442 "\n"
1443 "\n"
1444 "\n"
1445 "\n"
1446 "\n"
1447 "\n"
1448 "\n"
1449 "\n"
1450 "\n"
1451 "\n"
1452 "\n"
1453 "\n"
1454 "\n"
1455 "\n"
1456 "\n"
1457 "\n"
1458 "\n"
1459 "\n"
1460 "\n"
1461 "\n"
1462 "\n"
1463 "\n"
1464 "\n"
1465 "\n"
1466 "\n"
1467 "\n"
1468 "\n"
1469 "\n"
1470 "\n"
1471 "\n"
1472 "\n"
1473 "\n"
1474 "\n"
1475 "\n"
1476 "\n"
1477 "\n"
1478 "\n"
1479 "\n"
1480 "\n"
1481 "\n"
1482 "\n"
1483 "\n"
1484 "\n"
1485 "\n"
1486 "\n"
1487 "\n"
1488 "\n"
1489 "\n"
1490 "\n"
1491 "\n"
1492 "\n"
1493 "\n"
1494 "\n"
1495 "\n"
1496 "\n"
1497 "\n"
1498 "\n"
1499 "\n"
1500 "\n"
1501 "\n"
1502 "\n"
1503 "\n"
1504 "\n"
1505 "\n"
1506 "\n"
1507 "\n"
1508 "\n"
1509 "\n"
1510 "\n"
1511 "\n"
1512 "\n"
1513 "\n"
1514 "\n"
1515 "\n"
1516 "\n"
1517 "\n"
1518 "\n"
1519 "\n"
1520 "\n"
1521 "\n"
1522 "\n"
1523 "\n"
1524 "\n"
1525 "\n"
1526 "\n"
1527 "\n"
1528 "\n"
1529 "\n"
1530 "\n"
1531 "\n"
1532 "\n"
1533 "\n"
1534 "\n"
1535 "\n"
1536 "\n"
1537 "\n"
1538 "\n"
1539 "\n"
1540 "\n"
1541 "\n"
1542 "\n"
1543 "\n"
1544 "\n"
1545 "\n"
1546 "\n"
1547 "bool __operator ^^ (const bool a, const bool b) {\n"
1548 " return a != b;\n"
1549 "}\n"
1550 "\n"
1551 "\n"
1552 "\n"
1553 "\n"
1554 "\n"
1555 "\n"
1556 "\n"
1557 "\n"
1558 "\n"
1559 "\n"
1560 "\n"
1561 "\n"
1562 "bool __operator ! (const bool a) {\n"
1563 " return a == false;\n"
1564 "}\n"
1565 "\n"