Lower correlation threshold in flush-finish tests again am: 6455e6f987 am: 84373d7748...
[platform/upstream/VK-GL-CTS.git] / data / gles3 / shaders / swizzle_math_operations.test
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
4 group 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
1639 end # vector_add
1640 group 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
3275 end # vector_subtract
3276 group 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
4911 end # vector_multiply
4912 group 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
6547 end # vector_divide