xref: /aosp_15_r20/external/deqp/data/gles3/shaders/swizzle_math_operations.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1# WARNING: This file is auto-generated. Do NOT modify it manually, but rather
2# modify the generating script file. Otherwise changes will be lost!
3
4group vector_add "Vector swizzle math operations"
5
6    case mediump_vec2_x_x
7        version 300 es
8        values
9        {
10            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
11            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
12            output float out0 = [ 0.2 | 2.0 | -1.0 | -64.0 | -1.5 ];
13        }
14
15        both ""
16            #version 300 es
17            precision mediump float;
18
19            ${DECLARATIONS}
20
21            void main()
22            {
23                ${SETUP}
24                out0 = in0.x + in1.x;
25                ${OUTPUT}
26            }
27        ""
28    end
29
30    case mediump_vec2_xx_xx
31        version 300 es
32        values
33        {
34            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
35            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
36            output vec2 out0 = [ vec2(0.2, 0.2) | vec2(2.0, 2.0) | vec2(-1.0, -1.0) | vec2(-64.0, -64.0) | vec2(-1.5, -1.5) ];
37        }
38
39        both ""
40            #version 300 es
41            precision mediump float;
42
43            ${DECLARATIONS}
44
45            void main()
46            {
47                ${SETUP}
48                out0 = in0.xx + in1.xx;
49                ${OUTPUT}
50            }
51        ""
52    end
53
54    case mediump_vec2_xy_yx
55        version 300 es
56        values
57        {
58            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
59            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
60            output vec2 out0 = [ vec2(0.6, 0.6) | vec2(2.25, 2.25) | vec2(-2.75, -2.75) | vec2(32.0, 32.0) | vec2(-0.782258064516, -0.782258064516) ];
61        }
62
63        both ""
64            #version 300 es
65            precision mediump float;
66
67            ${DECLARATIONS}
68
69            void main()
70            {
71                ${SETUP}
72                out0 = in0.xy + in1.yx;
73                ${OUTPUT}
74            }
75        ""
76    end
77
78    case mediump_vec2_yx_xy
79        version 300 es
80        values
81        {
82            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
83            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
84            output vec2 out0 = [ vec2(0.6, 0.6) | vec2(2.25, 2.25) | vec2(-2.75, -2.75) | vec2(32.0, 32.0) | vec2(-0.782258064516, -0.782258064516) ];
85        }
86
87        both ""
88            #version 300 es
89            precision mediump float;
90
91            ${DECLARATIONS}
92
93            void main()
94            {
95                ${SETUP}
96                out0 = in0.yx + in1.xy;
97                ${OUTPUT}
98            }
99        ""
100    end
101
102    case mediump_vec2_yxy_xyy
103        version 300 es
104        values
105        {
106            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
107            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
108            output vec3 out0 = [ vec3(0.6, 0.6, 1.0) | vec3(2.25, 2.25, 2.5) | vec3(-2.75, -2.75, -4.5) | vec3(32.0, 32.0, 128.0) | vec3(-0.782258064516, -0.782258064516, -0.0645161290323) ];
109        }
110
111        both ""
112            #version 300 es
113            precision mediump float;
114
115            ${DECLARATIONS}
116
117            void main()
118            {
119                ${SETUP}
120                out0 = in0.yxy + in1.xyy;
121                ${OUTPUT}
122            }
123        ""
124    end
125
126    case mediump_vec2_xyxx_yxxx
127        version 300 es
128        values
129        {
130            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
131            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
132            output vec4 out0 = [ vec4(0.6, 0.6, 0.2, 0.2) | vec4(2.25, 2.25, 2.0, 2.0) | vec4(-2.75, -2.75, -1.0, -1.0) | vec4(32.0, 32.0, -64.0, -64.0) | vec4(-0.782258064516, -0.782258064516, -1.5, -1.5) ];
133        }
134
135        both ""
136            #version 300 es
137            precision mediump float;
138
139            ${DECLARATIONS}
140
141            void main()
142            {
143                ${SETUP}
144                out0 = in0.xyxx + in1.yxxx;
145                ${OUTPUT}
146            }
147        ""
148    end
149
150    case mediump_vec2_yxyx_xyxy
151        version 300 es
152        values
153        {
154            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
155            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
156            output vec4 out0 = [ vec4(0.6, 0.6, 0.6, 0.6) | vec4(2.25, 2.25, 2.25, 2.25) | vec4(-2.75, -2.75, -2.75, -2.75) | vec4(32.0, 32.0, 32.0, 32.0) | vec4(-0.782258064516, -0.782258064516, -0.782258064516, -0.782258064516) ];
157        }
158
159        both ""
160            #version 300 es
161            precision mediump float;
162
163            ${DECLARATIONS}
164
165            void main()
166            {
167                ${SETUP}
168                out0 = in0.yxyx + in1.xyxy;
169                ${OUTPUT}
170            }
171        ""
172    end
173
174    case mediump_vec3_x_x
175        version 300 es
176        values
177        {
178            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
179            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
180            output float out0 = [ 0.2 | 2.0 | -1.0 | -64.0 | -1.5 ];
181        }
182
183        both ""
184            #version 300 es
185            precision mediump float;
186
187            ${DECLARATIONS}
188
189            void main()
190            {
191                ${SETUP}
192                out0 = in0.x + in1.x;
193                ${OUTPUT}
194            }
195        ""
196    end
197
198    case mediump_vec3_z_z
199        version 300 es
200        values
201        {
202            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
203            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
204            output float out0 = [ 1.5 | 2.25 | -9.75 | -102.0 | 0.105263157895 ];
205        }
206
207        both ""
208            #version 300 es
209            precision mediump float;
210
211            ${DECLARATIONS}
212
213            void main()
214            {
215                ${SETUP}
216                out0 = in0.z + in1.z;
217                ${OUTPUT}
218            }
219        ""
220    end
221
222    case mediump_vec3_xz_zx
223        version 300 es
224        values
225        {
226            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
227            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
228            output vec2 out0 = [ vec2(0.85, 0.85) | vec2(2.125, 2.125) | vec2(-5.375, -5.375) | vec2(-83.0, -83.0) | vec2(-0.697368421053, -0.697368421053) ];
229        }
230
231        both ""
232            #version 300 es
233            precision mediump float;
234
235            ${DECLARATIONS}
236
237            void main()
238            {
239                ${SETUP}
240                out0 = in0.xz + in1.zx;
241                ${OUTPUT}
242            }
243        ""
244    end
245
246    case mediump_vec3_zz_zz
247        version 300 es
248        values
249        {
250            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
251            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
252            output vec2 out0 = [ vec2(1.5, 1.5) | vec2(2.25, 2.25) | vec2(-9.75, -9.75) | vec2(-102.0, -102.0) | vec2(0.105263157895, 0.105263157895) ];
253        }
254
255        both ""
256            #version 300 es
257            precision mediump float;
258
259            ${DECLARATIONS}
260
261            void main()
262            {
263                ${SETUP}
264                out0 = in0.zz + in1.zz;
265                ${OUTPUT}
266            }
267        ""
268    end
269
270    case mediump_vec3_xyz_yzx
271        version 300 es
272        values
273        {
274            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
275            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
276            output vec3 out0 = [ vec3(0.6, 1.25, 0.85) | vec3(2.25, 2.375, 2.125) | vec3(-2.75, -7.125, -5.375) | vec3(32.0, 13.0, -83.0) | vec3(-0.782258064516, 0.0203735144312, -0.697368421053) ];
277        }
278
279        both ""
280            #version 300 es
281            precision mediump float;
282
283            ${DECLARATIONS}
284
285            void main()
286            {
287                ${SETUP}
288                out0 = in0.xyz + in1.yzx;
289                ${OUTPUT}
290            }
291        ""
292    end
293
294    case mediump_vec3_zyx_yxz
295        version 300 es
296        values
297        {
298            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
299            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
300            output vec3 out0 = [ vec3(1.25, 0.6, 0.85) | vec3(2.375, 2.25, 2.125) | vec3(-7.125, -2.75, -5.375) | vec3(13.0, 32.0, -83.0) | vec3(0.0203735144312, -0.782258064516, -0.697368421053) ];
301        }
302
303        both ""
304            #version 300 es
305            precision mediump float;
306
307            ${DECLARATIONS}
308
309            void main()
310            {
311                ${SETUP}
312                out0 = in0.zyx + in1.yxz;
313                ${OUTPUT}
314            }
315        ""
316    end
317
318    case mediump_vec3_xxx_xxx
319        version 300 es
320        values
321        {
322            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
323            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
324            output vec3 out0 = [ vec3(0.2, 0.2, 0.2) | vec3(2.0, 2.0, 2.0) | vec3(-1.0, -1.0, -1.0) | vec3(-64.0, -64.0, -64.0) | vec3(-1.5, -1.5, -1.5) ];
325        }
326
327        both ""
328            #version 300 es
329            precision mediump float;
330
331            ${DECLARATIONS}
332
333            void main()
334            {
335                ${SETUP}
336                out0 = in0.xxx + in1.xxx;
337                ${OUTPUT}
338            }
339        ""
340    end
341
342    case mediump_vec3_zzz_zzz
343        version 300 es
344        values
345        {
346            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
347            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
348            output vec3 out0 = [ vec3(1.5, 1.5, 1.5) | vec3(2.25, 2.25, 2.25) | vec3(-9.75, -9.75, -9.75) | vec3(-102.0, -102.0, -102.0) | vec3(0.105263157895, 0.105263157895, 0.105263157895) ];
349        }
350
351        both ""
352            #version 300 es
353            precision mediump float;
354
355            ${DECLARATIONS}
356
357            void main()
358            {
359                ${SETUP}
360                out0 = in0.zzz + in1.zzz;
361                ${OUTPUT}
362            }
363        ""
364    end
365
366    case mediump_vec3_zzy_zyz
367        version 300 es
368        values
369        {
370            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
371            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
372            output vec3 out0 = [ vec3(1.5, 1.25, 1.25) | vec3(2.25, 2.375, 2.375) | vec3(-9.75, -7.125, -7.125) | vec3(-102.0, 13.0, 13.0) | vec3(0.105263157895, 0.0203735144312, 0.0203735144312) ];
373        }
374
375        both ""
376            #version 300 es
377            precision mediump float;
378
379            ${DECLARATIONS}
380
381            void main()
382            {
383                ${SETUP}
384                out0 = in0.zzy + in1.zyz;
385                ${OUTPUT}
386            }
387        ""
388    end
389
390    case mediump_vec3_yxy_xyy
391        version 300 es
392        values
393        {
394            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
395            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
396            output vec3 out0 = [ vec3(0.6, 0.6, 1.0) | vec3(2.25, 2.25, 2.5) | vec3(-2.75, -2.75, -4.5) | vec3(32.0, 32.0, 128.0) | vec3(-0.782258064516, -0.782258064516, -0.0645161290323) ];
397        }
398
399        both ""
400            #version 300 es
401            precision mediump float;
402
403            ${DECLARATIONS}
404
405            void main()
406            {
407                ${SETUP}
408                out0 = in0.yxy + in1.xyy;
409                ${OUTPUT}
410            }
411        ""
412    end
413
414    case mediump_vec3_xzx_zxx
415        version 300 es
416        values
417        {
418            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
419            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
420            output vec3 out0 = [ vec3(0.85, 0.85, 0.2) | vec3(2.125, 2.125, 2.0) | vec3(-5.375, -5.375, -1.0) | vec3(-83.0, -83.0, -64.0) | vec3(-0.697368421053, -0.697368421053, -1.5) ];
421        }
422
423        both ""
424            #version 300 es
425            precision mediump float;
426
427            ${DECLARATIONS}
428
429            void main()
430            {
431                ${SETUP}
432                out0 = in0.xzx + in1.zxx;
433                ${OUTPUT}
434            }
435        ""
436    end
437
438    case mediump_vec3_xyyx_yyxx
439        version 300 es
440        values
441        {
442            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
443            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
444            output vec4 out0 = [ vec4(0.6, 1.0, 0.6, 0.2) | vec4(2.25, 2.5, 2.25, 2.0) | vec4(-2.75, -4.5, -2.75, -1.0) | vec4(32.0, 128.0, 32.0, -64.0) | vec4(-0.782258064516, -0.0645161290323, -0.782258064516, -1.5) ];
445        }
446
447        both ""
448            #version 300 es
449            precision mediump float;
450
451            ${DECLARATIONS}
452
453            void main()
454            {
455                ${SETUP}
456                out0 = in0.xyyx + in1.yyxx;
457                ${OUTPUT}
458            }
459        ""
460    end
461
462    case mediump_vec3_zxyz_xyzz
463        version 300 es
464        values
465        {
466            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
467            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
468            output vec4 out0 = [ vec4(0.85, 0.6, 1.25, 1.5) | vec4(2.125, 2.25, 2.375, 2.25) | vec4(-5.375, -2.75, -7.125, -9.75) | vec4(-83.0, 32.0, 13.0, -102.0) | vec4(-0.697368421053, -0.782258064516, 0.0203735144312, 0.105263157895) ];
469        }
470
471        both ""
472            #version 300 es
473            precision mediump float;
474
475            ${DECLARATIONS}
476
477            void main()
478            {
479                ${SETUP}
480                out0 = in0.zxyz + in1.xyzz;
481                ${OUTPUT}
482            }
483        ""
484    end
485
486    case mediump_vec4_x_x
487        version 300 es
488        values
489        {
490            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
491            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
492            output float out0 = [ 0.2 | 2.0 | -1.0 | -64.0 | -1.5 ];
493        }
494
495        both ""
496            #version 300 es
497            precision mediump float;
498
499            ${DECLARATIONS}
500
501            void main()
502            {
503                ${SETUP}
504                out0 = in0.x + in1.x;
505                ${OUTPUT}
506            }
507        ""
508    end
509
510    case mediump_vec4_w_w
511        version 300 es
512        values
513        {
514            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
515            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
516            output float out0 = [ 1.65 | 3.5 | 18.0 | 48.0 | 0.5 ];
517        }
518
519        both ""
520            #version 300 es
521            precision mediump float;
522
523            ${DECLARATIONS}
524
525            void main()
526            {
527                ${SETUP}
528                out0 = in0.w + in1.w;
529                ${OUTPUT}
530            }
531        ""
532    end
533
534    case mediump_vec4_wx_xw
535        version 300 es
536        values
537        {
538            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
539            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
540            output vec2 out0 = [ vec2(0.925, 0.925) | vec2(2.75, 2.75) | vec2(8.5, 8.5) | vec2(-8.0, -8.0) | vec2(-0.5, -0.5) ];
541        }
542
543        both ""
544            #version 300 es
545            precision mediump float;
546
547            ${DECLARATIONS}
548
549            void main()
550            {
551                ${SETUP}
552                out0 = in0.wx + in1.xw;
553                ${OUTPUT}
554            }
555        ""
556    end
557
558    case mediump_vec4_wz_zw
559        version 300 es
560        values
561        {
562            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
563            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
564            output vec2 out0 = [ vec2(1.575, 1.575) | vec2(2.875, 2.875) | vec2(4.125, 4.125) | vec2(-27.0, -27.0) | vec2(0.302631578947, 0.302631578947) ];
565        }
566
567        both ""
568            #version 300 es
569            precision mediump float;
570
571            ${DECLARATIONS}
572
573            void main()
574            {
575                ${SETUP}
576                out0 = in0.wz + in1.zw;
577                ${OUTPUT}
578            }
579        ""
580    end
581
582    case mediump_vec4_www_www
583        version 300 es
584        values
585        {
586            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
587            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
588            output vec3 out0 = [ vec3(1.65, 1.65, 1.65) | vec3(3.5, 3.5, 3.5) | vec3(18.0, 18.0, 18.0) | vec3(48.0, 48.0, 48.0) | vec3(0.5, 0.5, 0.5) ];
589        }
590
591        both ""
592            #version 300 es
593            precision mediump float;
594
595            ${DECLARATIONS}
596
597            void main()
598            {
599                ${SETUP}
600                out0 = in0.www + in1.www;
601                ${OUTPUT}
602            }
603        ""
604    end
605
606    case mediump_vec4_yyw_ywy
607        version 300 es
608        values
609        {
610            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
611            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
612            output vec3 out0 = [ vec3(1.0, 1.325, 1.325) | vec3(2.5, 3.0, 3.0) | vec3(-4.5, 6.75, 6.75) | vec3(128.0, 88.0, 88.0) | vec3(-0.0645161290323, 0.217741935484, 0.217741935484) ];
613        }
614
615        both ""
616            #version 300 es
617            precision mediump float;
618
619            ${DECLARATIONS}
620
621            void main()
622            {
623                ${SETUP}
624                out0 = in0.yyw + in1.ywy;
625                ${OUTPUT}
626            }
627        ""
628    end
629
630    case mediump_vec4_wzy_zyw
631        version 300 es
632        values
633        {
634            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
635            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
636            output vec3 out0 = [ vec3(1.575, 1.25, 1.325) | vec3(2.875, 2.375, 3.0) | vec3(4.125, -7.125, 6.75) | vec3(-27.0, 13.0, 88.0) | vec3(0.302631578947, 0.0203735144312, 0.217741935484) ];
637        }
638
639        both ""
640            #version 300 es
641            precision mediump float;
642
643            ${DECLARATIONS}
644
645            void main()
646            {
647                ${SETUP}
648                out0 = in0.wzy + in1.zyw;
649                ${OUTPUT}
650            }
651        ""
652    end
653
654    case mediump_vec4_xyzw_yzwx
655        version 300 es
656        values
657        {
658            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
659            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
660            output vec4 out0 = [ vec4(0.6, 1.25, 1.575, 0.925) | vec4(2.25, 2.375, 2.875, 2.75) | vec4(-2.75, -7.125, 4.125, 8.5) | vec4(32.0, 13.0, -27.0, -8.0) | vec4(-0.782258064516, 0.0203735144312, 0.302631578947, -0.5) ];
661        }
662
663        both ""
664            #version 300 es
665            precision mediump float;
666
667            ${DECLARATIONS}
668
669            void main()
670            {
671                ${SETUP}
672                out0 = in0.xyzw + in1.yzwx;
673                ${OUTPUT}
674            }
675        ""
676    end
677
678    case mediump_vec4_wzyx_zyxw
679        version 300 es
680        values
681        {
682            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
683            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
684            output vec4 out0 = [ vec4(1.575, 1.25, 0.6, 0.925) | vec4(2.875, 2.375, 2.25, 2.75) | vec4(4.125, -7.125, -2.75, 8.5) | vec4(-27.0, 13.0, 32.0, -8.0) | vec4(0.302631578947, 0.0203735144312, -0.782258064516, -0.5) ];
685        }
686
687        both ""
688            #version 300 es
689            precision mediump float;
690
691            ${DECLARATIONS}
692
693            void main()
694            {
695                ${SETUP}
696                out0 = in0.wzyx + in1.zyxw;
697                ${OUTPUT}
698            }
699        ""
700    end
701
702    case mediump_vec4_xyxy_yxyx
703        version 300 es
704        values
705        {
706            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
707            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
708            output vec4 out0 = [ vec4(0.6, 0.6, 0.6, 0.6) | vec4(2.25, 2.25, 2.25, 2.25) | vec4(-2.75, -2.75, -2.75, -2.75) | vec4(32.0, 32.0, 32.0, 32.0) | vec4(-0.782258064516, -0.782258064516, -0.782258064516, -0.782258064516) ];
709        }
710
711        both ""
712            #version 300 es
713            precision mediump float;
714
715            ${DECLARATIONS}
716
717            void main()
718            {
719                ${SETUP}
720                out0 = in0.xyxy + in1.yxyx;
721                ${OUTPUT}
722            }
723        ""
724    end
725
726    case mediump_vec4_yzzy_zzyy
727        version 300 es
728        values
729        {
730            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
731            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
732            output vec4 out0 = [ vec4(1.25, 1.5, 1.25, 1.0) | vec4(2.375, 2.25, 2.375, 2.5) | vec4(-7.125, -9.75, -7.125, -4.5) | vec4(13.0, -102.0, 13.0, 128.0) | vec4(0.0203735144312, 0.105263157895, 0.0203735144312, -0.0645161290323) ];
733        }
734
735        both ""
736            #version 300 es
737            precision mediump float;
738
739            ${DECLARATIONS}
740
741            void main()
742            {
743                ${SETUP}
744                out0 = in0.yzzy + in1.zzyy;
745                ${OUTPUT}
746            }
747        ""
748    end
749
750    case mediump_vec4_wxww_xwww
751        version 300 es
752        values
753        {
754            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
755            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
756            output vec4 out0 = [ vec4(0.925, 0.925, 1.65, 1.65) | vec4(2.75, 2.75, 3.5, 3.5) | vec4(8.5, 8.5, 18.0, 18.0) | vec4(-8.0, -8.0, 48.0, 48.0) | vec4(-0.5, -0.5, 0.5, 0.5) ];
757        }
758
759        both ""
760            #version 300 es
761            precision mediump float;
762
763            ${DECLARATIONS}
764
765            void main()
766            {
767                ${SETUP}
768                out0 = in0.wxww + in1.xwww;
769                ${OUTPUT}
770            }
771        ""
772    end
773
774    case mediump_vec4_xyxx_yxxx
775        version 300 es
776        values
777        {
778            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
779            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
780            output vec4 out0 = [ vec4(0.6, 0.6, 0.2, 0.2) | vec4(2.25, 2.25, 2.0, 2.0) | vec4(-2.75, -2.75, -1.0, -1.0) | vec4(32.0, 32.0, -64.0, -64.0) | vec4(-0.782258064516, -0.782258064516, -1.5, -1.5) ];
781        }
782
783        both ""
784            #version 300 es
785            precision mediump float;
786
787            ${DECLARATIONS}
788
789            void main()
790            {
791                ${SETUP}
792                out0 = in0.xyxx + in1.yxxx;
793                ${OUTPUT}
794            }
795        ""
796    end
797
798    case mediump_vec4_zzzz_zzzz
799        version 300 es
800        values
801        {
802            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
803            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
804            output vec4 out0 = [ vec4(1.5, 1.5, 1.5, 1.5) | vec4(2.25, 2.25, 2.25, 2.25) | vec4(-9.75, -9.75, -9.75, -9.75) | vec4(-102.0, -102.0, -102.0, -102.0) | vec4(0.105263157895, 0.105263157895, 0.105263157895, 0.105263157895) ];
805        }
806
807        both ""
808            #version 300 es
809            precision mediump float;
810
811            ${DECLARATIONS}
812
813            void main()
814            {
815                ${SETUP}
816                out0 = in0.zzzz + in1.zzzz;
817                ${OUTPUT}
818            }
819        ""
820    end
821
822    case mediump_ivec2_x_x
823        version 300 es
824        values
825        {
826            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
827            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
828            output int out0 = [ -2 | 2 | -2 ];
829        }
830
831        both ""
832            #version 300 es
833            precision mediump float;
834
835            ${DECLARATIONS}
836
837            void main()
838            {
839                ${SETUP}
840                out0 = in0.x + in1.x;
841                ${OUTPUT}
842            }
843        ""
844    end
845
846    case mediump_ivec2_xx_xx
847        version 300 es
848        values
849        {
850            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
851            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
852            output ivec2 out0 = [ ivec2(-2, -2) | ivec2(2, 2) | ivec2(-2, -2) ];
853        }
854
855        both ""
856            #version 300 es
857            precision mediump float;
858
859            ${DECLARATIONS}
860
861            void main()
862            {
863                ${SETUP}
864                out0 = in0.xx + in1.xx;
865                ${OUTPUT}
866            }
867        ""
868    end
869
870    case mediump_ivec2_xy_yx
871        version 300 es
872        values
873        {
874            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
875            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
876            output ivec2 out0 = [ ivec2(0, 0) | ivec2(3, 3) | ivec2(-3, -3) ];
877        }
878
879        both ""
880            #version 300 es
881            precision mediump float;
882
883            ${DECLARATIONS}
884
885            void main()
886            {
887                ${SETUP}
888                out0 = in0.xy + in1.yx;
889                ${OUTPUT}
890            }
891        ""
892    end
893
894    case mediump_ivec2_yx_xy
895        version 300 es
896        values
897        {
898            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
899            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
900            output ivec2 out0 = [ ivec2(0, 0) | ivec2(3, 3) | ivec2(-3, -3) ];
901        }
902
903        both ""
904            #version 300 es
905            precision mediump float;
906
907            ${DECLARATIONS}
908
909            void main()
910            {
911                ${SETUP}
912                out0 = in0.yx + in1.xy;
913                ${OUTPUT}
914            }
915        ""
916    end
917
918    case mediump_ivec2_yxy_xyy
919        version 300 es
920        values
921        {
922            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
923            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
924            output ivec3 out0 = [ ivec3(0, 0, 2) | ivec3(3, 3, 4) | ivec3(-3, -3, -4) ];
925        }
926
927        both ""
928            #version 300 es
929            precision mediump float;
930
931            ${DECLARATIONS}
932
933            void main()
934            {
935                ${SETUP}
936                out0 = in0.yxy + in1.xyy;
937                ${OUTPUT}
938            }
939        ""
940    end
941
942    case mediump_ivec2_xyxx_yxxx
943        version 300 es
944        values
945        {
946            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
947            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
948            output ivec4 out0 = [ ivec4(0, 0, -2, -2) | ivec4(3, 3, 2, 2) | ivec4(-3, -3, -2, -2) ];
949        }
950
951        both ""
952            #version 300 es
953            precision mediump float;
954
955            ${DECLARATIONS}
956
957            void main()
958            {
959                ${SETUP}
960                out0 = in0.xyxx + in1.yxxx;
961                ${OUTPUT}
962            }
963        ""
964    end
965
966    case mediump_ivec2_yxyx_xyxy
967        version 300 es
968        values
969        {
970            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
971            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
972            output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(3, 3, 3, 3) | ivec4(-3, -3, -3, -3) ];
973        }
974
975        both ""
976            #version 300 es
977            precision mediump float;
978
979            ${DECLARATIONS}
980
981            void main()
982            {
983                ${SETUP}
984                out0 = in0.yxyx + in1.xyxy;
985                ${OUTPUT}
986            }
987        ""
988    end
989
990    case mediump_ivec3_x_x
991        version 300 es
992        values
993        {
994            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
995            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
996            output int out0 = [ -2 | 2 | -2 ];
997        }
998
999        both ""
1000            #version 300 es
1001            precision mediump float;
1002
1003            ${DECLARATIONS}
1004
1005            void main()
1006            {
1007                ${SETUP}
1008                out0 = in0.x + in1.x;
1009                ${OUTPUT}
1010            }
1011        ""
1012    end
1013
1014    case mediump_ivec3_z_z
1015        version 300 es
1016        values
1017        {
1018            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1019            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1020            output int out0 = [ -2 | 6 | -8 ];
1021        }
1022
1023        both ""
1024            #version 300 es
1025            precision mediump float;
1026
1027            ${DECLARATIONS}
1028
1029            void main()
1030            {
1031                ${SETUP}
1032                out0 = in0.z + in1.z;
1033                ${OUTPUT}
1034            }
1035        ""
1036    end
1037
1038    case mediump_ivec3_xz_zx
1039        version 300 es
1040        values
1041        {
1042            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1043            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1044            output ivec2 out0 = [ ivec2(-2, -2) | ivec2(4, 4) | ivec2(-5, -5) ];
1045        }
1046
1047        both ""
1048            #version 300 es
1049            precision mediump float;
1050
1051            ${DECLARATIONS}
1052
1053            void main()
1054            {
1055                ${SETUP}
1056                out0 = in0.xz + in1.zx;
1057                ${OUTPUT}
1058            }
1059        ""
1060    end
1061
1062    case mediump_ivec3_zz_zz
1063        version 300 es
1064        values
1065        {
1066            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1067            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1068            output ivec2 out0 = [ ivec2(-2, -2) | ivec2(6, 6) | ivec2(-8, -8) ];
1069        }
1070
1071        both ""
1072            #version 300 es
1073            precision mediump float;
1074
1075            ${DECLARATIONS}
1076
1077            void main()
1078            {
1079                ${SETUP}
1080                out0 = in0.zz + in1.zz;
1081                ${OUTPUT}
1082            }
1083        ""
1084    end
1085
1086    case mediump_ivec3_xyz_yzx
1087        version 300 es
1088        values
1089        {
1090            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1091            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1092            output ivec3 out0 = [ ivec3(0, 0, -2) | ivec3(3, 5, 4) | ivec3(-3, -6, -5) ];
1093        }
1094
1095        both ""
1096            #version 300 es
1097            precision mediump float;
1098
1099            ${DECLARATIONS}
1100
1101            void main()
1102            {
1103                ${SETUP}
1104                out0 = in0.xyz + in1.yzx;
1105                ${OUTPUT}
1106            }
1107        ""
1108    end
1109
1110    case mediump_ivec3_zyx_yxz
1111        version 300 es
1112        values
1113        {
1114            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1115            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1116            output ivec3 out0 = [ ivec3(0, 0, -2) | ivec3(5, 3, 4) | ivec3(-6, -3, -5) ];
1117        }
1118
1119        both ""
1120            #version 300 es
1121            precision mediump float;
1122
1123            ${DECLARATIONS}
1124
1125            void main()
1126            {
1127                ${SETUP}
1128                out0 = in0.zyx + in1.yxz;
1129                ${OUTPUT}
1130            }
1131        ""
1132    end
1133
1134    case mediump_ivec3_xxx_xxx
1135        version 300 es
1136        values
1137        {
1138            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1139            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1140            output ivec3 out0 = [ ivec3(-2, -2, -2) | ivec3(2, 2, 2) | ivec3(-2, -2, -2) ];
1141        }
1142
1143        both ""
1144            #version 300 es
1145            precision mediump float;
1146
1147            ${DECLARATIONS}
1148
1149            void main()
1150            {
1151                ${SETUP}
1152                out0 = in0.xxx + in1.xxx;
1153                ${OUTPUT}
1154            }
1155        ""
1156    end
1157
1158    case mediump_ivec3_zzz_zzz
1159        version 300 es
1160        values
1161        {
1162            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1163            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1164            output ivec3 out0 = [ ivec3(-2, -2, -2) | ivec3(6, 6, 6) | ivec3(-8, -8, -8) ];
1165        }
1166
1167        both ""
1168            #version 300 es
1169            precision mediump float;
1170
1171            ${DECLARATIONS}
1172
1173            void main()
1174            {
1175                ${SETUP}
1176                out0 = in0.zzz + in1.zzz;
1177                ${OUTPUT}
1178            }
1179        ""
1180    end
1181
1182    case mediump_ivec3_zzy_zyz
1183        version 300 es
1184        values
1185        {
1186            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1187            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1188            output ivec3 out0 = [ ivec3(-2, 0, 0) | ivec3(6, 5, 5) | ivec3(-8, -6, -6) ];
1189        }
1190
1191        both ""
1192            #version 300 es
1193            precision mediump float;
1194
1195            ${DECLARATIONS}
1196
1197            void main()
1198            {
1199                ${SETUP}
1200                out0 = in0.zzy + in1.zyz;
1201                ${OUTPUT}
1202            }
1203        ""
1204    end
1205
1206    case mediump_ivec3_yxy_xyy
1207        version 300 es
1208        values
1209        {
1210            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1211            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1212            output ivec3 out0 = [ ivec3(0, 0, 2) | ivec3(3, 3, 4) | ivec3(-3, -3, -4) ];
1213        }
1214
1215        both ""
1216            #version 300 es
1217            precision mediump float;
1218
1219            ${DECLARATIONS}
1220
1221            void main()
1222            {
1223                ${SETUP}
1224                out0 = in0.yxy + in1.xyy;
1225                ${OUTPUT}
1226            }
1227        ""
1228    end
1229
1230    case mediump_ivec3_xzx_zxx
1231        version 300 es
1232        values
1233        {
1234            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1235            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1236            output ivec3 out0 = [ ivec3(-2, -2, -2) | ivec3(4, 4, 2) | ivec3(-5, -5, -2) ];
1237        }
1238
1239        both ""
1240            #version 300 es
1241            precision mediump float;
1242
1243            ${DECLARATIONS}
1244
1245            void main()
1246            {
1247                ${SETUP}
1248                out0 = in0.xzx + in1.zxx;
1249                ${OUTPUT}
1250            }
1251        ""
1252    end
1253
1254    case mediump_ivec3_xyyx_yyxx
1255        version 300 es
1256        values
1257        {
1258            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1259            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1260            output ivec4 out0 = [ ivec4(0, 2, 0, -2) | ivec4(3, 4, 3, 2) | ivec4(-3, -4, -3, -2) ];
1261        }
1262
1263        both ""
1264            #version 300 es
1265            precision mediump float;
1266
1267            ${DECLARATIONS}
1268
1269            void main()
1270            {
1271                ${SETUP}
1272                out0 = in0.xyyx + in1.yyxx;
1273                ${OUTPUT}
1274            }
1275        ""
1276    end
1277
1278    case mediump_ivec3_zxyz_xyzz
1279        version 300 es
1280        values
1281        {
1282            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1283            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
1284            output ivec4 out0 = [ ivec4(-2, 0, 0, -2) | ivec4(4, 3, 5, 6) | ivec4(-5, -3, -6, -8) ];
1285        }
1286
1287        both ""
1288            #version 300 es
1289            precision mediump float;
1290
1291            ${DECLARATIONS}
1292
1293            void main()
1294            {
1295                ${SETUP}
1296                out0 = in0.zxyz + in1.xyzz;
1297                ${OUTPUT}
1298            }
1299        ""
1300    end
1301
1302    case mediump_ivec4_x_x
1303        version 300 es
1304        values
1305        {
1306            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1307            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1308            output int out0 = [ -2 | 2 | -2 ];
1309        }
1310
1311        both ""
1312            #version 300 es
1313            precision mediump float;
1314
1315            ${DECLARATIONS}
1316
1317            void main()
1318            {
1319                ${SETUP}
1320                out0 = in0.x + in1.x;
1321                ${OUTPUT}
1322            }
1323        ""
1324    end
1325
1326    case mediump_ivec4_w_w
1327        version 300 es
1328        values
1329        {
1330            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1331            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1332            output int out0 = [ 2 | 8 | -18 ];
1333        }
1334
1335        both ""
1336            #version 300 es
1337            precision mediump float;
1338
1339            ${DECLARATIONS}
1340
1341            void main()
1342            {
1343                ${SETUP}
1344                out0 = in0.w + in1.w;
1345                ${OUTPUT}
1346            }
1347        ""
1348    end
1349
1350    case mediump_ivec4_wx_xw
1351        version 300 es
1352        values
1353        {
1354            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1355            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1356            output ivec2 out0 = [ ivec2(0, 0) | ivec2(5, 5) | ivec2(-10, -10) ];
1357        }
1358
1359        both ""
1360            #version 300 es
1361            precision mediump float;
1362
1363            ${DECLARATIONS}
1364
1365            void main()
1366            {
1367                ${SETUP}
1368                out0 = in0.wx + in1.xw;
1369                ${OUTPUT}
1370            }
1371        ""
1372    end
1373
1374    case mediump_ivec4_wz_zw
1375        version 300 es
1376        values
1377        {
1378            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1379            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1380            output ivec2 out0 = [ ivec2(0, 0) | ivec2(7, 7) | ivec2(-13, -13) ];
1381        }
1382
1383        both ""
1384            #version 300 es
1385            precision mediump float;
1386
1387            ${DECLARATIONS}
1388
1389            void main()
1390            {
1391                ${SETUP}
1392                out0 = in0.wz + in1.zw;
1393                ${OUTPUT}
1394            }
1395        ""
1396    end
1397
1398    case mediump_ivec4_www_www
1399        version 300 es
1400        values
1401        {
1402            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1403            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1404            output ivec3 out0 = [ ivec3(2, 2, 2) | ivec3(8, 8, 8) | ivec3(-18, -18, -18) ];
1405        }
1406
1407        both ""
1408            #version 300 es
1409            precision mediump float;
1410
1411            ${DECLARATIONS}
1412
1413            void main()
1414            {
1415                ${SETUP}
1416                out0 = in0.www + in1.www;
1417                ${OUTPUT}
1418            }
1419        ""
1420    end
1421
1422    case mediump_ivec4_yyw_ywy
1423        version 300 es
1424        values
1425        {
1426            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1427            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1428            output ivec3 out0 = [ ivec3(2, 2, 2) | ivec3(4, 6, 6) | ivec3(-4, -11, -11) ];
1429        }
1430
1431        both ""
1432            #version 300 es
1433            precision mediump float;
1434
1435            ${DECLARATIONS}
1436
1437            void main()
1438            {
1439                ${SETUP}
1440                out0 = in0.yyw + in1.ywy;
1441                ${OUTPUT}
1442            }
1443        ""
1444    end
1445
1446    case mediump_ivec4_wzy_zyw
1447        version 300 es
1448        values
1449        {
1450            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1451            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1452            output ivec3 out0 = [ ivec3(0, 0, 2) | ivec3(7, 5, 6) | ivec3(-13, -6, -11) ];
1453        }
1454
1455        both ""
1456            #version 300 es
1457            precision mediump float;
1458
1459            ${DECLARATIONS}
1460
1461            void main()
1462            {
1463                ${SETUP}
1464                out0 = in0.wzy + in1.zyw;
1465                ${OUTPUT}
1466            }
1467        ""
1468    end
1469
1470    case mediump_ivec4_xyzw_yzwx
1471        version 300 es
1472        values
1473        {
1474            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1475            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1476            output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(3, 5, 7, 5) | ivec4(-3, -6, -13, -10) ];
1477        }
1478
1479        both ""
1480            #version 300 es
1481            precision mediump float;
1482
1483            ${DECLARATIONS}
1484
1485            void main()
1486            {
1487                ${SETUP}
1488                out0 = in0.xyzw + in1.yzwx;
1489                ${OUTPUT}
1490            }
1491        ""
1492    end
1493
1494    case mediump_ivec4_wzyx_zyxw
1495        version 300 es
1496        values
1497        {
1498            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1499            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1500            output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(7, 5, 3, 5) | ivec4(-13, -6, -3, -10) ];
1501        }
1502
1503        both ""
1504            #version 300 es
1505            precision mediump float;
1506
1507            ${DECLARATIONS}
1508
1509            void main()
1510            {
1511                ${SETUP}
1512                out0 = in0.wzyx + in1.zyxw;
1513                ${OUTPUT}
1514            }
1515        ""
1516    end
1517
1518    case mediump_ivec4_xyxy_yxyx
1519        version 300 es
1520        values
1521        {
1522            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1523            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1524            output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(3, 3, 3, 3) | ivec4(-3, -3, -3, -3) ];
1525        }
1526
1527        both ""
1528            #version 300 es
1529            precision mediump float;
1530
1531            ${DECLARATIONS}
1532
1533            void main()
1534            {
1535                ${SETUP}
1536                out0 = in0.xyxy + in1.yxyx;
1537                ${OUTPUT}
1538            }
1539        ""
1540    end
1541
1542    case mediump_ivec4_yzzy_zzyy
1543        version 300 es
1544        values
1545        {
1546            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1547            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1548            output ivec4 out0 = [ ivec4(0, -2, 0, 2) | ivec4(5, 6, 5, 4) | ivec4(-6, -8, -6, -4) ];
1549        }
1550
1551        both ""
1552            #version 300 es
1553            precision mediump float;
1554
1555            ${DECLARATIONS}
1556
1557            void main()
1558            {
1559                ${SETUP}
1560                out0 = in0.yzzy + in1.zzyy;
1561                ${OUTPUT}
1562            }
1563        ""
1564    end
1565
1566    case mediump_ivec4_wxww_xwww
1567        version 300 es
1568        values
1569        {
1570            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1571            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1572            output ivec4 out0 = [ ivec4(0, 0, 2, 2) | ivec4(5, 5, 8, 8) | ivec4(-10, -10, -18, -18) ];
1573        }
1574
1575        both ""
1576            #version 300 es
1577            precision mediump float;
1578
1579            ${DECLARATIONS}
1580
1581            void main()
1582            {
1583                ${SETUP}
1584                out0 = in0.wxww + in1.xwww;
1585                ${OUTPUT}
1586            }
1587        ""
1588    end
1589
1590    case mediump_ivec4_xyxx_yxxx
1591        version 300 es
1592        values
1593        {
1594            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1595            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1596            output ivec4 out0 = [ ivec4(0, 0, -2, -2) | ivec4(3, 3, 2, 2) | ivec4(-3, -3, -2, -2) ];
1597        }
1598
1599        both ""
1600            #version 300 es
1601            precision mediump float;
1602
1603            ${DECLARATIONS}
1604
1605            void main()
1606            {
1607                ${SETUP}
1608                out0 = in0.xyxx + in1.yxxx;
1609                ${OUTPUT}
1610            }
1611        ""
1612    end
1613
1614    case mediump_ivec4_zzzz_zzzz
1615        version 300 es
1616        values
1617        {
1618            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1619            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
1620            output ivec4 out0 = [ ivec4(-2, -2, -2, -2) | ivec4(6, 6, 6, 6) | ivec4(-8, -8, -8, -8) ];
1621        }
1622
1623        both ""
1624            #version 300 es
1625            precision mediump float;
1626
1627            ${DECLARATIONS}
1628
1629            void main()
1630            {
1631                ${SETUP}
1632                out0 = in0.zzzz + in1.zzzz;
1633                ${OUTPUT}
1634            }
1635        ""
1636    end
1637
1638
1639end # vector_add
1640group vector_subtract "Vector swizzle math operations"
1641
1642    case mediump_vec2_x_x
1643        version 300 es
1644        values
1645        {
1646            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1647            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1648            output float out0 = [ 0.0 | 0.0 | 0.0 | 0.0 | 0.0 ];
1649        }
1650
1651        both ""
1652            #version 300 es
1653            precision mediump float;
1654
1655            ${DECLARATIONS}
1656
1657            void main()
1658            {
1659                ${SETUP}
1660                out0 = in0.x - in1.x;
1661                ${OUTPUT}
1662            }
1663        ""
1664    end
1665
1666    case mediump_vec2_xx_xx
1667        version 300 es
1668        values
1669        {
1670            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1671            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1672            output vec2 out0 = [ vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) ];
1673        }
1674
1675        both ""
1676            #version 300 es
1677            precision mediump float;
1678
1679            ${DECLARATIONS}
1680
1681            void main()
1682            {
1683                ${SETUP}
1684                out0 = in0.xx - in1.xx;
1685                ${OUTPUT}
1686            }
1687        ""
1688    end
1689
1690    case mediump_vec2_xy_yx
1691        version 300 es
1692        values
1693        {
1694            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1695            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1696            output vec2 out0 = [ vec2(-0.4, 0.4) | vec2(-0.25, 0.25) | vec2(1.75, -1.75) | vec2(-96.0, 96.0) | vec2(-0.717741935484, 0.717741935484) ];
1697        }
1698
1699        both ""
1700            #version 300 es
1701            precision mediump float;
1702
1703            ${DECLARATIONS}
1704
1705            void main()
1706            {
1707                ${SETUP}
1708                out0 = in0.xy - in1.yx;
1709                ${OUTPUT}
1710            }
1711        ""
1712    end
1713
1714    case mediump_vec2_yx_xy
1715        version 300 es
1716        values
1717        {
1718            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1719            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1720            output vec2 out0 = [ vec2(0.4, -0.4) | vec2(0.25, -0.25) | vec2(-1.75, 1.75) | vec2(96.0, -96.0) | vec2(0.717741935484, -0.717741935484) ];
1721        }
1722
1723        both ""
1724            #version 300 es
1725            precision mediump float;
1726
1727            ${DECLARATIONS}
1728
1729            void main()
1730            {
1731                ${SETUP}
1732                out0 = in0.yx - in1.xy;
1733                ${OUTPUT}
1734            }
1735        ""
1736    end
1737
1738    case mediump_vec2_yxy_xyy
1739        version 300 es
1740        values
1741        {
1742            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1743            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1744            output vec3 out0 = [ vec3(0.4, -0.4, 0.0) | vec3(0.25, -0.25, 0.0) | vec3(-1.75, 1.75, 0.0) | vec3(96.0, -96.0, 0.0) | vec3(0.717741935484, -0.717741935484, 0.0) ];
1745        }
1746
1747        both ""
1748            #version 300 es
1749            precision mediump float;
1750
1751            ${DECLARATIONS}
1752
1753            void main()
1754            {
1755                ${SETUP}
1756                out0 = in0.yxy - in1.xyy;
1757                ${OUTPUT}
1758            }
1759        ""
1760    end
1761
1762    case mediump_vec2_xyxx_yxxx
1763        version 300 es
1764        values
1765        {
1766            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1767            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1768            output vec4 out0 = [ vec4(-0.4, 0.4, 0.0, 0.0) | vec4(-0.25, 0.25, 0.0, 0.0) | vec4(1.75, -1.75, 0.0, 0.0) | vec4(-96.0, 96.0, 0.0, 0.0) | vec4(-0.717741935484, 0.717741935484, 0.0, 0.0) ];
1769        }
1770
1771        both ""
1772            #version 300 es
1773            precision mediump float;
1774
1775            ${DECLARATIONS}
1776
1777            void main()
1778            {
1779                ${SETUP}
1780                out0 = in0.xyxx - in1.yxxx;
1781                ${OUTPUT}
1782            }
1783        ""
1784    end
1785
1786    case mediump_vec2_yxyx_xyxy
1787        version 300 es
1788        values
1789        {
1790            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1791            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
1792            output vec4 out0 = [ vec4(0.4, -0.4, 0.4, -0.4) | vec4(0.25, -0.25, 0.25, -0.25) | vec4(-1.75, 1.75, -1.75, 1.75) | vec4(96.0, -96.0, 96.0, -96.0) | vec4(0.717741935484, -0.717741935484, 0.717741935484, -0.717741935484) ];
1793        }
1794
1795        both ""
1796            #version 300 es
1797            precision mediump float;
1798
1799            ${DECLARATIONS}
1800
1801            void main()
1802            {
1803                ${SETUP}
1804                out0 = in0.yxyx - in1.xyxy;
1805                ${OUTPUT}
1806            }
1807        ""
1808    end
1809
1810    case mediump_vec3_x_x
1811        version 300 es
1812        values
1813        {
1814            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1815            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1816            output float out0 = [ 0.0 | 0.0 | 0.0 | 0.0 | 0.0 ];
1817        }
1818
1819        both ""
1820            #version 300 es
1821            precision mediump float;
1822
1823            ${DECLARATIONS}
1824
1825            void main()
1826            {
1827                ${SETUP}
1828                out0 = in0.x - in1.x;
1829                ${OUTPUT}
1830            }
1831        ""
1832    end
1833
1834    case mediump_vec3_z_z
1835        version 300 es
1836        values
1837        {
1838            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1839            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1840            output float out0 = [ 0.0 | 0.0 | 0.0 | 0.0 | 0.0 ];
1841        }
1842
1843        both ""
1844            #version 300 es
1845            precision mediump float;
1846
1847            ${DECLARATIONS}
1848
1849            void main()
1850            {
1851                ${SETUP}
1852                out0 = in0.z - in1.z;
1853                ${OUTPUT}
1854            }
1855        ""
1856    end
1857
1858    case mediump_vec3_xz_zx
1859        version 300 es
1860        values
1861        {
1862            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1863            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1864            output vec2 out0 = [ vec2(-0.65, 0.65) | vec2(-0.125, 0.125) | vec2(4.375, -4.375) | vec2(19.0, -19.0) | vec2(-0.802631578947, 0.802631578947) ];
1865        }
1866
1867        both ""
1868            #version 300 es
1869            precision mediump float;
1870
1871            ${DECLARATIONS}
1872
1873            void main()
1874            {
1875                ${SETUP}
1876                out0 = in0.xz - in1.zx;
1877                ${OUTPUT}
1878            }
1879        ""
1880    end
1881
1882    case mediump_vec3_zz_zz
1883        version 300 es
1884        values
1885        {
1886            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1887            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1888            output vec2 out0 = [ vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 0.0) ];
1889        }
1890
1891        both ""
1892            #version 300 es
1893            precision mediump float;
1894
1895            ${DECLARATIONS}
1896
1897            void main()
1898            {
1899                ${SETUP}
1900                out0 = in0.zz - in1.zz;
1901                ${OUTPUT}
1902            }
1903        ""
1904    end
1905
1906    case mediump_vec3_xyz_yzx
1907        version 300 es
1908        values
1909        {
1910            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1911            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1912            output vec3 out0 = [ vec3(-0.4, -0.25, 0.65) | vec3(-0.25, 0.125, 0.125) | vec3(1.75, 2.625, -4.375) | vec3(-96.0, 115.0, -19.0) | vec3(-0.717741935484, -0.0848896434635, 0.802631578947) ];
1913        }
1914
1915        both ""
1916            #version 300 es
1917            precision mediump float;
1918
1919            ${DECLARATIONS}
1920
1921            void main()
1922            {
1923                ${SETUP}
1924                out0 = in0.xyz - in1.yzx;
1925                ${OUTPUT}
1926            }
1927        ""
1928    end
1929
1930    case mediump_vec3_zyx_yxz
1931        version 300 es
1932        values
1933        {
1934            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1935            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1936            output vec3 out0 = [ vec3(0.25, 0.4, -0.65) | vec3(-0.125, 0.25, -0.125) | vec3(-2.625, -1.75, 4.375) | vec3(-115.0, 96.0, 19.0) | vec3(0.0848896434635, 0.717741935484, -0.802631578947) ];
1937        }
1938
1939        both ""
1940            #version 300 es
1941            precision mediump float;
1942
1943            ${DECLARATIONS}
1944
1945            void main()
1946            {
1947                ${SETUP}
1948                out0 = in0.zyx - in1.yxz;
1949                ${OUTPUT}
1950            }
1951        ""
1952    end
1953
1954    case mediump_vec3_xxx_xxx
1955        version 300 es
1956        values
1957        {
1958            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1959            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1960            output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) ];
1961        }
1962
1963        both ""
1964            #version 300 es
1965            precision mediump float;
1966
1967            ${DECLARATIONS}
1968
1969            void main()
1970            {
1971                ${SETUP}
1972                out0 = in0.xxx - in1.xxx;
1973                ${OUTPUT}
1974            }
1975        ""
1976    end
1977
1978    case mediump_vec3_zzz_zzz
1979        version 300 es
1980        values
1981        {
1982            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1983            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
1984            output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) ];
1985        }
1986
1987        both ""
1988            #version 300 es
1989            precision mediump float;
1990
1991            ${DECLARATIONS}
1992
1993            void main()
1994            {
1995                ${SETUP}
1996                out0 = in0.zzz - in1.zzz;
1997                ${OUTPUT}
1998            }
1999        ""
2000    end
2001
2002    case mediump_vec3_zzy_zyz
2003        version 300 es
2004        values
2005        {
2006            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2007            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2008            output vec3 out0 = [ vec3(0.0, 0.25, -0.25) | vec3(0.0, -0.125, 0.125) | vec3(0.0, -2.625, 2.625) | vec3(0.0, -115.0, 115.0) | vec3(0.0, 0.0848896434635, -0.0848896434635) ];
2009        }
2010
2011        both ""
2012            #version 300 es
2013            precision mediump float;
2014
2015            ${DECLARATIONS}
2016
2017            void main()
2018            {
2019                ${SETUP}
2020                out0 = in0.zzy - in1.zyz;
2021                ${OUTPUT}
2022            }
2023        ""
2024    end
2025
2026    case mediump_vec3_yxy_xyy
2027        version 300 es
2028        values
2029        {
2030            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2031            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2032            output vec3 out0 = [ vec3(0.4, -0.4, 0.0) | vec3(0.25, -0.25, 0.0) | vec3(-1.75, 1.75, 0.0) | vec3(96.0, -96.0, 0.0) | vec3(0.717741935484, -0.717741935484, 0.0) ];
2033        }
2034
2035        both ""
2036            #version 300 es
2037            precision mediump float;
2038
2039            ${DECLARATIONS}
2040
2041            void main()
2042            {
2043                ${SETUP}
2044                out0 = in0.yxy - in1.xyy;
2045                ${OUTPUT}
2046            }
2047        ""
2048    end
2049
2050    case mediump_vec3_xzx_zxx
2051        version 300 es
2052        values
2053        {
2054            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2055            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2056            output vec3 out0 = [ vec3(-0.65, 0.65, 0.0) | vec3(-0.125, 0.125, 0.0) | vec3(4.375, -4.375, 0.0) | vec3(19.0, -19.0, 0.0) | vec3(-0.802631578947, 0.802631578947, 0.0) ];
2057        }
2058
2059        both ""
2060            #version 300 es
2061            precision mediump float;
2062
2063            ${DECLARATIONS}
2064
2065            void main()
2066            {
2067                ${SETUP}
2068                out0 = in0.xzx - in1.zxx;
2069                ${OUTPUT}
2070            }
2071        ""
2072    end
2073
2074    case mediump_vec3_xyyx_yyxx
2075        version 300 es
2076        values
2077        {
2078            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2079            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2080            output vec4 out0 = [ vec4(-0.4, 0.0, 0.4, 0.0) | vec4(-0.25, 0.0, 0.25, 0.0) | vec4(1.75, 0.0, -1.75, 0.0) | vec4(-96.0, 0.0, 96.0, 0.0) | vec4(-0.717741935484, 0.0, 0.717741935484, 0.0) ];
2081        }
2082
2083        both ""
2084            #version 300 es
2085            precision mediump float;
2086
2087            ${DECLARATIONS}
2088
2089            void main()
2090            {
2091                ${SETUP}
2092                out0 = in0.xyyx - in1.yyxx;
2093                ${OUTPUT}
2094            }
2095        ""
2096    end
2097
2098    case mediump_vec3_zxyz_xyzz
2099        version 300 es
2100        values
2101        {
2102            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2103            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
2104            output vec4 out0 = [ vec4(0.65, -0.4, -0.25, 0.0) | vec4(0.125, -0.25, 0.125, 0.0) | vec4(-4.375, 1.75, 2.625, 0.0) | vec4(-19.0, -96.0, 115.0, 0.0) | vec4(0.802631578947, -0.717741935484, -0.0848896434635, 0.0) ];
2105        }
2106
2107        both ""
2108            #version 300 es
2109            precision mediump float;
2110
2111            ${DECLARATIONS}
2112
2113            void main()
2114            {
2115                ${SETUP}
2116                out0 = in0.zxyz - in1.xyzz;
2117                ${OUTPUT}
2118            }
2119        ""
2120    end
2121
2122    case mediump_vec4_x_x
2123        version 300 es
2124        values
2125        {
2126            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2127            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2128            output float out0 = [ 0.0 | 0.0 | 0.0 | 0.0 | 0.0 ];
2129        }
2130
2131        both ""
2132            #version 300 es
2133            precision mediump float;
2134
2135            ${DECLARATIONS}
2136
2137            void main()
2138            {
2139                ${SETUP}
2140                out0 = in0.x - in1.x;
2141                ${OUTPUT}
2142            }
2143        ""
2144    end
2145
2146    case mediump_vec4_w_w
2147        version 300 es
2148        values
2149        {
2150            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2151            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2152            output float out0 = [ 0.0 | 0.0 | 0.0 | 0.0 | 0.0 ];
2153        }
2154
2155        both ""
2156            #version 300 es
2157            precision mediump float;
2158
2159            ${DECLARATIONS}
2160
2161            void main()
2162            {
2163                ${SETUP}
2164                out0 = in0.w - in1.w;
2165                ${OUTPUT}
2166            }
2167        ""
2168    end
2169
2170    case mediump_vec4_wx_xw
2171        version 300 es
2172        values
2173        {
2174            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2175            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2176            output vec2 out0 = [ vec2(0.725, -0.725) | vec2(0.75, -0.75) | vec2(9.5, -9.5) | vec2(56.0, -56.0) | vec2(1.0, -1.0) ];
2177        }
2178
2179        both ""
2180            #version 300 es
2181            precision mediump float;
2182
2183            ${DECLARATIONS}
2184
2185            void main()
2186            {
2187                ${SETUP}
2188                out0 = in0.wx - in1.xw;
2189                ${OUTPUT}
2190            }
2191        ""
2192    end
2193
2194    case mediump_vec4_wz_zw
2195        version 300 es
2196        values
2197        {
2198            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2199            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2200            output vec2 out0 = [ vec2(0.075, -0.075) | vec2(0.625, -0.625) | vec2(13.875, -13.875) | vec2(75.0, -75.0) | vec2(0.197368421053, -0.197368421053) ];
2201        }
2202
2203        both ""
2204            #version 300 es
2205            precision mediump float;
2206
2207            ${DECLARATIONS}
2208
2209            void main()
2210            {
2211                ${SETUP}
2212                out0 = in0.wz - in1.zw;
2213                ${OUTPUT}
2214            }
2215        ""
2216    end
2217
2218    case mediump_vec4_www_www
2219        version 300 es
2220        values
2221        {
2222            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2223            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2224            output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) ];
2225        }
2226
2227        both ""
2228            #version 300 es
2229            precision mediump float;
2230
2231            ${DECLARATIONS}
2232
2233            void main()
2234            {
2235                ${SETUP}
2236                out0 = in0.www - in1.www;
2237                ${OUTPUT}
2238            }
2239        ""
2240    end
2241
2242    case mediump_vec4_yyw_ywy
2243        version 300 es
2244        values
2245        {
2246            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2247            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2248            output vec3 out0 = [ vec3(0.0, -0.325, 0.325) | vec3(0.0, -0.5, 0.5) | vec3(0.0, -11.25, 11.25) | vec3(0.0, 40.0, -40.0) | vec3(0.0, -0.282258064516, 0.282258064516) ];
2249        }
2250
2251        both ""
2252            #version 300 es
2253            precision mediump float;
2254
2255            ${DECLARATIONS}
2256
2257            void main()
2258            {
2259                ${SETUP}
2260                out0 = in0.yyw - in1.ywy;
2261                ${OUTPUT}
2262            }
2263        ""
2264    end
2265
2266    case mediump_vec4_wzy_zyw
2267        version 300 es
2268        values
2269        {
2270            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2271            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2272            output vec3 out0 = [ vec3(0.075, 0.25, -0.325) | vec3(0.625, -0.125, -0.5) | vec3(13.875, -2.625, -11.25) | vec3(75.0, -115.0, 40.0) | vec3(0.197368421053, 0.0848896434635, -0.282258064516) ];
2273        }
2274
2275        both ""
2276            #version 300 es
2277            precision mediump float;
2278
2279            ${DECLARATIONS}
2280
2281            void main()
2282            {
2283                ${SETUP}
2284                out0 = in0.wzy - in1.zyw;
2285                ${OUTPUT}
2286            }
2287        ""
2288    end
2289
2290    case mediump_vec4_xyzw_yzwx
2291        version 300 es
2292        values
2293        {
2294            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2295            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2296            output vec4 out0 = [ vec4(-0.4, -0.25, -0.075, 0.725) | vec4(-0.25, 0.125, -0.625, 0.75) | vec4(1.75, 2.625, -13.875, 9.5) | vec4(-96.0, 115.0, -75.0, 56.0) | vec4(-0.717741935484, -0.0848896434635, -0.197368421053, 1.0) ];
2297        }
2298
2299        both ""
2300            #version 300 es
2301            precision mediump float;
2302
2303            ${DECLARATIONS}
2304
2305            void main()
2306            {
2307                ${SETUP}
2308                out0 = in0.xyzw - in1.yzwx;
2309                ${OUTPUT}
2310            }
2311        ""
2312    end
2313
2314    case mediump_vec4_wzyx_zyxw
2315        version 300 es
2316        values
2317        {
2318            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2319            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2320            output vec4 out0 = [ vec4(0.075, 0.25, 0.4, -0.725) | vec4(0.625, -0.125, 0.25, -0.75) | vec4(13.875, -2.625, -1.75, -9.5) | vec4(75.0, -115.0, 96.0, -56.0) | vec4(0.197368421053, 0.0848896434635, 0.717741935484, -1.0) ];
2321        }
2322
2323        both ""
2324            #version 300 es
2325            precision mediump float;
2326
2327            ${DECLARATIONS}
2328
2329            void main()
2330            {
2331                ${SETUP}
2332                out0 = in0.wzyx - in1.zyxw;
2333                ${OUTPUT}
2334            }
2335        ""
2336    end
2337
2338    case mediump_vec4_xyxy_yxyx
2339        version 300 es
2340        values
2341        {
2342            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2343            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2344            output vec4 out0 = [ vec4(-0.4, 0.4, -0.4, 0.4) | vec4(-0.25, 0.25, -0.25, 0.25) | vec4(1.75, -1.75, 1.75, -1.75) | vec4(-96.0, 96.0, -96.0, 96.0) | vec4(-0.717741935484, 0.717741935484, -0.717741935484, 0.717741935484) ];
2345        }
2346
2347        both ""
2348            #version 300 es
2349            precision mediump float;
2350
2351            ${DECLARATIONS}
2352
2353            void main()
2354            {
2355                ${SETUP}
2356                out0 = in0.xyxy - in1.yxyx;
2357                ${OUTPUT}
2358            }
2359        ""
2360    end
2361
2362    case mediump_vec4_yzzy_zzyy
2363        version 300 es
2364        values
2365        {
2366            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2367            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2368            output vec4 out0 = [ vec4(-0.25, 0.0, 0.25, 0.0) | vec4(0.125, 0.0, -0.125, 0.0) | vec4(2.625, 0.0, -2.625, 0.0) | vec4(115.0, 0.0, -115.0, 0.0) | vec4(-0.0848896434635, 0.0, 0.0848896434635, 0.0) ];
2369        }
2370
2371        both ""
2372            #version 300 es
2373            precision mediump float;
2374
2375            ${DECLARATIONS}
2376
2377            void main()
2378            {
2379                ${SETUP}
2380                out0 = in0.yzzy - in1.zzyy;
2381                ${OUTPUT}
2382            }
2383        ""
2384    end
2385
2386    case mediump_vec4_wxww_xwww
2387        version 300 es
2388        values
2389        {
2390            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2391            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2392            output vec4 out0 = [ vec4(0.725, -0.725, 0.0, 0.0) | vec4(0.75, -0.75, 0.0, 0.0) | vec4(9.5, -9.5, 0.0, 0.0) | vec4(56.0, -56.0, 0.0, 0.0) | vec4(1.0, -1.0, 0.0, 0.0) ];
2393        }
2394
2395        both ""
2396            #version 300 es
2397            precision mediump float;
2398
2399            ${DECLARATIONS}
2400
2401            void main()
2402            {
2403                ${SETUP}
2404                out0 = in0.wxww - in1.xwww;
2405                ${OUTPUT}
2406            }
2407        ""
2408    end
2409
2410    case mediump_vec4_xyxx_yxxx
2411        version 300 es
2412        values
2413        {
2414            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2415            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2416            output vec4 out0 = [ vec4(-0.4, 0.4, 0.0, 0.0) | vec4(-0.25, 0.25, 0.0, 0.0) | vec4(1.75, -1.75, 0.0, 0.0) | vec4(-96.0, 96.0, 0.0, 0.0) | vec4(-0.717741935484, 0.717741935484, 0.0, 0.0) ];
2417        }
2418
2419        both ""
2420            #version 300 es
2421            precision mediump float;
2422
2423            ${DECLARATIONS}
2424
2425            void main()
2426            {
2427                ${SETUP}
2428                out0 = in0.xyxx - in1.yxxx;
2429                ${OUTPUT}
2430            }
2431        ""
2432    end
2433
2434    case mediump_vec4_zzzz_zzzz
2435        version 300 es
2436        values
2437        {
2438            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2439            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
2440            output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
2441        }
2442
2443        both ""
2444            #version 300 es
2445            precision mediump float;
2446
2447            ${DECLARATIONS}
2448
2449            void main()
2450            {
2451                ${SETUP}
2452                out0 = in0.zzzz - in1.zzzz;
2453                ${OUTPUT}
2454            }
2455        ""
2456    end
2457
2458    case mediump_ivec2_x_x
2459        version 300 es
2460        values
2461        {
2462            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2463            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2464            output int out0 = [ 0 | 0 | 0 ];
2465        }
2466
2467        both ""
2468            #version 300 es
2469            precision mediump float;
2470
2471            ${DECLARATIONS}
2472
2473            void main()
2474            {
2475                ${SETUP}
2476                out0 = in0.x - in1.x;
2477                ${OUTPUT}
2478            }
2479        ""
2480    end
2481
2482    case mediump_ivec2_xx_xx
2483        version 300 es
2484        values
2485        {
2486            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2487            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2488            output ivec2 out0 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) ];
2489        }
2490
2491        both ""
2492            #version 300 es
2493            precision mediump float;
2494
2495            ${DECLARATIONS}
2496
2497            void main()
2498            {
2499                ${SETUP}
2500                out0 = in0.xx - in1.xx;
2501                ${OUTPUT}
2502            }
2503        ""
2504    end
2505
2506    case mediump_ivec2_xy_yx
2507        version 300 es
2508        values
2509        {
2510            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2511            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2512            output ivec2 out0 = [ ivec2(-2, 2) | ivec2(-1, 1) | ivec2(1, -1) ];
2513        }
2514
2515        both ""
2516            #version 300 es
2517            precision mediump float;
2518
2519            ${DECLARATIONS}
2520
2521            void main()
2522            {
2523                ${SETUP}
2524                out0 = in0.xy - in1.yx;
2525                ${OUTPUT}
2526            }
2527        ""
2528    end
2529
2530    case mediump_ivec2_yx_xy
2531        version 300 es
2532        values
2533        {
2534            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2535            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2536            output ivec2 out0 = [ ivec2(2, -2) | ivec2(1, -1) | ivec2(-1, 1) ];
2537        }
2538
2539        both ""
2540            #version 300 es
2541            precision mediump float;
2542
2543            ${DECLARATIONS}
2544
2545            void main()
2546            {
2547                ${SETUP}
2548                out0 = in0.yx - in1.xy;
2549                ${OUTPUT}
2550            }
2551        ""
2552    end
2553
2554    case mediump_ivec2_yxy_xyy
2555        version 300 es
2556        values
2557        {
2558            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2559            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2560            output ivec3 out0 = [ ivec3(2, -2, 0) | ivec3(1, -1, 0) | ivec3(-1, 1, 0) ];
2561        }
2562
2563        both ""
2564            #version 300 es
2565            precision mediump float;
2566
2567            ${DECLARATIONS}
2568
2569            void main()
2570            {
2571                ${SETUP}
2572                out0 = in0.yxy - in1.xyy;
2573                ${OUTPUT}
2574            }
2575        ""
2576    end
2577
2578    case mediump_ivec2_xyxx_yxxx
2579        version 300 es
2580        values
2581        {
2582            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2583            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2584            output ivec4 out0 = [ ivec4(-2, 2, 0, 0) | ivec4(-1, 1, 0, 0) | ivec4(1, -1, 0, 0) ];
2585        }
2586
2587        both ""
2588            #version 300 es
2589            precision mediump float;
2590
2591            ${DECLARATIONS}
2592
2593            void main()
2594            {
2595                ${SETUP}
2596                out0 = in0.xyxx - in1.yxxx;
2597                ${OUTPUT}
2598            }
2599        ""
2600    end
2601
2602    case mediump_ivec2_yxyx_xyxy
2603        version 300 es
2604        values
2605        {
2606            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2607            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
2608            output ivec4 out0 = [ ivec4(2, -2, 2, -2) | ivec4(1, -1, 1, -1) | ivec4(-1, 1, -1, 1) ];
2609        }
2610
2611        both ""
2612            #version 300 es
2613            precision mediump float;
2614
2615            ${DECLARATIONS}
2616
2617            void main()
2618            {
2619                ${SETUP}
2620                out0 = in0.yxyx - in1.xyxy;
2621                ${OUTPUT}
2622            }
2623        ""
2624    end
2625
2626    case mediump_ivec3_x_x
2627        version 300 es
2628        values
2629        {
2630            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2631            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2632            output int out0 = [ 0 | 0 | 0 ];
2633        }
2634
2635        both ""
2636            #version 300 es
2637            precision mediump float;
2638
2639            ${DECLARATIONS}
2640
2641            void main()
2642            {
2643                ${SETUP}
2644                out0 = in0.x - in1.x;
2645                ${OUTPUT}
2646            }
2647        ""
2648    end
2649
2650    case mediump_ivec3_z_z
2651        version 300 es
2652        values
2653        {
2654            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2655            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2656            output int out0 = [ 0 | 0 | 0 ];
2657        }
2658
2659        both ""
2660            #version 300 es
2661            precision mediump float;
2662
2663            ${DECLARATIONS}
2664
2665            void main()
2666            {
2667                ${SETUP}
2668                out0 = in0.z - in1.z;
2669                ${OUTPUT}
2670            }
2671        ""
2672    end
2673
2674    case mediump_ivec3_xz_zx
2675        version 300 es
2676        values
2677        {
2678            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2679            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2680            output ivec2 out0 = [ ivec2(0, 0) | ivec2(-2, 2) | ivec2(3, -3) ];
2681        }
2682
2683        both ""
2684            #version 300 es
2685            precision mediump float;
2686
2687            ${DECLARATIONS}
2688
2689            void main()
2690            {
2691                ${SETUP}
2692                out0 = in0.xz - in1.zx;
2693                ${OUTPUT}
2694            }
2695        ""
2696    end
2697
2698    case mediump_ivec3_zz_zz
2699        version 300 es
2700        values
2701        {
2702            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2703            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2704            output ivec2 out0 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) ];
2705        }
2706
2707        both ""
2708            #version 300 es
2709            precision mediump float;
2710
2711            ${DECLARATIONS}
2712
2713            void main()
2714            {
2715                ${SETUP}
2716                out0 = in0.zz - in1.zz;
2717                ${OUTPUT}
2718            }
2719        ""
2720    end
2721
2722    case mediump_ivec3_xyz_yzx
2723        version 300 es
2724        values
2725        {
2726            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2727            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2728            output ivec3 out0 = [ ivec3(-2, 2, 0) | ivec3(-1, -1, 2) | ivec3(1, 2, -3) ];
2729        }
2730
2731        both ""
2732            #version 300 es
2733            precision mediump float;
2734
2735            ${DECLARATIONS}
2736
2737            void main()
2738            {
2739                ${SETUP}
2740                out0 = in0.xyz - in1.yzx;
2741                ${OUTPUT}
2742            }
2743        ""
2744    end
2745
2746    case mediump_ivec3_zyx_yxz
2747        version 300 es
2748        values
2749        {
2750            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2751            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2752            output ivec3 out0 = [ ivec3(-2, 2, 0) | ivec3(1, 1, -2) | ivec3(-2, -1, 3) ];
2753        }
2754
2755        both ""
2756            #version 300 es
2757            precision mediump float;
2758
2759            ${DECLARATIONS}
2760
2761            void main()
2762            {
2763                ${SETUP}
2764                out0 = in0.zyx - in1.yxz;
2765                ${OUTPUT}
2766            }
2767        ""
2768    end
2769
2770    case mediump_ivec3_xxx_xxx
2771        version 300 es
2772        values
2773        {
2774            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2775            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2776            output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ];
2777        }
2778
2779        both ""
2780            #version 300 es
2781            precision mediump float;
2782
2783            ${DECLARATIONS}
2784
2785            void main()
2786            {
2787                ${SETUP}
2788                out0 = in0.xxx - in1.xxx;
2789                ${OUTPUT}
2790            }
2791        ""
2792    end
2793
2794    case mediump_ivec3_zzz_zzz
2795        version 300 es
2796        values
2797        {
2798            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2799            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2800            output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ];
2801        }
2802
2803        both ""
2804            #version 300 es
2805            precision mediump float;
2806
2807            ${DECLARATIONS}
2808
2809            void main()
2810            {
2811                ${SETUP}
2812                out0 = in0.zzz - in1.zzz;
2813                ${OUTPUT}
2814            }
2815        ""
2816    end
2817
2818    case mediump_ivec3_zzy_zyz
2819        version 300 es
2820        values
2821        {
2822            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2823            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2824            output ivec3 out0 = [ ivec3(0, -2, 2) | ivec3(0, 1, -1) | ivec3(0, -2, 2) ];
2825        }
2826
2827        both ""
2828            #version 300 es
2829            precision mediump float;
2830
2831            ${DECLARATIONS}
2832
2833            void main()
2834            {
2835                ${SETUP}
2836                out0 = in0.zzy - in1.zyz;
2837                ${OUTPUT}
2838            }
2839        ""
2840    end
2841
2842    case mediump_ivec3_yxy_xyy
2843        version 300 es
2844        values
2845        {
2846            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2847            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2848            output ivec3 out0 = [ ivec3(2, -2, 0) | ivec3(1, -1, 0) | ivec3(-1, 1, 0) ];
2849        }
2850
2851        both ""
2852            #version 300 es
2853            precision mediump float;
2854
2855            ${DECLARATIONS}
2856
2857            void main()
2858            {
2859                ${SETUP}
2860                out0 = in0.yxy - in1.xyy;
2861                ${OUTPUT}
2862            }
2863        ""
2864    end
2865
2866    case mediump_ivec3_xzx_zxx
2867        version 300 es
2868        values
2869        {
2870            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2871            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2872            output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(-2, 2, 0) | ivec3(3, -3, 0) ];
2873        }
2874
2875        both ""
2876            #version 300 es
2877            precision mediump float;
2878
2879            ${DECLARATIONS}
2880
2881            void main()
2882            {
2883                ${SETUP}
2884                out0 = in0.xzx - in1.zxx;
2885                ${OUTPUT}
2886            }
2887        ""
2888    end
2889
2890    case mediump_ivec3_xyyx_yyxx
2891        version 300 es
2892        values
2893        {
2894            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2895            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2896            output ivec4 out0 = [ ivec4(-2, 0, 2, 0) | ivec4(-1, 0, 1, 0) | ivec4(1, 0, -1, 0) ];
2897        }
2898
2899        both ""
2900            #version 300 es
2901            precision mediump float;
2902
2903            ${DECLARATIONS}
2904
2905            void main()
2906            {
2907                ${SETUP}
2908                out0 = in0.xyyx - in1.yyxx;
2909                ${OUTPUT}
2910            }
2911        ""
2912    end
2913
2914    case mediump_ivec3_zxyz_xyzz
2915        version 300 es
2916        values
2917        {
2918            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2919            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
2920            output ivec4 out0 = [ ivec4(0, -2, 2, 0) | ivec4(2, -1, -1, 0) | ivec4(-3, 1, 2, 0) ];
2921        }
2922
2923        both ""
2924            #version 300 es
2925            precision mediump float;
2926
2927            ${DECLARATIONS}
2928
2929            void main()
2930            {
2931                ${SETUP}
2932                out0 = in0.zxyz - in1.xyzz;
2933                ${OUTPUT}
2934            }
2935        ""
2936    end
2937
2938    case mediump_ivec4_x_x
2939        version 300 es
2940        values
2941        {
2942            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2943            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2944            output int out0 = [ 0 | 0 | 0 ];
2945        }
2946
2947        both ""
2948            #version 300 es
2949            precision mediump float;
2950
2951            ${DECLARATIONS}
2952
2953            void main()
2954            {
2955                ${SETUP}
2956                out0 = in0.x - in1.x;
2957                ${OUTPUT}
2958            }
2959        ""
2960    end
2961
2962    case mediump_ivec4_w_w
2963        version 300 es
2964        values
2965        {
2966            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2967            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2968            output int out0 = [ 0 | 0 | 0 ];
2969        }
2970
2971        both ""
2972            #version 300 es
2973            precision mediump float;
2974
2975            ${DECLARATIONS}
2976
2977            void main()
2978            {
2979                ${SETUP}
2980                out0 = in0.w - in1.w;
2981                ${OUTPUT}
2982            }
2983        ""
2984    end
2985
2986    case mediump_ivec4_wx_xw
2987        version 300 es
2988        values
2989        {
2990            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2991            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
2992            output ivec2 out0 = [ ivec2(2, -2) | ivec2(3, -3) | ivec2(-8, 8) ];
2993        }
2994
2995        both ""
2996            #version 300 es
2997            precision mediump float;
2998
2999            ${DECLARATIONS}
3000
3001            void main()
3002            {
3003                ${SETUP}
3004                out0 = in0.wx - in1.xw;
3005                ${OUTPUT}
3006            }
3007        ""
3008    end
3009
3010    case mediump_ivec4_wz_zw
3011        version 300 es
3012        values
3013        {
3014            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3015            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3016            output ivec2 out0 = [ ivec2(2, -2) | ivec2(1, -1) | ivec2(-5, 5) ];
3017        }
3018
3019        both ""
3020            #version 300 es
3021            precision mediump float;
3022
3023            ${DECLARATIONS}
3024
3025            void main()
3026            {
3027                ${SETUP}
3028                out0 = in0.wz - in1.zw;
3029                ${OUTPUT}
3030            }
3031        ""
3032    end
3033
3034    case mediump_ivec4_www_www
3035        version 300 es
3036        values
3037        {
3038            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3039            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3040            output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ];
3041        }
3042
3043        both ""
3044            #version 300 es
3045            precision mediump float;
3046
3047            ${DECLARATIONS}
3048
3049            void main()
3050            {
3051                ${SETUP}
3052                out0 = in0.www - in1.www;
3053                ${OUTPUT}
3054            }
3055        ""
3056    end
3057
3058    case mediump_ivec4_yyw_ywy
3059        version 300 es
3060        values
3061        {
3062            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3063            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3064            output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(0, -2, 2) | ivec3(0, 7, -7) ];
3065        }
3066
3067        both ""
3068            #version 300 es
3069            precision mediump float;
3070
3071            ${DECLARATIONS}
3072
3073            void main()
3074            {
3075                ${SETUP}
3076                out0 = in0.yyw - in1.ywy;
3077                ${OUTPUT}
3078            }
3079        ""
3080    end
3081
3082    case mediump_ivec4_wzy_zyw
3083        version 300 es
3084        values
3085        {
3086            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3087            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3088            output ivec3 out0 = [ ivec3(2, -2, 0) | ivec3(1, 1, -2) | ivec3(-5, -2, 7) ];
3089        }
3090
3091        both ""
3092            #version 300 es
3093            precision mediump float;
3094
3095            ${DECLARATIONS}
3096
3097            void main()
3098            {
3099                ${SETUP}
3100                out0 = in0.wzy - in1.zyw;
3101                ${OUTPUT}
3102            }
3103        ""
3104    end
3105
3106    case mediump_ivec4_xyzw_yzwx
3107        version 300 es
3108        values
3109        {
3110            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3111            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3112            output ivec4 out0 = [ ivec4(-2, 2, -2, 2) | ivec4(-1, -1, -1, 3) | ivec4(1, 2, 5, -8) ];
3113        }
3114
3115        both ""
3116            #version 300 es
3117            precision mediump float;
3118
3119            ${DECLARATIONS}
3120
3121            void main()
3122            {
3123                ${SETUP}
3124                out0 = in0.xyzw - in1.yzwx;
3125                ${OUTPUT}
3126            }
3127        ""
3128    end
3129
3130    case mediump_ivec4_wzyx_zyxw
3131        version 300 es
3132        values
3133        {
3134            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3135            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3136            output ivec4 out0 = [ ivec4(2, -2, 2, -2) | ivec4(1, 1, 1, -3) | ivec4(-5, -2, -1, 8) ];
3137        }
3138
3139        both ""
3140            #version 300 es
3141            precision mediump float;
3142
3143            ${DECLARATIONS}
3144
3145            void main()
3146            {
3147                ${SETUP}
3148                out0 = in0.wzyx - in1.zyxw;
3149                ${OUTPUT}
3150            }
3151        ""
3152    end
3153
3154    case mediump_ivec4_xyxy_yxyx
3155        version 300 es
3156        values
3157        {
3158            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3159            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3160            output ivec4 out0 = [ ivec4(-2, 2, -2, 2) | ivec4(-1, 1, -1, 1) | ivec4(1, -1, 1, -1) ];
3161        }
3162
3163        both ""
3164            #version 300 es
3165            precision mediump float;
3166
3167            ${DECLARATIONS}
3168
3169            void main()
3170            {
3171                ${SETUP}
3172                out0 = in0.xyxy - in1.yxyx;
3173                ${OUTPUT}
3174            }
3175        ""
3176    end
3177
3178    case mediump_ivec4_yzzy_zzyy
3179        version 300 es
3180        values
3181        {
3182            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3183            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3184            output ivec4 out0 = [ ivec4(2, 0, -2, 0) | ivec4(-1, 0, 1, 0) | ivec4(2, 0, -2, 0) ];
3185        }
3186
3187        both ""
3188            #version 300 es
3189            precision mediump float;
3190
3191            ${DECLARATIONS}
3192
3193            void main()
3194            {
3195                ${SETUP}
3196                out0 = in0.yzzy - in1.zzyy;
3197                ${OUTPUT}
3198            }
3199        ""
3200    end
3201
3202    case mediump_ivec4_wxww_xwww
3203        version 300 es
3204        values
3205        {
3206            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3207            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3208            output ivec4 out0 = [ ivec4(2, -2, 0, 0) | ivec4(3, -3, 0, 0) | ivec4(-8, 8, 0, 0) ];
3209        }
3210
3211        both ""
3212            #version 300 es
3213            precision mediump float;
3214
3215            ${DECLARATIONS}
3216
3217            void main()
3218            {
3219                ${SETUP}
3220                out0 = in0.wxww - in1.xwww;
3221                ${OUTPUT}
3222            }
3223        ""
3224    end
3225
3226    case mediump_ivec4_xyxx_yxxx
3227        version 300 es
3228        values
3229        {
3230            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3231            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3232            output ivec4 out0 = [ ivec4(-2, 2, 0, 0) | ivec4(-1, 1, 0, 0) | ivec4(1, -1, 0, 0) ];
3233        }
3234
3235        both ""
3236            #version 300 es
3237            precision mediump float;
3238
3239            ${DECLARATIONS}
3240
3241            void main()
3242            {
3243                ${SETUP}
3244                out0 = in0.xyxx - in1.yxxx;
3245                ${OUTPUT}
3246            }
3247        ""
3248    end
3249
3250    case mediump_ivec4_zzzz_zzzz
3251        version 300 es
3252        values
3253        {
3254            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3255            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
3256            output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ];
3257        }
3258
3259        both ""
3260            #version 300 es
3261            precision mediump float;
3262
3263            ${DECLARATIONS}
3264
3265            void main()
3266            {
3267                ${SETUP}
3268                out0 = in0.zzzz - in1.zzzz;
3269                ${OUTPUT}
3270            }
3271        ""
3272    end
3273
3274
3275end # vector_subtract
3276group vector_multiply "Vector swizzle math operations"
3277
3278    case mediump_vec2_x_x
3279        version 300 es
3280        values
3281        {
3282            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3283            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3284            output float out0 = [ 0.01 | 1.0 | 0.25 | 1024.0 | 0.5625 ];
3285        }
3286
3287        both ""
3288            #version 300 es
3289            precision mediump float;
3290
3291            ${DECLARATIONS}
3292
3293            void main()
3294            {
3295                ${SETUP}
3296                out0 = in0.x * in1.x;
3297                ${OUTPUT}
3298            }
3299        ""
3300    end
3301
3302    case mediump_vec2_xx_xx
3303        version 300 es
3304        values
3305        {
3306            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3307            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3308            output vec2 out0 = [ vec2(0.01, 0.01) | vec2(1.0, 1.0) | vec2(0.25, 0.25) | vec2(1024.0, 1024.0) | vec2(0.5625, 0.5625) ];
3309        }
3310
3311        both ""
3312            #version 300 es
3313            precision mediump float;
3314
3315            ${DECLARATIONS}
3316
3317            void main()
3318            {
3319                ${SETUP}
3320                out0 = in0.xx * in1.xx;
3321                ${OUTPUT}
3322            }
3323        ""
3324    end
3325
3326    case mediump_vec2_xy_yx
3327        version 300 es
3328        values
3329        {
3330            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3331            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3332            output vec2 out0 = [ vec2(0.05, 0.05) | vec2(1.25, 1.25) | vec2(1.125, 1.125) | vec2(-2048.0, -2048.0) | vec2(0.0241935483871, 0.0241935483871) ];
3333        }
3334
3335        both ""
3336            #version 300 es
3337            precision mediump float;
3338
3339            ${DECLARATIONS}
3340
3341            void main()
3342            {
3343                ${SETUP}
3344                out0 = in0.xy * in1.yx;
3345                ${OUTPUT}
3346            }
3347        ""
3348    end
3349
3350    case mediump_vec2_yx_xy
3351        version 300 es
3352        values
3353        {
3354            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3355            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3356            output vec2 out0 = [ vec2(0.05, 0.05) | vec2(1.25, 1.25) | vec2(1.125, 1.125) | vec2(-2048.0, -2048.0) | vec2(0.0241935483871, 0.0241935483871) ];
3357        }
3358
3359        both ""
3360            #version 300 es
3361            precision mediump float;
3362
3363            ${DECLARATIONS}
3364
3365            void main()
3366            {
3367                ${SETUP}
3368                out0 = in0.yx * in1.xy;
3369                ${OUTPUT}
3370            }
3371        ""
3372    end
3373
3374    case mediump_vec2_yxy_xyy
3375        version 300 es
3376        values
3377        {
3378            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3379            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3380            output vec3 out0 = [ vec3(0.05, 0.05, 0.25) | vec3(1.25, 1.25, 1.5625) | vec3(1.125, 1.125, 5.0625) | vec3(-2048.0, -2048.0, 4096.0) | vec3(0.0241935483871, 0.0241935483871, 0.00104058272633) ];
3381        }
3382
3383        both ""
3384            #version 300 es
3385            precision mediump float;
3386
3387            ${DECLARATIONS}
3388
3389            void main()
3390            {
3391                ${SETUP}
3392                out0 = in0.yxy * in1.xyy;
3393                ${OUTPUT}
3394            }
3395        ""
3396    end
3397
3398    case mediump_vec2_xyxx_yxxx
3399        version 300 es
3400        values
3401        {
3402            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3403            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3404            output vec4 out0 = [ vec4(0.05, 0.05, 0.01, 0.01) | vec4(1.25, 1.25, 1.0, 1.0) | vec4(1.125, 1.125, 0.25, 0.25) | vec4(-2048.0, -2048.0, 1024.0, 1024.0) | vec4(0.0241935483871, 0.0241935483871, 0.5625, 0.5625) ];
3405        }
3406
3407        both ""
3408            #version 300 es
3409            precision mediump float;
3410
3411            ${DECLARATIONS}
3412
3413            void main()
3414            {
3415                ${SETUP}
3416                out0 = in0.xyxx * in1.yxxx;
3417                ${OUTPUT}
3418            }
3419        ""
3420    end
3421
3422    case mediump_vec2_yxyx_xyxy
3423        version 300 es
3424        values
3425        {
3426            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3427            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
3428            output vec4 out0 = [ vec4(0.05, 0.05, 0.05, 0.05) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-2048.0, -2048.0, -2048.0, -2048.0) | vec4(0.0241935483871, 0.0241935483871, 0.0241935483871, 0.0241935483871) ];
3429        }
3430
3431        both ""
3432            #version 300 es
3433            precision mediump float;
3434
3435            ${DECLARATIONS}
3436
3437            void main()
3438            {
3439                ${SETUP}
3440                out0 = in0.yxyx * in1.xyxy;
3441                ${OUTPUT}
3442            }
3443        ""
3444    end
3445
3446    case mediump_vec3_x_x
3447        version 300 es
3448        values
3449        {
3450            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3451            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3452            output float out0 = [ 0.01 | 1.0 | 0.25 | 1024.0 | 0.5625 ];
3453        }
3454
3455        both ""
3456            #version 300 es
3457            precision mediump float;
3458
3459            ${DECLARATIONS}
3460
3461            void main()
3462            {
3463                ${SETUP}
3464                out0 = in0.x * in1.x;
3465                ${OUTPUT}
3466            }
3467        ""
3468    end
3469
3470    case mediump_vec3_z_z
3471        version 300 es
3472        values
3473        {
3474            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3475            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3476            output float out0 = [ 0.5625 | 1.265625 | 23.765625 | 2601.0 | 0.00277008310249 ];
3477        }
3478
3479        both ""
3480            #version 300 es
3481            precision mediump float;
3482
3483            ${DECLARATIONS}
3484
3485            void main()
3486            {
3487                ${SETUP}
3488                out0 = in0.z * in1.z;
3489                ${OUTPUT}
3490            }
3491        ""
3492    end
3493
3494    case mediump_vec3_xz_zx
3495        version 300 es
3496        values
3497        {
3498            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3499            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3500            output vec2 out0 = [ vec2(0.075, 0.075) | vec2(1.125, 1.125) | vec2(2.4375, 2.4375) | vec2(1632.0, 1632.0) | vec2(-0.0394736842105, -0.0394736842105) ];
3501        }
3502
3503        both ""
3504            #version 300 es
3505            precision mediump float;
3506
3507            ${DECLARATIONS}
3508
3509            void main()
3510            {
3511                ${SETUP}
3512                out0 = in0.xz * in1.zx;
3513                ${OUTPUT}
3514            }
3515        ""
3516    end
3517
3518    case mediump_vec3_zz_zz
3519        version 300 es
3520        values
3521        {
3522            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3523            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3524            output vec2 out0 = [ vec2(0.5625, 0.5625) | vec2(1.265625, 1.265625) | vec2(23.765625, 23.765625) | vec2(2601.0, 2601.0) | vec2(0.00277008310249, 0.00277008310249) ];
3525        }
3526
3527        both ""
3528            #version 300 es
3529            precision mediump float;
3530
3531            ${DECLARATIONS}
3532
3533            void main()
3534            {
3535                ${SETUP}
3536                out0 = in0.zz * in1.zz;
3537                ${OUTPUT}
3538            }
3539        ""
3540    end
3541
3542    case mediump_vec3_xyz_yzx
3543        version 300 es
3544        values
3545        {
3546            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3547            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3548            output vec3 out0 = [ vec3(0.05, 0.375, 0.075) | vec3(1.25, 1.40625, 1.125) | vec3(1.125, 10.96875, 2.4375) | vec3(-2048.0, -3264.0, 1632.0) | vec3(0.0241935483871, -0.00169779286927, -0.0394736842105) ];
3549        }
3550
3551        both ""
3552            #version 300 es
3553            precision mediump float;
3554
3555            ${DECLARATIONS}
3556
3557            void main()
3558            {
3559                ${SETUP}
3560                out0 = in0.xyz * in1.yzx;
3561                ${OUTPUT}
3562            }
3563        ""
3564    end
3565
3566    case mediump_vec3_zyx_yxz
3567        version 300 es
3568        values
3569        {
3570            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3571            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3572            output vec3 out0 = [ vec3(0.375, 0.05, 0.075) | vec3(1.40625, 1.25, 1.125) | vec3(10.96875, 1.125, 2.4375) | vec3(-3264.0, -2048.0, 1632.0) | vec3(-0.00169779286927, 0.0241935483871, -0.0394736842105) ];
3573        }
3574
3575        both ""
3576            #version 300 es
3577            precision mediump float;
3578
3579            ${DECLARATIONS}
3580
3581            void main()
3582            {
3583                ${SETUP}
3584                out0 = in0.zyx * in1.yxz;
3585                ${OUTPUT}
3586            }
3587        ""
3588    end
3589
3590    case mediump_vec3_xxx_xxx
3591        version 300 es
3592        values
3593        {
3594            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3595            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3596            output vec3 out0 = [ vec3(0.01, 0.01, 0.01) | vec3(1.0, 1.0, 1.0) | vec3(0.25, 0.25, 0.25) | vec3(1024.0, 1024.0, 1024.0) | vec3(0.5625, 0.5625, 0.5625) ];
3597        }
3598
3599        both ""
3600            #version 300 es
3601            precision mediump float;
3602
3603            ${DECLARATIONS}
3604
3605            void main()
3606            {
3607                ${SETUP}
3608                out0 = in0.xxx * in1.xxx;
3609                ${OUTPUT}
3610            }
3611        ""
3612    end
3613
3614    case mediump_vec3_zzz_zzz
3615        version 300 es
3616        values
3617        {
3618            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3619            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3620            output vec3 out0 = [ vec3(0.5625, 0.5625, 0.5625) | vec3(1.265625, 1.265625, 1.265625) | vec3(23.765625, 23.765625, 23.765625) | vec3(2601.0, 2601.0, 2601.0) | vec3(0.00277008310249, 0.00277008310249, 0.00277008310249) ];
3621        }
3622
3623        both ""
3624            #version 300 es
3625            precision mediump float;
3626
3627            ${DECLARATIONS}
3628
3629            void main()
3630            {
3631                ${SETUP}
3632                out0 = in0.zzz * in1.zzz;
3633                ${OUTPUT}
3634            }
3635        ""
3636    end
3637
3638    case mediump_vec3_zzy_zyz
3639        version 300 es
3640        values
3641        {
3642            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3643            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3644            output vec3 out0 = [ vec3(0.5625, 0.375, 0.375) | vec3(1.265625, 1.40625, 1.40625) | vec3(23.765625, 10.96875, 10.96875) | vec3(2601.0, -3264.0, -3264.0) | vec3(0.00277008310249, -0.00169779286927, -0.00169779286927) ];
3645        }
3646
3647        both ""
3648            #version 300 es
3649            precision mediump float;
3650
3651            ${DECLARATIONS}
3652
3653            void main()
3654            {
3655                ${SETUP}
3656                out0 = in0.zzy * in1.zyz;
3657                ${OUTPUT}
3658            }
3659        ""
3660    end
3661
3662    case mediump_vec3_yxy_xyy
3663        version 300 es
3664        values
3665        {
3666            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3667            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3668            output vec3 out0 = [ vec3(0.05, 0.05, 0.25) | vec3(1.25, 1.25, 1.5625) | vec3(1.125, 1.125, 5.0625) | vec3(-2048.0, -2048.0, 4096.0) | vec3(0.0241935483871, 0.0241935483871, 0.00104058272633) ];
3669        }
3670
3671        both ""
3672            #version 300 es
3673            precision mediump float;
3674
3675            ${DECLARATIONS}
3676
3677            void main()
3678            {
3679                ${SETUP}
3680                out0 = in0.yxy * in1.xyy;
3681                ${OUTPUT}
3682            }
3683        ""
3684    end
3685
3686    case mediump_vec3_xzx_zxx
3687        version 300 es
3688        values
3689        {
3690            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3691            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3692            output vec3 out0 = [ vec3(0.075, 0.075, 0.01) | vec3(1.125, 1.125, 1.0) | vec3(2.4375, 2.4375, 0.25) | vec3(1632.0, 1632.0, 1024.0) | vec3(-0.0394736842105, -0.0394736842105, 0.5625) ];
3693        }
3694
3695        both ""
3696            #version 300 es
3697            precision mediump float;
3698
3699            ${DECLARATIONS}
3700
3701            void main()
3702            {
3703                ${SETUP}
3704                out0 = in0.xzx * in1.zxx;
3705                ${OUTPUT}
3706            }
3707        ""
3708    end
3709
3710    case mediump_vec3_xyyx_yyxx
3711        version 300 es
3712        values
3713        {
3714            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3715            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3716            output vec4 out0 = [ vec4(0.05, 0.25, 0.05, 0.01) | vec4(1.25, 1.5625, 1.25, 1.0) | vec4(1.125, 5.0625, 1.125, 0.25) | vec4(-2048.0, 4096.0, -2048.0, 1024.0) | vec4(0.0241935483871, 0.00104058272633, 0.0241935483871, 0.5625) ];
3717        }
3718
3719        both ""
3720            #version 300 es
3721            precision mediump float;
3722
3723            ${DECLARATIONS}
3724
3725            void main()
3726            {
3727                ${SETUP}
3728                out0 = in0.xyyx * in1.yyxx;
3729                ${OUTPUT}
3730            }
3731        ""
3732    end
3733
3734    case mediump_vec3_zxyz_xyzz
3735        version 300 es
3736        values
3737        {
3738            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3739            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
3740            output vec4 out0 = [ vec4(0.075, 0.05, 0.375, 0.5625) | vec4(1.125, 1.25, 1.40625, 1.265625) | vec4(2.4375, 1.125, 10.96875, 23.765625) | vec4(1632.0, -2048.0, -3264.0, 2601.0) | vec4(-0.0394736842105, 0.0241935483871, -0.00169779286927, 0.00277008310249) ];
3741        }
3742
3743        both ""
3744            #version 300 es
3745            precision mediump float;
3746
3747            ${DECLARATIONS}
3748
3749            void main()
3750            {
3751                ${SETUP}
3752                out0 = in0.zxyz * in1.xyzz;
3753                ${OUTPUT}
3754            }
3755        ""
3756    end
3757
3758    case mediump_vec4_x_x
3759        version 300 es
3760        values
3761        {
3762            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3763            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3764            output float out0 = [ 0.01 | 1.0 | 0.25 | 1024.0 | 0.5625 ];
3765        }
3766
3767        both ""
3768            #version 300 es
3769            precision mediump float;
3770
3771            ${DECLARATIONS}
3772
3773            void main()
3774            {
3775                ${SETUP}
3776                out0 = in0.x * in1.x;
3777                ${OUTPUT}
3778            }
3779        ""
3780    end
3781
3782    case mediump_vec4_w_w
3783        version 300 es
3784        values
3785        {
3786            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3787            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3788            output float out0 = [ 0.680625 | 3.0625 | 81.0 | 576.0 | 0.0625 ];
3789        }
3790
3791        both ""
3792            #version 300 es
3793            precision mediump float;
3794
3795            ${DECLARATIONS}
3796
3797            void main()
3798            {
3799                ${SETUP}
3800                out0 = in0.w * in1.w;
3801                ${OUTPUT}
3802            }
3803        ""
3804    end
3805
3806    case mediump_vec4_wx_xw
3807        version 300 es
3808        values
3809        {
3810            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3811            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3812            output vec2 out0 = [ vec2(0.0825, 0.0825) | vec2(1.75, 1.75) | vec2(-4.5, -4.5) | vec2(-768.0, -768.0) | vec2(-0.1875, -0.1875) ];
3813        }
3814
3815        both ""
3816            #version 300 es
3817            precision mediump float;
3818
3819            ${DECLARATIONS}
3820
3821            void main()
3822            {
3823                ${SETUP}
3824                out0 = in0.wx * in1.xw;
3825                ${OUTPUT}
3826            }
3827        ""
3828    end
3829
3830    case mediump_vec4_wz_zw
3831        version 300 es
3832        values
3833        {
3834            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3835            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3836            output vec2 out0 = [ vec2(0.61875, 0.61875) | vec2(1.96875, 1.96875) | vec2(-43.875, -43.875) | vec2(-1224.0, -1224.0) | vec2(0.0131578947368, 0.0131578947368) ];
3837        }
3838
3839        both ""
3840            #version 300 es
3841            precision mediump float;
3842
3843            ${DECLARATIONS}
3844
3845            void main()
3846            {
3847                ${SETUP}
3848                out0 = in0.wz * in1.zw;
3849                ${OUTPUT}
3850            }
3851        ""
3852    end
3853
3854    case mediump_vec4_www_www
3855        version 300 es
3856        values
3857        {
3858            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3859            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3860            output vec3 out0 = [ vec3(0.680625, 0.680625, 0.680625) | vec3(3.0625, 3.0625, 3.0625) | vec3(81.0, 81.0, 81.0) | vec3(576.0, 576.0, 576.0) | vec3(0.0625, 0.0625, 0.0625) ];
3861        }
3862
3863        both ""
3864            #version 300 es
3865            precision mediump float;
3866
3867            ${DECLARATIONS}
3868
3869            void main()
3870            {
3871                ${SETUP}
3872                out0 = in0.www * in1.www;
3873                ${OUTPUT}
3874            }
3875        ""
3876    end
3877
3878    case mediump_vec4_yyw_ywy
3879        version 300 es
3880        values
3881        {
3882            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3883            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3884            output vec3 out0 = [ vec3(0.25, 0.4125, 0.4125) | vec3(1.5625, 2.1875, 2.1875) | vec3(5.0625, -20.25, -20.25) | vec3(4096.0, 1536.0, 1536.0) | vec3(0.00104058272633, -0.00806451612903, -0.00806451612903) ];
3885        }
3886
3887        both ""
3888            #version 300 es
3889            precision mediump float;
3890
3891            ${DECLARATIONS}
3892
3893            void main()
3894            {
3895                ${SETUP}
3896                out0 = in0.yyw * in1.ywy;
3897                ${OUTPUT}
3898            }
3899        ""
3900    end
3901
3902    case mediump_vec4_wzy_zyw
3903        version 300 es
3904        values
3905        {
3906            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3907            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3908            output vec3 out0 = [ vec3(0.61875, 0.375, 0.4125) | vec3(1.96875, 1.40625, 2.1875) | vec3(-43.875, 10.96875, -20.25) | vec3(-1224.0, -3264.0, 1536.0) | vec3(0.0131578947368, -0.00169779286927, -0.00806451612903) ];
3909        }
3910
3911        both ""
3912            #version 300 es
3913            precision mediump float;
3914
3915            ${DECLARATIONS}
3916
3917            void main()
3918            {
3919                ${SETUP}
3920                out0 = in0.wzy * in1.zyw;
3921                ${OUTPUT}
3922            }
3923        ""
3924    end
3925
3926    case mediump_vec4_xyzw_yzwx
3927        version 300 es
3928        values
3929        {
3930            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3931            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3932            output vec4 out0 = [ vec4(0.05, 0.375, 0.61875, 0.0825) | vec4(1.25, 1.40625, 1.96875, 1.75) | vec4(1.125, 10.96875, -43.875, -4.5) | vec4(-2048.0, -3264.0, -1224.0, -768.0) | vec4(0.0241935483871, -0.00169779286927, 0.0131578947368, -0.1875) ];
3933        }
3934
3935        both ""
3936            #version 300 es
3937            precision mediump float;
3938
3939            ${DECLARATIONS}
3940
3941            void main()
3942            {
3943                ${SETUP}
3944                out0 = in0.xyzw * in1.yzwx;
3945                ${OUTPUT}
3946            }
3947        ""
3948    end
3949
3950    case mediump_vec4_wzyx_zyxw
3951        version 300 es
3952        values
3953        {
3954            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3955            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3956            output vec4 out0 = [ vec4(0.61875, 0.375, 0.05, 0.0825) | vec4(1.96875, 1.40625, 1.25, 1.75) | vec4(-43.875, 10.96875, 1.125, -4.5) | vec4(-1224.0, -3264.0, -2048.0, -768.0) | vec4(0.0131578947368, -0.00169779286927, 0.0241935483871, -0.1875) ];
3957        }
3958
3959        both ""
3960            #version 300 es
3961            precision mediump float;
3962
3963            ${DECLARATIONS}
3964
3965            void main()
3966            {
3967                ${SETUP}
3968                out0 = in0.wzyx * in1.zyxw;
3969                ${OUTPUT}
3970            }
3971        ""
3972    end
3973
3974    case mediump_vec4_xyxy_yxyx
3975        version 300 es
3976        values
3977        {
3978            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3979            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
3980            output vec4 out0 = [ vec4(0.05, 0.05, 0.05, 0.05) | vec4(1.25, 1.25, 1.25, 1.25) | vec4(1.125, 1.125, 1.125, 1.125) | vec4(-2048.0, -2048.0, -2048.0, -2048.0) | vec4(0.0241935483871, 0.0241935483871, 0.0241935483871, 0.0241935483871) ];
3981        }
3982
3983        both ""
3984            #version 300 es
3985            precision mediump float;
3986
3987            ${DECLARATIONS}
3988
3989            void main()
3990            {
3991                ${SETUP}
3992                out0 = in0.xyxy * in1.yxyx;
3993                ${OUTPUT}
3994            }
3995        ""
3996    end
3997
3998    case mediump_vec4_yzzy_zzyy
3999        version 300 es
4000        values
4001        {
4002            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4003            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4004            output vec4 out0 = [ vec4(0.375, 0.5625, 0.375, 0.25) | vec4(1.40625, 1.265625, 1.40625, 1.5625) | vec4(10.96875, 23.765625, 10.96875, 5.0625) | vec4(-3264.0, 2601.0, -3264.0, 4096.0) | vec4(-0.00169779286927, 0.00277008310249, -0.00169779286927, 0.00104058272633) ];
4005        }
4006
4007        both ""
4008            #version 300 es
4009            precision mediump float;
4010
4011            ${DECLARATIONS}
4012
4013            void main()
4014            {
4015                ${SETUP}
4016                out0 = in0.yzzy * in1.zzyy;
4017                ${OUTPUT}
4018            }
4019        ""
4020    end
4021
4022    case mediump_vec4_wxww_xwww
4023        version 300 es
4024        values
4025        {
4026            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4027            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4028            output vec4 out0 = [ vec4(0.0825, 0.0825, 0.680625, 0.680625) | vec4(1.75, 1.75, 3.0625, 3.0625) | vec4(-4.5, -4.5, 81.0, 81.0) | vec4(-768.0, -768.0, 576.0, 576.0) | vec4(-0.1875, -0.1875, 0.0625, 0.0625) ];
4029        }
4030
4031        both ""
4032            #version 300 es
4033            precision mediump float;
4034
4035            ${DECLARATIONS}
4036
4037            void main()
4038            {
4039                ${SETUP}
4040                out0 = in0.wxww * in1.xwww;
4041                ${OUTPUT}
4042            }
4043        ""
4044    end
4045
4046    case mediump_vec4_xyxx_yxxx
4047        version 300 es
4048        values
4049        {
4050            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4051            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4052            output vec4 out0 = [ vec4(0.05, 0.05, 0.01, 0.01) | vec4(1.25, 1.25, 1.0, 1.0) | vec4(1.125, 1.125, 0.25, 0.25) | vec4(-2048.0, -2048.0, 1024.0, 1024.0) | vec4(0.0241935483871, 0.0241935483871, 0.5625, 0.5625) ];
4053        }
4054
4055        both ""
4056            #version 300 es
4057            precision mediump float;
4058
4059            ${DECLARATIONS}
4060
4061            void main()
4062            {
4063                ${SETUP}
4064                out0 = in0.xyxx * in1.yxxx;
4065                ${OUTPUT}
4066            }
4067        ""
4068    end
4069
4070    case mediump_vec4_zzzz_zzzz
4071        version 300 es
4072        values
4073        {
4074            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4075            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
4076            output vec4 out0 = [ vec4(0.5625, 0.5625, 0.5625, 0.5625) | vec4(1.265625, 1.265625, 1.265625, 1.265625) | vec4(23.765625, 23.765625, 23.765625, 23.765625) | vec4(2601.0, 2601.0, 2601.0, 2601.0) | vec4(0.00277008310249, 0.00277008310249, 0.00277008310249, 0.00277008310249) ];
4077        }
4078
4079        both ""
4080            #version 300 es
4081            precision mediump float;
4082
4083            ${DECLARATIONS}
4084
4085            void main()
4086            {
4087                ${SETUP}
4088                out0 = in0.zzzz * in1.zzzz;
4089                ${OUTPUT}
4090            }
4091        ""
4092    end
4093
4094    case mediump_ivec2_x_x
4095        version 300 es
4096        values
4097        {
4098            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4099            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4100            output int out0 = [ 1 | 1 | 1 ];
4101        }
4102
4103        both ""
4104            #version 300 es
4105            precision mediump float;
4106
4107            ${DECLARATIONS}
4108
4109            void main()
4110            {
4111                ${SETUP}
4112                out0 = in0.x * in1.x;
4113                ${OUTPUT}
4114            }
4115        ""
4116    end
4117
4118    case mediump_ivec2_xx_xx
4119        version 300 es
4120        values
4121        {
4122            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4123            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4124            output ivec2 out0 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(1, 1) ];
4125        }
4126
4127        both ""
4128            #version 300 es
4129            precision mediump float;
4130
4131            ${DECLARATIONS}
4132
4133            void main()
4134            {
4135                ${SETUP}
4136                out0 = in0.xx * in1.xx;
4137                ${OUTPUT}
4138            }
4139        ""
4140    end
4141
4142    case mediump_ivec2_xy_yx
4143        version 300 es
4144        values
4145        {
4146            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4147            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4148            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(2, 2) | ivec2(2, 2) ];
4149        }
4150
4151        both ""
4152            #version 300 es
4153            precision mediump float;
4154
4155            ${DECLARATIONS}
4156
4157            void main()
4158            {
4159                ${SETUP}
4160                out0 = in0.xy * in1.yx;
4161                ${OUTPUT}
4162            }
4163        ""
4164    end
4165
4166    case mediump_ivec2_yx_xy
4167        version 300 es
4168        values
4169        {
4170            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4171            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4172            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(2, 2) | ivec2(2, 2) ];
4173        }
4174
4175        both ""
4176            #version 300 es
4177            precision mediump float;
4178
4179            ${DECLARATIONS}
4180
4181            void main()
4182            {
4183                ${SETUP}
4184                out0 = in0.yx * in1.xy;
4185                ${OUTPUT}
4186            }
4187        ""
4188    end
4189
4190    case mediump_ivec2_yxy_xyy
4191        version 300 es
4192        values
4193        {
4194            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4195            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4196            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(2, 2, 4) | ivec3(2, 2, 4) ];
4197        }
4198
4199        both ""
4200            #version 300 es
4201            precision mediump float;
4202
4203            ${DECLARATIONS}
4204
4205            void main()
4206            {
4207                ${SETUP}
4208                out0 = in0.yxy * in1.xyy;
4209                ${OUTPUT}
4210            }
4211        ""
4212    end
4213
4214    case mediump_ivec2_xyxx_yxxx
4215        version 300 es
4216        values
4217        {
4218            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4219            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4220            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(2, 2, 1, 1) | ivec4(2, 2, 1, 1) ];
4221        }
4222
4223        both ""
4224            #version 300 es
4225            precision mediump float;
4226
4227            ${DECLARATIONS}
4228
4229            void main()
4230            {
4231                ${SETUP}
4232                out0 = in0.xyxx * in1.yxxx;
4233                ${OUTPUT}
4234            }
4235        ""
4236    end
4237
4238    case mediump_ivec2_yxyx_xyxy
4239        version 300 es
4240        values
4241        {
4242            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4243            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
4244            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(2, 2, 2, 2) | ivec4(2, 2, 2, 2) ];
4245        }
4246
4247        both ""
4248            #version 300 es
4249            precision mediump float;
4250
4251            ${DECLARATIONS}
4252
4253            void main()
4254            {
4255                ${SETUP}
4256                out0 = in0.yxyx * in1.xyxy;
4257                ${OUTPUT}
4258            }
4259        ""
4260    end
4261
4262    case mediump_ivec3_x_x
4263        version 300 es
4264        values
4265        {
4266            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4267            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4268            output int out0 = [ 1 | 1 | 1 ];
4269        }
4270
4271        both ""
4272            #version 300 es
4273            precision mediump float;
4274
4275            ${DECLARATIONS}
4276
4277            void main()
4278            {
4279                ${SETUP}
4280                out0 = in0.x * in1.x;
4281                ${OUTPUT}
4282            }
4283        ""
4284    end
4285
4286    case mediump_ivec3_z_z
4287        version 300 es
4288        values
4289        {
4290            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4291            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4292            output int out0 = [ 1 | 9 | 16 ];
4293        }
4294
4295        both ""
4296            #version 300 es
4297            precision mediump float;
4298
4299            ${DECLARATIONS}
4300
4301            void main()
4302            {
4303                ${SETUP}
4304                out0 = in0.z * in1.z;
4305                ${OUTPUT}
4306            }
4307        ""
4308    end
4309
4310    case mediump_ivec3_xz_zx
4311        version 300 es
4312        values
4313        {
4314            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4315            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4316            output ivec2 out0 = [ ivec2(1, 1) | ivec2(3, 3) | ivec2(4, 4) ];
4317        }
4318
4319        both ""
4320            #version 300 es
4321            precision mediump float;
4322
4323            ${DECLARATIONS}
4324
4325            void main()
4326            {
4327                ${SETUP}
4328                out0 = in0.xz * in1.zx;
4329                ${OUTPUT}
4330            }
4331        ""
4332    end
4333
4334    case mediump_ivec3_zz_zz
4335        version 300 es
4336        values
4337        {
4338            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4339            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4340            output ivec2 out0 = [ ivec2(1, 1) | ivec2(9, 9) | ivec2(16, 16) ];
4341        }
4342
4343        both ""
4344            #version 300 es
4345            precision mediump float;
4346
4347            ${DECLARATIONS}
4348
4349            void main()
4350            {
4351                ${SETUP}
4352                out0 = in0.zz * in1.zz;
4353                ${OUTPUT}
4354            }
4355        ""
4356    end
4357
4358    case mediump_ivec3_xyz_yzx
4359        version 300 es
4360        values
4361        {
4362            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4363            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4364            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(2, 6, 3) | ivec3(2, 8, 4) ];
4365        }
4366
4367        both ""
4368            #version 300 es
4369            precision mediump float;
4370
4371            ${DECLARATIONS}
4372
4373            void main()
4374            {
4375                ${SETUP}
4376                out0 = in0.xyz * in1.yzx;
4377                ${OUTPUT}
4378            }
4379        ""
4380    end
4381
4382    case mediump_ivec3_zyx_yxz
4383        version 300 es
4384        values
4385        {
4386            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4387            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4388            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(6, 2, 3) | ivec3(8, 2, 4) ];
4389        }
4390
4391        both ""
4392            #version 300 es
4393            precision mediump float;
4394
4395            ${DECLARATIONS}
4396
4397            void main()
4398            {
4399                ${SETUP}
4400                out0 = in0.zyx * in1.yxz;
4401                ${OUTPUT}
4402            }
4403        ""
4404    end
4405
4406    case mediump_ivec3_xxx_xxx
4407        version 300 es
4408        values
4409        {
4410            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4411            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4412            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(1, 1, 1) ];
4413        }
4414
4415        both ""
4416            #version 300 es
4417            precision mediump float;
4418
4419            ${DECLARATIONS}
4420
4421            void main()
4422            {
4423                ${SETUP}
4424                out0 = in0.xxx * in1.xxx;
4425                ${OUTPUT}
4426            }
4427        ""
4428    end
4429
4430    case mediump_ivec3_zzz_zzz
4431        version 300 es
4432        values
4433        {
4434            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4435            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4436            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(9, 9, 9) | ivec3(16, 16, 16) ];
4437        }
4438
4439        both ""
4440            #version 300 es
4441            precision mediump float;
4442
4443            ${DECLARATIONS}
4444
4445            void main()
4446            {
4447                ${SETUP}
4448                out0 = in0.zzz * in1.zzz;
4449                ${OUTPUT}
4450            }
4451        ""
4452    end
4453
4454    case mediump_ivec3_zzy_zyz
4455        version 300 es
4456        values
4457        {
4458            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4459            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4460            output ivec3 out0 = [ ivec3(1, -1, -1) | ivec3(9, 6, 6) | ivec3(16, 8, 8) ];
4461        }
4462
4463        both ""
4464            #version 300 es
4465            precision mediump float;
4466
4467            ${DECLARATIONS}
4468
4469            void main()
4470            {
4471                ${SETUP}
4472                out0 = in0.zzy * in1.zyz;
4473                ${OUTPUT}
4474            }
4475        ""
4476    end
4477
4478    case mediump_ivec3_yxy_xyy
4479        version 300 es
4480        values
4481        {
4482            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4483            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4484            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(2, 2, 4) | ivec3(2, 2, 4) ];
4485        }
4486
4487        both ""
4488            #version 300 es
4489            precision mediump float;
4490
4491            ${DECLARATIONS}
4492
4493            void main()
4494            {
4495                ${SETUP}
4496                out0 = in0.yxy * in1.xyy;
4497                ${OUTPUT}
4498            }
4499        ""
4500    end
4501
4502    case mediump_ivec3_xzx_zxx
4503        version 300 es
4504        values
4505        {
4506            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4507            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4508            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(3, 3, 1) | ivec3(4, 4, 1) ];
4509        }
4510
4511        both ""
4512            #version 300 es
4513            precision mediump float;
4514
4515            ${DECLARATIONS}
4516
4517            void main()
4518            {
4519                ${SETUP}
4520                out0 = in0.xzx * in1.zxx;
4521                ${OUTPUT}
4522            }
4523        ""
4524    end
4525
4526    case mediump_ivec3_xyyx_yyxx
4527        version 300 es
4528        values
4529        {
4530            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4531            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4532            output ivec4 out0 = [ ivec4(-1, 1, -1, 1) | ivec4(2, 4, 2, 1) | ivec4(2, 4, 2, 1) ];
4533        }
4534
4535        both ""
4536            #version 300 es
4537            precision mediump float;
4538
4539            ${DECLARATIONS}
4540
4541            void main()
4542            {
4543                ${SETUP}
4544                out0 = in0.xyyx * in1.yyxx;
4545                ${OUTPUT}
4546            }
4547        ""
4548    end
4549
4550    case mediump_ivec3_zxyz_xyzz
4551        version 300 es
4552        values
4553        {
4554            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4555            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
4556            output ivec4 out0 = [ ivec4(1, -1, -1, 1) | ivec4(3, 2, 6, 9) | ivec4(4, 2, 8, 16) ];
4557        }
4558
4559        both ""
4560            #version 300 es
4561            precision mediump float;
4562
4563            ${DECLARATIONS}
4564
4565            void main()
4566            {
4567                ${SETUP}
4568                out0 = in0.zxyz * in1.xyzz;
4569                ${OUTPUT}
4570            }
4571        ""
4572    end
4573
4574    case mediump_ivec4_x_x
4575        version 300 es
4576        values
4577        {
4578            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4579            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4580            output int out0 = [ 1 | 1 | 1 ];
4581        }
4582
4583        both ""
4584            #version 300 es
4585            precision mediump float;
4586
4587            ${DECLARATIONS}
4588
4589            void main()
4590            {
4591                ${SETUP}
4592                out0 = in0.x * in1.x;
4593                ${OUTPUT}
4594            }
4595        ""
4596    end
4597
4598    case mediump_ivec4_w_w
4599        version 300 es
4600        values
4601        {
4602            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4603            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4604            output int out0 = [ 1 | 16 | 81 ];
4605        }
4606
4607        both ""
4608            #version 300 es
4609            precision mediump float;
4610
4611            ${DECLARATIONS}
4612
4613            void main()
4614            {
4615                ${SETUP}
4616                out0 = in0.w * in1.w;
4617                ${OUTPUT}
4618            }
4619        ""
4620    end
4621
4622    case mediump_ivec4_wx_xw
4623        version 300 es
4624        values
4625        {
4626            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4627            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4628            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(4, 4) | ivec2(9, 9) ];
4629        }
4630
4631        both ""
4632            #version 300 es
4633            precision mediump float;
4634
4635            ${DECLARATIONS}
4636
4637            void main()
4638            {
4639                ${SETUP}
4640                out0 = in0.wx * in1.xw;
4641                ${OUTPUT}
4642            }
4643        ""
4644    end
4645
4646    case mediump_ivec4_wz_zw
4647        version 300 es
4648        values
4649        {
4650            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4651            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4652            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(12, 12) | ivec2(36, 36) ];
4653        }
4654
4655        both ""
4656            #version 300 es
4657            precision mediump float;
4658
4659            ${DECLARATIONS}
4660
4661            void main()
4662            {
4663                ${SETUP}
4664                out0 = in0.wz * in1.zw;
4665                ${OUTPUT}
4666            }
4667        ""
4668    end
4669
4670    case mediump_ivec4_www_www
4671        version 300 es
4672        values
4673        {
4674            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4675            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4676            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(16, 16, 16) | ivec3(81, 81, 81) ];
4677        }
4678
4679        both ""
4680            #version 300 es
4681            precision mediump float;
4682
4683            ${DECLARATIONS}
4684
4685            void main()
4686            {
4687                ${SETUP}
4688                out0 = in0.www * in1.www;
4689                ${OUTPUT}
4690            }
4691        ""
4692    end
4693
4694    case mediump_ivec4_yyw_ywy
4695        version 300 es
4696        values
4697        {
4698            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4699            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4700            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(4, 8, 8) | ivec3(4, 18, 18) ];
4701        }
4702
4703        both ""
4704            #version 300 es
4705            precision mediump float;
4706
4707            ${DECLARATIONS}
4708
4709            void main()
4710            {
4711                ${SETUP}
4712                out0 = in0.yyw * in1.ywy;
4713                ${OUTPUT}
4714            }
4715        ""
4716    end
4717
4718    case mediump_ivec4_wzy_zyw
4719        version 300 es
4720        values
4721        {
4722            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4723            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4724            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(12, 6, 8) | ivec3(36, 8, 18) ];
4725        }
4726
4727        both ""
4728            #version 300 es
4729            precision mediump float;
4730
4731            ${DECLARATIONS}
4732
4733            void main()
4734            {
4735                ${SETUP}
4736                out0 = in0.wzy * in1.zyw;
4737                ${OUTPUT}
4738            }
4739        ""
4740    end
4741
4742    case mediump_ivec4_xyzw_yzwx
4743        version 300 es
4744        values
4745        {
4746            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4747            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4748            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(2, 6, 12, 4) | ivec4(2, 8, 36, 9) ];
4749        }
4750
4751        both ""
4752            #version 300 es
4753            precision mediump float;
4754
4755            ${DECLARATIONS}
4756
4757            void main()
4758            {
4759                ${SETUP}
4760                out0 = in0.xyzw * in1.yzwx;
4761                ${OUTPUT}
4762            }
4763        ""
4764    end
4765
4766    case mediump_ivec4_wzyx_zyxw
4767        version 300 es
4768        values
4769        {
4770            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4771            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4772            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(12, 6, 2, 4) | ivec4(36, 8, 2, 9) ];
4773        }
4774
4775        both ""
4776            #version 300 es
4777            precision mediump float;
4778
4779            ${DECLARATIONS}
4780
4781            void main()
4782            {
4783                ${SETUP}
4784                out0 = in0.wzyx * in1.zyxw;
4785                ${OUTPUT}
4786            }
4787        ""
4788    end
4789
4790    case mediump_ivec4_xyxy_yxyx
4791        version 300 es
4792        values
4793        {
4794            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4795            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4796            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(2, 2, 2, 2) | ivec4(2, 2, 2, 2) ];
4797        }
4798
4799        both ""
4800            #version 300 es
4801            precision mediump float;
4802
4803            ${DECLARATIONS}
4804
4805            void main()
4806            {
4807                ${SETUP}
4808                out0 = in0.xyxy * in1.yxyx;
4809                ${OUTPUT}
4810            }
4811        ""
4812    end
4813
4814    case mediump_ivec4_yzzy_zzyy
4815        version 300 es
4816        values
4817        {
4818            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4819            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4820            output ivec4 out0 = [ ivec4(-1, 1, -1, 1) | ivec4(6, 9, 6, 4) | ivec4(8, 16, 8, 4) ];
4821        }
4822
4823        both ""
4824            #version 300 es
4825            precision mediump float;
4826
4827            ${DECLARATIONS}
4828
4829            void main()
4830            {
4831                ${SETUP}
4832                out0 = in0.yzzy * in1.zzyy;
4833                ${OUTPUT}
4834            }
4835        ""
4836    end
4837
4838    case mediump_ivec4_wxww_xwww
4839        version 300 es
4840        values
4841        {
4842            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4843            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4844            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(4, 4, 16, 16) | ivec4(9, 9, 81, 81) ];
4845        }
4846
4847        both ""
4848            #version 300 es
4849            precision mediump float;
4850
4851            ${DECLARATIONS}
4852
4853            void main()
4854            {
4855                ${SETUP}
4856                out0 = in0.wxww * in1.xwww;
4857                ${OUTPUT}
4858            }
4859        ""
4860    end
4861
4862    case mediump_ivec4_xyxx_yxxx
4863        version 300 es
4864        values
4865        {
4866            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4867            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4868            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(2, 2, 1, 1) | ivec4(2, 2, 1, 1) ];
4869        }
4870
4871        both ""
4872            #version 300 es
4873            precision mediump float;
4874
4875            ${DECLARATIONS}
4876
4877            void main()
4878            {
4879                ${SETUP}
4880                out0 = in0.xyxx * in1.yxxx;
4881                ${OUTPUT}
4882            }
4883        ""
4884    end
4885
4886    case mediump_ivec4_zzzz_zzzz
4887        version 300 es
4888        values
4889        {
4890            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4891            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
4892            output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(9, 9, 9, 9) | ivec4(16, 16, 16, 16) ];
4893        }
4894
4895        both ""
4896            #version 300 es
4897            precision mediump float;
4898
4899            ${DECLARATIONS}
4900
4901            void main()
4902            {
4903                ${SETUP}
4904                out0 = in0.zzzz * in1.zzzz;
4905                ${OUTPUT}
4906            }
4907        ""
4908    end
4909
4910
4911end # vector_multiply
4912group vector_divide "Vector swizzle math operations"
4913
4914    case mediump_vec2_x_x
4915        version 300 es
4916        values
4917        {
4918            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4919            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4920            output float out0 = [ 1.0 | 1.0 | 1.0 | 1.0 | 1.0 ];
4921        }
4922
4923        both ""
4924            #version 300 es
4925            precision mediump float;
4926
4927            ${DECLARATIONS}
4928
4929            void main()
4930            {
4931                ${SETUP}
4932                out0 = in0.x / in1.x;
4933                ${OUTPUT}
4934            }
4935        ""
4936    end
4937
4938    case mediump_vec2_xx_xx
4939        version 300 es
4940        values
4941        {
4942            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4943            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4944            output vec2 out0 = [ vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) ];
4945        }
4946
4947        both ""
4948            #version 300 es
4949            precision mediump float;
4950
4951            ${DECLARATIONS}
4952
4953            void main()
4954            {
4955                ${SETUP}
4956                out0 = in0.xx / in1.xx;
4957                ${OUTPUT}
4958            }
4959        ""
4960    end
4961
4962    case mediump_vec2_xy_yx
4963        version 300 es
4964        values
4965        {
4966            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4967            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4968            output vec2 out0 = [ vec2(0.2, 5.0) | vec2(0.8, 1.25) | vec2(0.222222222222, 4.5) | vec2(-0.5, -2.0) | vec2(23.25, 0.0430107526882) ];
4969        }
4970
4971        both ""
4972            #version 300 es
4973            precision mediump float;
4974
4975            ${DECLARATIONS}
4976
4977            void main()
4978            {
4979                ${SETUP}
4980                out0 = in0.xy / in1.yx;
4981                ${OUTPUT}
4982            }
4983        ""
4984    end
4985
4986    case mediump_vec2_yx_xy
4987        version 300 es
4988        values
4989        {
4990            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4991            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
4992            output vec2 out0 = [ vec2(5.0, 0.2) | vec2(1.25, 0.8) | vec2(4.5, 0.222222222222) | vec2(-2.0, -0.5) | vec2(0.0430107526882, 23.25) ];
4993        }
4994
4995        both ""
4996            #version 300 es
4997            precision mediump float;
4998
4999            ${DECLARATIONS}
5000
5001            void main()
5002            {
5003                ${SETUP}
5004                out0 = in0.yx / in1.xy;
5005                ${OUTPUT}
5006            }
5007        ""
5008    end
5009
5010    case mediump_vec2_yxy_xyy
5011        version 300 es
5012        values
5013        {
5014            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5015            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5016            output vec3 out0 = [ vec3(5.0, 0.2, 1.0) | vec3(1.25, 0.8, 1.0) | vec3(4.5, 0.222222222222, 1.0) | vec3(-2.0, -0.5, 1.0) | vec3(0.0430107526882, 23.25, 1.0) ];
5017        }
5018
5019        both ""
5020            #version 300 es
5021            precision mediump float;
5022
5023            ${DECLARATIONS}
5024
5025            void main()
5026            {
5027                ${SETUP}
5028                out0 = in0.yxy / in1.xyy;
5029                ${OUTPUT}
5030            }
5031        ""
5032    end
5033
5034    case mediump_vec2_xyxx_yxxx
5035        version 300 es
5036        values
5037        {
5038            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5039            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5040            output vec4 out0 = [ vec4(0.2, 5.0, 1.0, 1.0) | vec4(0.8, 1.25, 1.0, 1.0) | vec4(0.222222222222, 4.5, 1.0, 1.0) | vec4(-0.5, -2.0, 1.0, 1.0) | vec4(23.25, 0.0430107526882, 1.0, 1.0) ];
5041        }
5042
5043        both ""
5044            #version 300 es
5045            precision mediump float;
5046
5047            ${DECLARATIONS}
5048
5049            void main()
5050            {
5051                ${SETUP}
5052                out0 = in0.xyxx / in1.yxxx;
5053                ${OUTPUT}
5054            }
5055        ""
5056    end
5057
5058    case mediump_vec2_yxyx_xyxy
5059        version 300 es
5060        values
5061        {
5062            input vec2 in0 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5063            input vec2 in1 = [ vec2(0.1, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
5064            output vec4 out0 = [ vec4(5.0, 0.2, 5.0, 0.2) | vec4(1.25, 0.8, 1.25, 0.8) | vec4(4.5, 0.222222222222, 4.5, 0.222222222222) | vec4(-2.0, -0.5, -2.0, -0.5) | vec4(0.0430107526882, 23.25, 0.0430107526882, 23.25) ];
5065        }
5066
5067        both ""
5068            #version 300 es
5069            precision mediump float;
5070
5071            ${DECLARATIONS}
5072
5073            void main()
5074            {
5075                ${SETUP}
5076                out0 = in0.yxyx / in1.xyxy;
5077                ${OUTPUT}
5078            }
5079        ""
5080    end
5081
5082    case mediump_vec3_x_x
5083        version 300 es
5084        values
5085        {
5086            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5087            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5088            output float out0 = [ 1.0 | 1.0 | 1.0 | 1.0 | 1.0 ];
5089        }
5090
5091        both ""
5092            #version 300 es
5093            precision mediump float;
5094
5095            ${DECLARATIONS}
5096
5097            void main()
5098            {
5099                ${SETUP}
5100                out0 = in0.x / in1.x;
5101                ${OUTPUT}
5102            }
5103        ""
5104    end
5105
5106    case mediump_vec3_z_z
5107        version 300 es
5108        values
5109        {
5110            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5111            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5112            output float out0 = [ 1.0 | 1.0 | 1.0 | 1.0 | 1.0 ];
5113        }
5114
5115        both ""
5116            #version 300 es
5117            precision mediump float;
5118
5119            ${DECLARATIONS}
5120
5121            void main()
5122            {
5123                ${SETUP}
5124                out0 = in0.z / in1.z;
5125                ${OUTPUT}
5126            }
5127        ""
5128    end
5129
5130    case mediump_vec3_xz_zx
5131        version 300 es
5132        values
5133        {
5134            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5135            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5136            output vec2 out0 = [ vec2(0.133333333333, 7.5) | vec2(0.888888888889, 1.125) | vec2(0.102564102564, 9.75) | vec2(0.627450980392, 1.59375) | vec2(-14.25, -0.0701754385965) ];
5137        }
5138
5139        both ""
5140            #version 300 es
5141            precision mediump float;
5142
5143            ${DECLARATIONS}
5144
5145            void main()
5146            {
5147                ${SETUP}
5148                out0 = in0.xz / in1.zx;
5149                ${OUTPUT}
5150            }
5151        ""
5152    end
5153
5154    case mediump_vec3_zz_zz
5155        version 300 es
5156        values
5157        {
5158            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5159            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5160            output vec2 out0 = [ vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) | vec2(1.0, 1.0) ];
5161        }
5162
5163        both ""
5164            #version 300 es
5165            precision mediump float;
5166
5167            ${DECLARATIONS}
5168
5169            void main()
5170            {
5171                ${SETUP}
5172                out0 = in0.zz / in1.zz;
5173                ${OUTPUT}
5174            }
5175        ""
5176    end
5177
5178    case mediump_vec3_xyz_yzx
5179        version 300 es
5180        values
5181        {
5182            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5183            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5184            output vec3 out0 = [ vec3(0.2, 0.666666666667, 7.5) | vec3(0.8, 1.11111111111, 1.125) | vec3(0.222222222222, 0.461538461538, 9.75) | vec3(-0.5, -1.25490196078, 1.59375) | vec3(23.25, -0.612903225806, -0.0701754385965) ];
5185        }
5186
5187        both ""
5188            #version 300 es
5189            precision mediump float;
5190
5191            ${DECLARATIONS}
5192
5193            void main()
5194            {
5195                ${SETUP}
5196                out0 = in0.xyz / in1.yzx;
5197                ${OUTPUT}
5198            }
5199        ""
5200    end
5201
5202    case mediump_vec3_zyx_yxz
5203        version 300 es
5204        values
5205        {
5206            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5207            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5208            output vec3 out0 = [ vec3(1.5, 5.0, 0.133333333333) | vec3(0.9, 1.25, 0.888888888889) | vec3(2.16666666667, 4.5, 0.102564102564) | vec3(-0.796875, -2.0, 0.627450980392) | vec3(-1.63157894737, 0.0430107526882, -14.25) ];
5209        }
5210
5211        both ""
5212            #version 300 es
5213            precision mediump float;
5214
5215            ${DECLARATIONS}
5216
5217            void main()
5218            {
5219                ${SETUP}
5220                out0 = in0.zyx / in1.yxz;
5221                ${OUTPUT}
5222            }
5223        ""
5224    end
5225
5226    case mediump_vec3_xxx_xxx
5227        version 300 es
5228        values
5229        {
5230            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5231            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5232            output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ];
5233        }
5234
5235        both ""
5236            #version 300 es
5237            precision mediump float;
5238
5239            ${DECLARATIONS}
5240
5241            void main()
5242            {
5243                ${SETUP}
5244                out0 = in0.xxx / in1.xxx;
5245                ${OUTPUT}
5246            }
5247        ""
5248    end
5249
5250    case mediump_vec3_zzz_zzz
5251        version 300 es
5252        values
5253        {
5254            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5255            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5256            output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ];
5257        }
5258
5259        both ""
5260            #version 300 es
5261            precision mediump float;
5262
5263            ${DECLARATIONS}
5264
5265            void main()
5266            {
5267                ${SETUP}
5268                out0 = in0.zzz / in1.zzz;
5269                ${OUTPUT}
5270            }
5271        ""
5272    end
5273
5274    case mediump_vec3_zzy_zyz
5275        version 300 es
5276        values
5277        {
5278            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5279            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5280            output vec3 out0 = [ vec3(1.0, 1.5, 0.666666666667) | vec3(1.0, 0.9, 1.11111111111) | vec3(1.0, 2.16666666667, 0.461538461538) | vec3(1.0, -0.796875, -1.25490196078) | vec3(1.0, -1.63157894737, -0.612903225806) ];
5281        }
5282
5283        both ""
5284            #version 300 es
5285            precision mediump float;
5286
5287            ${DECLARATIONS}
5288
5289            void main()
5290            {
5291                ${SETUP}
5292                out0 = in0.zzy / in1.zyz;
5293                ${OUTPUT}
5294            }
5295        ""
5296    end
5297
5298    case mediump_vec3_yxy_xyy
5299        version 300 es
5300        values
5301        {
5302            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5303            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5304            output vec3 out0 = [ vec3(5.0, 0.2, 1.0) | vec3(1.25, 0.8, 1.0) | vec3(4.5, 0.222222222222, 1.0) | vec3(-2.0, -0.5, 1.0) | vec3(0.0430107526882, 23.25, 1.0) ];
5305        }
5306
5307        both ""
5308            #version 300 es
5309            precision mediump float;
5310
5311            ${DECLARATIONS}
5312
5313            void main()
5314            {
5315                ${SETUP}
5316                out0 = in0.yxy / in1.xyy;
5317                ${OUTPUT}
5318            }
5319        ""
5320    end
5321
5322    case mediump_vec3_xzx_zxx
5323        version 300 es
5324        values
5325        {
5326            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5327            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5328            output vec3 out0 = [ vec3(0.133333333333, 7.5, 1.0) | vec3(0.888888888889, 1.125, 1.0) | vec3(0.102564102564, 9.75, 1.0) | vec3(0.627450980392, 1.59375, 1.0) | vec3(-14.25, -0.0701754385965, 1.0) ];
5329        }
5330
5331        both ""
5332            #version 300 es
5333            precision mediump float;
5334
5335            ${DECLARATIONS}
5336
5337            void main()
5338            {
5339                ${SETUP}
5340                out0 = in0.xzx / in1.zxx;
5341                ${OUTPUT}
5342            }
5343        ""
5344    end
5345
5346    case mediump_vec3_xyyx_yyxx
5347        version 300 es
5348        values
5349        {
5350            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5351            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5352            output vec4 out0 = [ vec4(0.2, 1.0, 5.0, 1.0) | vec4(0.8, 1.0, 1.25, 1.0) | vec4(0.222222222222, 1.0, 4.5, 1.0) | vec4(-0.5, 1.0, -2.0, 1.0) | vec4(23.25, 1.0, 0.0430107526882, 1.0) ];
5353        }
5354
5355        both ""
5356            #version 300 es
5357            precision mediump float;
5358
5359            ${DECLARATIONS}
5360
5361            void main()
5362            {
5363                ${SETUP}
5364                out0 = in0.xyyx / in1.yyxx;
5365                ${OUTPUT}
5366            }
5367        ""
5368    end
5369
5370    case mediump_vec3_zxyz_xyzz
5371        version 300 es
5372        values
5373        {
5374            input vec3 in0 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5375            input vec3 in1 = [ vec3(0.1, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
5376            output vec4 out0 = [ vec4(7.5, 0.2, 0.666666666667, 1.0) | vec4(1.125, 0.8, 1.11111111111, 1.0) | vec4(9.75, 0.222222222222, 0.461538461538, 1.0) | vec4(1.59375, -0.5, -1.25490196078, 1.0) | vec4(-0.0701754385965, 23.25, -0.612903225806, 1.0) ];
5377        }
5378
5379        both ""
5380            #version 300 es
5381            precision mediump float;
5382
5383            ${DECLARATIONS}
5384
5385            void main()
5386            {
5387                ${SETUP}
5388                out0 = in0.zxyz / in1.xyzz;
5389                ${OUTPUT}
5390            }
5391        ""
5392    end
5393
5394    case mediump_vec4_x_x
5395        version 300 es
5396        values
5397        {
5398            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5399            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5400            output float out0 = [ 1.0 | 1.0 | 1.0 | 1.0 | 1.0 ];
5401        }
5402
5403        both ""
5404            #version 300 es
5405            precision mediump float;
5406
5407            ${DECLARATIONS}
5408
5409            void main()
5410            {
5411                ${SETUP}
5412                out0 = in0.x / in1.x;
5413                ${OUTPUT}
5414            }
5415        ""
5416    end
5417
5418    case mediump_vec4_w_w
5419        version 300 es
5420        values
5421        {
5422            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5423            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5424            output float out0 = [ 1.0 | 1.0 | 1.0 | 1.0 | 1.0 ];
5425        }
5426
5427        both ""
5428            #version 300 es
5429            precision mediump float;
5430
5431            ${DECLARATIONS}
5432
5433            void main()
5434            {
5435                ${SETUP}
5436                out0 = in0.w / in1.w;
5437                ${OUTPUT}
5438            }
5439        ""
5440    end
5441
5442    case mediump_vec4_wx_xw
5443        version 300 es
5444        values
5445        {
5446            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5447            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5448            output vec2 out0 = [ vec2(8.25, 0.121212121212) | vec2(1.75, 0.571428571429) | vec2(-18.0, -0.0555555555556) | vec2(-0.75, -1.33333333333) | vec2(-0.333333333333, -3.0) ];
5449        }
5450
5451        both ""
5452            #version 300 es
5453            precision mediump float;
5454
5455            ${DECLARATIONS}
5456
5457            void main()
5458            {
5459                ${SETUP}
5460                out0 = in0.wx / in1.xw;
5461                ${OUTPUT}
5462            }
5463        ""
5464    end
5465
5466    case mediump_vec4_wz_zw
5467        version 300 es
5468        values
5469        {
5470            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5471            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5472            output vec2 out0 = [ vec2(1.1, 0.909090909091) | vec2(1.55555555556, 0.642857142857) | vec2(-1.84615384615, -0.541666666667) | vec2(-0.470588235294, -2.125) | vec2(4.75, 0.210526315789) ];
5473        }
5474
5475        both ""
5476            #version 300 es
5477            precision mediump float;
5478
5479            ${DECLARATIONS}
5480
5481            void main()
5482            {
5483                ${SETUP}
5484                out0 = in0.wz / in1.zw;
5485                ${OUTPUT}
5486            }
5487        ""
5488    end
5489
5490    case mediump_vec4_www_www
5491        version 300 es
5492        values
5493        {
5494            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5495            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5496            output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ];
5497        }
5498
5499        both ""
5500            #version 300 es
5501            precision mediump float;
5502
5503            ${DECLARATIONS}
5504
5505            void main()
5506            {
5507                ${SETUP}
5508                out0 = in0.www / in1.www;
5509                ${OUTPUT}
5510            }
5511        ""
5512    end
5513
5514    case mediump_vec4_yyw_ywy
5515        version 300 es
5516        values
5517        {
5518            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5519            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5520            output vec3 out0 = [ vec3(1.0, 0.606060606061, 1.65) | vec3(1.0, 0.714285714286, 1.4) | vec3(1.0, -0.25, -4.0) | vec3(1.0, 2.66666666667, 0.375) | vec3(1.0, -0.129032258065, -7.75) ];
5521        }
5522
5523        both ""
5524            #version 300 es
5525            precision mediump float;
5526
5527            ${DECLARATIONS}
5528
5529            void main()
5530            {
5531                ${SETUP}
5532                out0 = in0.yyw / in1.ywy;
5533                ${OUTPUT}
5534            }
5535        ""
5536    end
5537
5538    case mediump_vec4_wzy_zyw
5539        version 300 es
5540        values
5541        {
5542            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5543            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5544            output vec3 out0 = [ vec3(1.1, 1.5, 0.606060606061) | vec3(1.55555555556, 0.9, 0.714285714286) | vec3(-1.84615384615, 2.16666666667, -0.25) | vec3(-0.470588235294, -0.796875, 2.66666666667) | vec3(4.75, -1.63157894737, -0.129032258065) ];
5545        }
5546
5547        both ""
5548            #version 300 es
5549            precision mediump float;
5550
5551            ${DECLARATIONS}
5552
5553            void main()
5554            {
5555                ${SETUP}
5556                out0 = in0.wzy / in1.zyw;
5557                ${OUTPUT}
5558            }
5559        ""
5560    end
5561
5562    case mediump_vec4_xyzw_yzwx
5563        version 300 es
5564        values
5565        {
5566            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5567            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5568            output vec4 out0 = [ vec4(0.2, 0.666666666667, 0.909090909091, 8.25) | vec4(0.8, 1.11111111111, 0.642857142857, 1.75) | vec4(0.222222222222, 0.461538461538, -0.541666666667, -18.0) | vec4(-0.5, -1.25490196078, -2.125, -0.75) | vec4(23.25, -0.612903225806, 0.210526315789, -0.333333333333) ];
5569        }
5570
5571        both ""
5572            #version 300 es
5573            precision mediump float;
5574
5575            ${DECLARATIONS}
5576
5577            void main()
5578            {
5579                ${SETUP}
5580                out0 = in0.xyzw / in1.yzwx;
5581                ${OUTPUT}
5582            }
5583        ""
5584    end
5585
5586    case mediump_vec4_wzyx_zyxw
5587        version 300 es
5588        values
5589        {
5590            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5591            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5592            output vec4 out0 = [ vec4(1.1, 1.5, 5.0, 0.121212121212) | vec4(1.55555555556, 0.9, 1.25, 0.571428571429) | vec4(-1.84615384615, 2.16666666667, 4.5, -0.0555555555556) | vec4(-0.470588235294, -0.796875, -2.0, -1.33333333333) | vec4(4.75, -1.63157894737, 0.0430107526882, -3.0) ];
5593        }
5594
5595        both ""
5596            #version 300 es
5597            precision mediump float;
5598
5599            ${DECLARATIONS}
5600
5601            void main()
5602            {
5603                ${SETUP}
5604                out0 = in0.wzyx / in1.zyxw;
5605                ${OUTPUT}
5606            }
5607        ""
5608    end
5609
5610    case mediump_vec4_xyxy_yxyx
5611        version 300 es
5612        values
5613        {
5614            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5615            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5616            output vec4 out0 = [ vec4(0.2, 5.0, 0.2, 5.0) | vec4(0.8, 1.25, 0.8, 1.25) | vec4(0.222222222222, 4.5, 0.222222222222, 4.5) | vec4(-0.5, -2.0, -0.5, -2.0) | vec4(23.25, 0.0430107526882, 23.25, 0.0430107526882) ];
5617        }
5618
5619        both ""
5620            #version 300 es
5621            precision mediump float;
5622
5623            ${DECLARATIONS}
5624
5625            void main()
5626            {
5627                ${SETUP}
5628                out0 = in0.xyxy / in1.yxyx;
5629                ${OUTPUT}
5630            }
5631        ""
5632    end
5633
5634    case mediump_vec4_yzzy_zzyy
5635        version 300 es
5636        values
5637        {
5638            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5639            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5640            output vec4 out0 = [ vec4(0.666666666667, 1.0, 1.5, 1.0) | vec4(1.11111111111, 1.0, 0.9, 1.0) | vec4(0.461538461538, 1.0, 2.16666666667, 1.0) | vec4(-1.25490196078, 1.0, -0.796875, 1.0) | vec4(-0.612903225806, 1.0, -1.63157894737, 1.0) ];
5641        }
5642
5643        both ""
5644            #version 300 es
5645            precision mediump float;
5646
5647            ${DECLARATIONS}
5648
5649            void main()
5650            {
5651                ${SETUP}
5652                out0 = in0.yzzy / in1.zzyy;
5653                ${OUTPUT}
5654            }
5655        ""
5656    end
5657
5658    case mediump_vec4_wxww_xwww
5659        version 300 es
5660        values
5661        {
5662            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5663            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5664            output vec4 out0 = [ vec4(8.25, 0.121212121212, 1.0, 1.0) | vec4(1.75, 0.571428571429, 1.0, 1.0) | vec4(-18.0, -0.0555555555556, 1.0, 1.0) | vec4(-0.75, -1.33333333333, 1.0, 1.0) | vec4(-0.333333333333, -3.0, 1.0, 1.0) ];
5665        }
5666
5667        both ""
5668            #version 300 es
5669            precision mediump float;
5670
5671            ${DECLARATIONS}
5672
5673            void main()
5674            {
5675                ${SETUP}
5676                out0 = in0.wxww / in1.xwww;
5677                ${OUTPUT}
5678            }
5679        ""
5680    end
5681
5682    case mediump_vec4_xyxx_yxxx
5683        version 300 es
5684        values
5685        {
5686            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5687            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5688            output vec4 out0 = [ vec4(0.2, 5.0, 1.0, 1.0) | vec4(0.8, 1.25, 1.0, 1.0) | vec4(0.222222222222, 4.5, 1.0, 1.0) | vec4(-0.5, -2.0, 1.0, 1.0) | vec4(23.25, 0.0430107526882, 1.0, 1.0) ];
5689        }
5690
5691        both ""
5692            #version 300 es
5693            precision mediump float;
5694
5695            ${DECLARATIONS}
5696
5697            void main()
5698            {
5699                ${SETUP}
5700                out0 = in0.xyxx / in1.yxxx;
5701                ${OUTPUT}
5702            }
5703        ""
5704    end
5705
5706    case mediump_vec4_zzzz_zzzz
5707        version 300 es
5708        values
5709        {
5710            input vec4 in0 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5711            input vec4 in1 = [ vec4(0.1, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
5712            output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(1.0, 1.0, 1.0, 1.0) ];
5713        }
5714
5715        both ""
5716            #version 300 es
5717            precision mediump float;
5718
5719            ${DECLARATIONS}
5720
5721            void main()
5722            {
5723                ${SETUP}
5724                out0 = in0.zzzz / in1.zzzz;
5725                ${OUTPUT}
5726            }
5727        ""
5728    end
5729
5730    case mediump_ivec2_x_x
5731        version 300 es
5732        values
5733        {
5734            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5735            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5736            output int out0 = [ 1 | 1 | 1 ];
5737        }
5738
5739        both ""
5740            #version 300 es
5741            precision mediump float;
5742
5743            ${DECLARATIONS}
5744
5745            void main()
5746            {
5747                ${SETUP}
5748                out0 = in0.x / in1.x;
5749                ${OUTPUT}
5750            }
5751        ""
5752    end
5753
5754    case mediump_ivec2_xx_xx
5755        version 300 es
5756        values
5757        {
5758            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5759            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5760            output ivec2 out0 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(1, 1) ];
5761        }
5762
5763        both ""
5764            #version 300 es
5765            precision mediump float;
5766
5767            ${DECLARATIONS}
5768
5769            void main()
5770            {
5771                ${SETUP}
5772                out0 = in0.xx / in1.xx;
5773                ${OUTPUT}
5774            }
5775        ""
5776    end
5777
5778    case mediump_ivec2_xy_yx
5779        version 300 es
5780        values
5781        {
5782            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5783            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5784            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(0, 2) | ivec2(0, 2) ];
5785        }
5786
5787        both ""
5788            #version 300 es
5789            precision mediump float;
5790
5791            ${DECLARATIONS}
5792
5793            void main()
5794            {
5795                ${SETUP}
5796                out0 = in0.xy / in1.yx;
5797                ${OUTPUT}
5798            }
5799        ""
5800    end
5801
5802    case mediump_ivec2_yx_xy
5803        version 300 es
5804        values
5805        {
5806            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5807            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5808            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(2, 0) | ivec2(2, 0) ];
5809        }
5810
5811        both ""
5812            #version 300 es
5813            precision mediump float;
5814
5815            ${DECLARATIONS}
5816
5817            void main()
5818            {
5819                ${SETUP}
5820                out0 = in0.yx / in1.xy;
5821                ${OUTPUT}
5822            }
5823        ""
5824    end
5825
5826    case mediump_ivec2_yxy_xyy
5827        version 300 es
5828        values
5829        {
5830            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5831            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5832            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(2, 0, 1) | ivec3(2, 0, 1) ];
5833        }
5834
5835        both ""
5836            #version 300 es
5837            precision mediump float;
5838
5839            ${DECLARATIONS}
5840
5841            void main()
5842            {
5843                ${SETUP}
5844                out0 = in0.yxy / in1.xyy;
5845                ${OUTPUT}
5846            }
5847        ""
5848    end
5849
5850    case mediump_ivec2_xyxx_yxxx
5851        version 300 es
5852        values
5853        {
5854            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5855            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5856            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(0, 2, 1, 1) | ivec4(0, 2, 1, 1) ];
5857        }
5858
5859        both ""
5860            #version 300 es
5861            precision mediump float;
5862
5863            ${DECLARATIONS}
5864
5865            void main()
5866            {
5867                ${SETUP}
5868                out0 = in0.xyxx / in1.yxxx;
5869                ${OUTPUT}
5870            }
5871        ""
5872    end
5873
5874    case mediump_ivec2_yxyx_xyxy
5875        version 300 es
5876        values
5877        {
5878            input ivec2 in0 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5879            input ivec2 in1 = [ ivec2(-1, 1) | ivec2(1, 2) | ivec2(-1, -2) ];
5880            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(2, 0, 2, 0) | ivec4(2, 0, 2, 0) ];
5881        }
5882
5883        both ""
5884            #version 300 es
5885            precision mediump float;
5886
5887            ${DECLARATIONS}
5888
5889            void main()
5890            {
5891                ${SETUP}
5892                out0 = in0.yxyx / in1.xyxy;
5893                ${OUTPUT}
5894            }
5895        ""
5896    end
5897
5898    case mediump_ivec3_x_x
5899        version 300 es
5900        values
5901        {
5902            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5903            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5904            output int out0 = [ 1 | 1 | 1 ];
5905        }
5906
5907        both ""
5908            #version 300 es
5909            precision mediump float;
5910
5911            ${DECLARATIONS}
5912
5913            void main()
5914            {
5915                ${SETUP}
5916                out0 = in0.x / in1.x;
5917                ${OUTPUT}
5918            }
5919        ""
5920    end
5921
5922    case mediump_ivec3_z_z
5923        version 300 es
5924        values
5925        {
5926            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5927            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5928            output int out0 = [ 1 | 1 | 1 ];
5929        }
5930
5931        both ""
5932            #version 300 es
5933            precision mediump float;
5934
5935            ${DECLARATIONS}
5936
5937            void main()
5938            {
5939                ${SETUP}
5940                out0 = in0.z / in1.z;
5941                ${OUTPUT}
5942            }
5943        ""
5944    end
5945
5946    case mediump_ivec3_xz_zx
5947        version 300 es
5948        values
5949        {
5950            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5951            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5952            output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 3) | ivec2(0, 4) ];
5953        }
5954
5955        both ""
5956            #version 300 es
5957            precision mediump float;
5958
5959            ${DECLARATIONS}
5960
5961            void main()
5962            {
5963                ${SETUP}
5964                out0 = in0.xz / in1.zx;
5965                ${OUTPUT}
5966            }
5967        ""
5968    end
5969
5970    case mediump_ivec3_zz_zz
5971        version 300 es
5972        values
5973        {
5974            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5975            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5976            output ivec2 out0 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(1, 1) ];
5977        }
5978
5979        both ""
5980            #version 300 es
5981            precision mediump float;
5982
5983            ${DECLARATIONS}
5984
5985            void main()
5986            {
5987                ${SETUP}
5988                out0 = in0.zz / in1.zz;
5989                ${OUTPUT}
5990            }
5991        ""
5992    end
5993
5994    case mediump_ivec3_xyz_yzx
5995        version 300 es
5996        values
5997        {
5998            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
5999            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6000            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(0, 0, 3) | ivec3(0, 0, 4) ];
6001        }
6002
6003        both ""
6004            #version 300 es
6005            precision mediump float;
6006
6007            ${DECLARATIONS}
6008
6009            void main()
6010            {
6011                ${SETUP}
6012                out0 = in0.xyz / in1.yzx;
6013                ${OUTPUT}
6014            }
6015        ""
6016    end
6017
6018    case mediump_ivec3_zyx_yxz
6019        version 300 es
6020        values
6021        {
6022            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6023            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6024            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(1, 2, 0) | ivec3(2, 2, 0) ];
6025        }
6026
6027        both ""
6028            #version 300 es
6029            precision mediump float;
6030
6031            ${DECLARATIONS}
6032
6033            void main()
6034            {
6035                ${SETUP}
6036                out0 = in0.zyx / in1.yxz;
6037                ${OUTPUT}
6038            }
6039        ""
6040    end
6041
6042    case mediump_ivec3_xxx_xxx
6043        version 300 es
6044        values
6045        {
6046            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6047            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6048            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(1, 1, 1) ];
6049        }
6050
6051        both ""
6052            #version 300 es
6053            precision mediump float;
6054
6055            ${DECLARATIONS}
6056
6057            void main()
6058            {
6059                ${SETUP}
6060                out0 = in0.xxx / in1.xxx;
6061                ${OUTPUT}
6062            }
6063        ""
6064    end
6065
6066    case mediump_ivec3_zzz_zzz
6067        version 300 es
6068        values
6069        {
6070            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6071            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6072            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(1, 1, 1) ];
6073        }
6074
6075        both ""
6076            #version 300 es
6077            precision mediump float;
6078
6079            ${DECLARATIONS}
6080
6081            void main()
6082            {
6083                ${SETUP}
6084                out0 = in0.zzz / in1.zzz;
6085                ${OUTPUT}
6086            }
6087        ""
6088    end
6089
6090    case mediump_ivec3_zzy_zyz
6091        version 300 es
6092        values
6093        {
6094            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6095            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6096            output ivec3 out0 = [ ivec3(1, -1, -1) | ivec3(1, 1, 0) | ivec3(1, 2, 0) ];
6097        }
6098
6099        both ""
6100            #version 300 es
6101            precision mediump float;
6102
6103            ${DECLARATIONS}
6104
6105            void main()
6106            {
6107                ${SETUP}
6108                out0 = in0.zzy / in1.zyz;
6109                ${OUTPUT}
6110            }
6111        ""
6112    end
6113
6114    case mediump_ivec3_yxy_xyy
6115        version 300 es
6116        values
6117        {
6118            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6119            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6120            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(2, 0, 1) | ivec3(2, 0, 1) ];
6121        }
6122
6123        both ""
6124            #version 300 es
6125            precision mediump float;
6126
6127            ${DECLARATIONS}
6128
6129            void main()
6130            {
6131                ${SETUP}
6132                out0 = in0.yxy / in1.xyy;
6133                ${OUTPUT}
6134            }
6135        ""
6136    end
6137
6138    case mediump_ivec3_xzx_zxx
6139        version 300 es
6140        values
6141        {
6142            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6143            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6144            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 3, 1) | ivec3(0, 4, 1) ];
6145        }
6146
6147        both ""
6148            #version 300 es
6149            precision mediump float;
6150
6151            ${DECLARATIONS}
6152
6153            void main()
6154            {
6155                ${SETUP}
6156                out0 = in0.xzx / in1.zxx;
6157                ${OUTPUT}
6158            }
6159        ""
6160    end
6161
6162    case mediump_ivec3_xyyx_yyxx
6163        version 300 es
6164        values
6165        {
6166            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6167            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6168            output ivec4 out0 = [ ivec4(-1, 1, -1, 1) | ivec4(0, 1, 2, 1) | ivec4(0, 1, 2, 1) ];
6169        }
6170
6171        both ""
6172            #version 300 es
6173            precision mediump float;
6174
6175            ${DECLARATIONS}
6176
6177            void main()
6178            {
6179                ${SETUP}
6180                out0 = in0.xyyx / in1.yyxx;
6181                ${OUTPUT}
6182            }
6183        ""
6184    end
6185
6186    case mediump_ivec3_zxyz_xyzz
6187        version 300 es
6188        values
6189        {
6190            input ivec3 in0 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6191            input ivec3 in1 = [ ivec3(-1, 1, -1) | ivec3(1, 2, 3) | ivec3(-1, -2, -4) ];
6192            output ivec4 out0 = [ ivec4(1, -1, -1, 1) | ivec4(3, 0, 0, 1) | ivec4(4, 0, 0, 1) ];
6193        }
6194
6195        both ""
6196            #version 300 es
6197            precision mediump float;
6198
6199            ${DECLARATIONS}
6200
6201            void main()
6202            {
6203                ${SETUP}
6204                out0 = in0.zxyz / in1.xyzz;
6205                ${OUTPUT}
6206            }
6207        ""
6208    end
6209
6210    case mediump_ivec4_x_x
6211        version 300 es
6212        values
6213        {
6214            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6215            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6216            output int out0 = [ 1 | 1 | 1 ];
6217        }
6218
6219        both ""
6220            #version 300 es
6221            precision mediump float;
6222
6223            ${DECLARATIONS}
6224
6225            void main()
6226            {
6227                ${SETUP}
6228                out0 = in0.x / in1.x;
6229                ${OUTPUT}
6230            }
6231        ""
6232    end
6233
6234    case mediump_ivec4_w_w
6235        version 300 es
6236        values
6237        {
6238            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6239            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6240            output int out0 = [ 1 | 1 | 1 ];
6241        }
6242
6243        both ""
6244            #version 300 es
6245            precision mediump float;
6246
6247            ${DECLARATIONS}
6248
6249            void main()
6250            {
6251                ${SETUP}
6252                out0 = in0.w / in1.w;
6253                ${OUTPUT}
6254            }
6255        ""
6256    end
6257
6258    case mediump_ivec4_wx_xw
6259        version 300 es
6260        values
6261        {
6262            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6263            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6264            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(4, 0) | ivec2(9, 0) ];
6265        }
6266
6267        both ""
6268            #version 300 es
6269            precision mediump float;
6270
6271            ${DECLARATIONS}
6272
6273            void main()
6274            {
6275                ${SETUP}
6276                out0 = in0.wx / in1.xw;
6277                ${OUTPUT}
6278            }
6279        ""
6280    end
6281
6282    case mediump_ivec4_wz_zw
6283        version 300 es
6284        values
6285        {
6286            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6287            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6288            output ivec2 out0 = [ ivec2(-1, -1) | ivec2(1, 0) | ivec2(2, 0) ];
6289        }
6290
6291        both ""
6292            #version 300 es
6293            precision mediump float;
6294
6295            ${DECLARATIONS}
6296
6297            void main()
6298            {
6299                ${SETUP}
6300                out0 = in0.wz / in1.zw;
6301                ${OUTPUT}
6302            }
6303        ""
6304    end
6305
6306    case mediump_ivec4_www_www
6307        version 300 es
6308        values
6309        {
6310            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6311            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6312            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(1, 1, 1) ];
6313        }
6314
6315        both ""
6316            #version 300 es
6317            precision mediump float;
6318
6319            ${DECLARATIONS}
6320
6321            void main()
6322            {
6323                ${SETUP}
6324                out0 = in0.www / in1.www;
6325                ${OUTPUT}
6326            }
6327        ""
6328    end
6329
6330    case mediump_ivec4_yyw_ywy
6331        version 300 es
6332        values
6333        {
6334            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6335            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6336            output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(1, 0, 2) | ivec3(1, 0, 4) ];
6337        }
6338
6339        both ""
6340            #version 300 es
6341            precision mediump float;
6342
6343            ${DECLARATIONS}
6344
6345            void main()
6346            {
6347                ${SETUP}
6348                out0 = in0.yyw / in1.ywy;
6349                ${OUTPUT}
6350            }
6351        ""
6352    end
6353
6354    case mediump_ivec4_wzy_zyw
6355        version 300 es
6356        values
6357        {
6358            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6359            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6360            output ivec3 out0 = [ ivec3(-1, -1, 1) | ivec3(1, 1, 0) | ivec3(2, 2, 0) ];
6361        }
6362
6363        both ""
6364            #version 300 es
6365            precision mediump float;
6366
6367            ${DECLARATIONS}
6368
6369            void main()
6370            {
6371                ${SETUP}
6372                out0 = in0.wzy / in1.zyw;
6373                ${OUTPUT}
6374            }
6375        ""
6376    end
6377
6378    case mediump_ivec4_xyzw_yzwx
6379        version 300 es
6380        values
6381        {
6382            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6383            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6384            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(0, 0, 0, 4) | ivec4(0, 0, 0, 9) ];
6385        }
6386
6387        both ""
6388            #version 300 es
6389            precision mediump float;
6390
6391            ${DECLARATIONS}
6392
6393            void main()
6394            {
6395                ${SETUP}
6396                out0 = in0.xyzw / in1.yzwx;
6397                ${OUTPUT}
6398            }
6399        ""
6400    end
6401
6402    case mediump_ivec4_wzyx_zyxw
6403        version 300 es
6404        values
6405        {
6406            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6407            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6408            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(1, 1, 2, 0) | ivec4(2, 2, 2, 0) ];
6409        }
6410
6411        both ""
6412            #version 300 es
6413            precision mediump float;
6414
6415            ${DECLARATIONS}
6416
6417            void main()
6418            {
6419                ${SETUP}
6420                out0 = in0.wzyx / in1.zyxw;
6421                ${OUTPUT}
6422            }
6423        ""
6424    end
6425
6426    case mediump_ivec4_xyxy_yxyx
6427        version 300 es
6428        values
6429        {
6430            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6431            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6432            output ivec4 out0 = [ ivec4(-1, -1, -1, -1) | ivec4(0, 2, 0, 2) | ivec4(0, 2, 0, 2) ];
6433        }
6434
6435        both ""
6436            #version 300 es
6437            precision mediump float;
6438
6439            ${DECLARATIONS}
6440
6441            void main()
6442            {
6443                ${SETUP}
6444                out0 = in0.xyxy / in1.yxyx;
6445                ${OUTPUT}
6446            }
6447        ""
6448    end
6449
6450    case mediump_ivec4_yzzy_zzyy
6451        version 300 es
6452        values
6453        {
6454            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6455            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6456            output ivec4 out0 = [ ivec4(-1, 1, -1, 1) | ivec4(0, 1, 1, 1) | ivec4(0, 1, 2, 1) ];
6457        }
6458
6459        both ""
6460            #version 300 es
6461            precision mediump float;
6462
6463            ${DECLARATIONS}
6464
6465            void main()
6466            {
6467                ${SETUP}
6468                out0 = in0.yzzy / in1.zzyy;
6469                ${OUTPUT}
6470            }
6471        ""
6472    end
6473
6474    case mediump_ivec4_wxww_xwww
6475        version 300 es
6476        values
6477        {
6478            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6479            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6480            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(4, 0, 1, 1) | ivec4(9, 0, 1, 1) ];
6481        }
6482
6483        both ""
6484            #version 300 es
6485            precision mediump float;
6486
6487            ${DECLARATIONS}
6488
6489            void main()
6490            {
6491                ${SETUP}
6492                out0 = in0.wxww / in1.xwww;
6493                ${OUTPUT}
6494            }
6495        ""
6496    end
6497
6498    case mediump_ivec4_xyxx_yxxx
6499        version 300 es
6500        values
6501        {
6502            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6503            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6504            output ivec4 out0 = [ ivec4(-1, -1, 1, 1) | ivec4(0, 2, 1, 1) | ivec4(0, 2, 1, 1) ];
6505        }
6506
6507        both ""
6508            #version 300 es
6509            precision mediump float;
6510
6511            ${DECLARATIONS}
6512
6513            void main()
6514            {
6515                ${SETUP}
6516                out0 = in0.xyxx / in1.yxxx;
6517                ${OUTPUT}
6518            }
6519        ""
6520    end
6521
6522    case mediump_ivec4_zzzz_zzzz
6523        version 300 es
6524        values
6525        {
6526            input ivec4 in0 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6527            input ivec4 in1 = [ ivec4(-1, 1, -1, 1) | ivec4(1, 2, 3, 4) | ivec4(-1, -2, -4, -9) ];
6528            output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(1, 1, 1, 1) | ivec4(1, 1, 1, 1) ];
6529        }
6530
6531        both ""
6532            #version 300 es
6533            precision mediump float;
6534
6535            ${DECLARATIONS}
6536
6537            void main()
6538            {
6539                ${SETUP}
6540                out0 = in0.zzzz / in1.zzzz;
6541                ${OUTPUT}
6542            }
6543        ""
6544    end
6545
6546
6547end # vector_divide
6548