yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Pankaj MistryImplement GL_NV_gpu_shader5 and enable GL_ARB_gpu_shader5 completely5cffd9a7

main
73.8 KiB2181 linesraw
1#version 150
2#extension GL_NV_gpu_shader5 : enable
3#extension GL_ARB_gpu_shader_fp64 : enable
4
5// Testing integer expression for indexing
6#define SAMPLER_ARRAY_SIZE 10
7uniform sampler2D tex[SAMPLER_ARRAY_SIZE];
8// Testing integer expression for indexing in interface blocks
9uniform ubName { 
10	int i; 
11} ubInst[4];
12
13
14vec2 coord;
15void testIndexing()
16{
17    int i = 0;
18    texture(tex[i], coord); //integer expression for indexing
19    ubInst[i]; //dynamic indexing via ARB_gpu_shader5 or enabled since version 430
20
21}
22
23
24void testImplictConversion() {
25// int ====> uint, int64_t, uint64_t, float, double
26uint var0 = int (0); // int -> uint
27int64_t var1 = int (0); // int -> int64_t
28uint64_t var2 = int (0); // int -> uint64_t
29float var3 = int (0); // int -> float
30double var4 = int (0); // int -> double
31
32
33// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
34uvec2 var5 = ivec2 (0); // ivec2 -> uvec2
35i64vec2 var6 = ivec2 (0); // ivec2 -> i64vec2
36u64vec2 var7 = ivec2 (0); // ivec2 -> u64vec2
37vec2 var8 = ivec2 (0); // ivec2 -> vec2
38dvec2 var9 = ivec2 (0); // ivec2 -> dvec2
39
40
41// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
42uvec3 var10 = ivec3 (0); // ivec3 -> uvec3
43i64vec3 var11 = ivec3 (0); // ivec3 -> i64vec3
44u64vec3 var12 = ivec3 (0); // ivec3 -> u64vec3
45vec3 var13 = ivec3 (0); // ivec3 -> vec3
46dvec3 var14 = ivec3 (0); // ivec3 -> dvec3
47
48
49// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
50uvec4 var15 = ivec4 (0); // ivec4 -> uvec4
51i64vec4 var16 = ivec4 (0); // ivec4 -> i64vec4
52u64vec4 var17 = ivec4 (0); // ivec4 -> u64vec4
53vec4 var18 = ivec4 (0); // ivec4 -> vec4
54dvec4 var19 = ivec4 (0); // ivec4 -> dvec4
55
56
57// int8_t ====> int, int64_t, uint, uint64_t, float, double
58int var20 = int8_t (0); // int8_t -> int
59int64_t var21 = int8_t (0); // int8_t -> int64_t
60uint var22 = int8_t (0); // int8_t -> uint
61uint64_t var23 = int8_t (0); // int8_t -> uint64_t
62float var24 = int8_t (0); // int8_t -> float
63double var25 = int8_t (0); // int8_t -> double
64
65
66// int16_t ====> int, int64_t, uint, uint64_t, float, double
67int var26 = int16_t (0); // int16_t -> int
68int64_t var27 = int16_t (0); // int16_t -> int64_t
69uint var28 = int16_t (0); // int16_t -> uint
70uint64_t var29 = int16_t (0); // int16_t -> uint64_t
71float var30 = int16_t (0); // int16_t -> float
72double var31 = int16_t (0); // int16_t -> double
73
74
75// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
76ivec2 var32 = i8vec2 (0); // i8vec2 -> ivec2
77i64vec2 var33 = i8vec2 (0); // i8vec2 -> i64vec2
78uvec2 var34 = i8vec2 (0); // i8vec2 -> uvec2
79u64vec2 var35 = i8vec2 (0); // i8vec2 -> u64vec2
80vec2 var36 = i8vec2 (0); // i8vec2 -> vec2
81dvec2 var37 = i8vec2 (0); // i8vec2 -> dvec2
82
83
84// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
85ivec2 var38 = i16vec2 (0); // i16vec2 -> ivec2
86i64vec2 var39 = i16vec2 (0); // i16vec2 -> i64vec2
87uvec2 var40 = i16vec2 (0); // i16vec2 -> uvec2
88u64vec2 var41 = i16vec2 (0); // i16vec2 -> u64vec2
89vec2 var42 = i16vec2 (0); // i16vec2 -> vec2
90dvec2 var43 = i16vec2 (0); // i16vec2 -> dvec2
91
92
93// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
94ivec3 var44 = i8vec3 (0); // i8vec3 -> ivec3
95i64vec3 var45 = i8vec3 (0); // i8vec3 -> i64vec3
96uvec3 var46 = i8vec3 (0); // i8vec3 -> uvec3
97u64vec3 var47 = i8vec3 (0); // i8vec3 -> u64vec3
98vec3 var48 = i8vec3 (0); // i8vec3 -> vec3
99dvec3 var49 = i8vec3 (0); // i8vec3 -> dvec3
100
101
102// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
103uvec3 var50 = i16vec3 (0); // i16vec3 -> uvec3
104u64vec3 var51 = i16vec3 (0); // i16vec3 -> u64vec3
105vec3 var52 = i16vec3 (0); // i16vec3 -> vec3
106dvec3 var53 = i16vec3 (0); // i16vec3 -> dvec3
107
108
109// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
110ivec4 var54 = i8vec4 (0); // i8vec4 -> ivec4
111i64vec4 var55 = i8vec4 (0); // i8vec4 -> i64vec4
112uvec4 var56 = i8vec4 (0); // i8vec4 -> uvec4
113u64vec4 var57 = i8vec4 (0); // i8vec4 -> u64vec4
114vec4 var58 = i8vec4 (0); // i8vec4 -> vec4
115dvec4 var59 = i8vec4 (0); // i8vec4 -> dvec4
116
117
118// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
119uvec4 var60 = i16vec4 (0); // i16vec4 -> uvec4
120u64vec4 var61 = i16vec4 (0); // i16vec4 -> u64vec4
121vec4 var62 = i16vec4 (0); // i16vec4 -> vec4
122dvec4 var63 = i16vec4 (0); // i16vec4 -> dvec4
123
124
125// int64_t ====> uint64_t, double
126uint64_t var64 = int64_t (0); // int64_t -> uint64_t
127double var65 = int64_t (0); // int64_t -> double
128
129
130// i64vec2 ====> u64vec2, dvec2
131u64vec2 var66 = i64vec2 (0); // i64vec2 -> u64vec2
132dvec2 var67 = i64vec2 (0); // i64vec2 -> dvec2
133
134
135// i64vec3 ====> u64vec3, dvec3
136u64vec3 var68 = i64vec3 (0); // i64vec3 -> u64vec3
137dvec3 var69 = i64vec3 (0); // i64vec3 -> dvec3
138
139
140// i64vec4 ====> u64vec4, dvec4
141u64vec4 var70 = i64vec4 (0); // i64vec4 -> u64vec4
142dvec4 var71 = i64vec4 (0); // i64vec4 -> dvec4
143
144
145// uint ====> uint64_t, float, double
146uint64_t var72 = uint (0); // uint -> uint64_t
147float var73 = uint (0); // uint -> float
148double var74 = uint (0); // uint -> double
149
150
151// uvec2 ====> u64vec2, vec2, dvec2
152u64vec2 var75 = uvec2 (0); // uvec2 -> u64vec2
153vec2 var76 = uvec2 (0); // uvec2 -> vec2
154dvec2 var77 = uvec2 (0); // uvec2 -> dvec2
155
156
157// uvec3 ====> u64vec3, vec3, dvec3
158u64vec3 var78 = uvec3 (0); // uvec3 -> u64vec3
159vec3 var79 = uvec3 (0); // uvec3 -> vec3
160dvec3 var80 = uvec3 (0); // uvec3 -> dvec3
161
162
163// uvec4 ====> u64vec4, vec4, dvec4
164u64vec4 var81 = uvec4 (0); // uvec4 -> u64vec4
165vec4 var82 = uvec4 (0); // uvec4 -> vec4
166dvec4 var83 = uvec4 (0); // uvec4 -> dvec4
167
168// uint8_t ====> uint, uint64_t, float, double
169uint var84 = uint8_t (0); // uint8_t -> uint
170uint64_t var85 = uint8_t (0); // uint8_t -> uint64_t
171float var86 = uint8_t (0); // uint8_t -> float
172double var87 = uint8_t (0); // uint8_t -> double
173
174
175// uint16_t ====> uint, uint64_t, float, double
176uint var88 = uint16_t (0); // uint16_t -> uint
177uint64_t var89 = uint16_t (0); // uint16_t -> uint64_t
178float var90 = uint16_t (0); // uint16_t -> float
179double var91 = uint16_t (0); // uint16_t -> double
180
181
182// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
183uvec2 var92 = u8vec2 (0); // u8vec2 -> uvec2
184u64vec2 var93 = u8vec2 (0); // u8vec2 -> u64vec2
185vec2 var94 = u8vec2 (0); // u8vec2 -> vec2
186dvec2 var95 = u8vec2 (0); // u8vec2 -> dvec2
187
188
189// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
190uvec2 var96 = u16vec2 (0); // u16vec2 -> uvec2
191u64vec2 var97 = u16vec2 (0); // u16vec2 -> u64vec2
192vec2 var98 = u16vec2 (0); // u16vec2 -> vec2
193dvec2 var99 = u16vec2 (0); // u16vec2 -> dvec2
194
195
196// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
197uvec3 var100 = u8vec3 (0); // u8vec3 -> uvec3
198u64vec3 var101 = u8vec3 (0); // u8vec3 -> u64vec3
199vec3 var102 = u8vec3 (0); // u8vec3 -> vec3
200dvec3 var103 = u8vec3 (0); // u8vec3 -> dvec3
201
202
203// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
204uvec4 var104 = u8vec4 (0); // u8vec4 -> uvec4
205u64vec4 var105 = u8vec4 (0); // u8vec4 -> u64vec4
206vec4 var106 = u8vec4 (0); // u8vec4 -> vec4
207dvec4 var107 = u8vec4 (0); // u8vec4 -> dvec4
208
209
210// uint64_t ====> double
211double var108 = uint64_t (0); // uint64_t -> double
212
213
214// u64vec2 ====> dvec2
215dvec2 var109 = u64vec2 (0); // u64vec2 -> dvec2
216
217
218// u64vec3 ====> dvec3
219dvec3 var110 = u64vec3 (0); // u64vec3 -> dvec3
220
221
222// u64vec4 ====> dvec4
223dvec4 var111 = u64vec4 (0); // u64vec4 -> dvec4
224
225
226// float ====> double
227double var112 = float (0); // float -> double
228
229
230// vec2 ====> dvec2
231dvec2 var113 = vec2 (0); // vec2 -> dvec2
232
233
234// vec3 ====> dvec3
235dvec3 var114 = vec3 (0); // vec3 -> dvec3
236
237
238// vec4 ====> dvec4
239dvec4 var115 = vec4 (0); // vec4 -> dvec4
240
241
242// float16_t ====> float, double
243float var116 = float16_t (0); // float16_t -> float
244double var117 = float16_t (0); // float16_t -> double
245
246
247// f16vec2 ====> vec2, dvec2
248vec2 var118 = f16vec2 (0); // f16vec2 -> vec2
249dvec2 var119 = f16vec2 (0); // f16vec2 -> dvec2
250
251
252// f16vec3 ====> vec3, dvec3
253vec3 var120 = f16vec3 (0); // f16vec3 -> vec3
254dvec3 var121 = f16vec3 (0); // f16vec3 -> dvec3
255
256
257// f16vec4 ====> vec4, dvec4
258vec4 var122 = f16vec4 (0); // f16vec4 -> vec4
259dvec4 var123 = f16vec4 (0); // f16vec4 -> dvec4
260}
261
262
263
264
265uniform sampler2DShadow var16;
266uniform samplerCubeShadow var17;
267uniform sampler2DArrayShadow var18;
268uniform samplerCubeArrayShadow var19;
269uniform sampler2DRectShadow var20;
270uniform samplerCubeArray svar21;
271uniform usamplerCubeArray svar22;
272uniform isamplerCubeArray svar23;
273uniform sampler2D svar24;
274uniform usampler2D svar25;
275uniform isampler2D svar26;
276uniform sampler2DRect svar27;
277uniform usampler2DRect svar28;
278uniform isampler2DRect svar29;
279uniform samplerCube svar30;
280uniform usamplerCube svar31;
281uniform isamplerCube svar32;
282uniform sampler2DArray svar33;
283uniform usampler2DArray svar34;
284uniform isampler2DArray svar35;
285in float fvar0;
286in vec2 fvar1;
287in vec3 fvar2;
288in vec4 fvar3;
289flat in ivec2 Offsets[4];
290
291
292// Test the builtins defined by ARB_gpu_shader5
293void testbuiltinARB() {
294float var0;
295vec2 var1;
296vec3 var2;
297vec4 var3;
298int var4;
299ivec2 var5;
300ivec3 var6;
301ivec4 var7;
302uint var8;
303uvec2 var9;
304uvec3 var10;
305uvec4 var11;
306bool var12;
307bvec2 var13;
308bvec3 var14;
309bvec4 var15;
310
311// Function Signature : genType fma(genType, genType, genType)
312var0 = fma(var0, var0, var0);
313var1 = fma(var1, var1, var1);
314var2 = fma(var2, var2, var2);
315var3 = fma(var3, var3, var3);
316// Function Signature : genType frexp(genType, genIType)
317var0 = frexp(var0, var4);
318var1 = frexp(var1, var5);
319var2 = frexp(var2, var6);
320var3 = frexp(var3, var7);
321
322// Function Signature : genType ldexp(genType, genIType)
323var0 = ldexp(var0, var4);
324var1 = ldexp(var1, var5);
325var2 = ldexp(var2, var6);
326var3 = ldexp(var3, var7);
327
328// Function Signature : genIType bitfieldExtract(genIType, int, int)
329var4 = bitfieldExtract(var4, var4, var4);
330var5 = bitfieldExtract(var5, var4, var4);
331var6 = bitfieldExtract(var6, var4, var4);
332var7 = bitfieldExtract(var7, var4, var4);
333// Function Signature : genUType bitfieldExtract(genUType, int, int)
334var8 = bitfieldExtract(var8, var4, var4);
335var9 = bitfieldExtract(var9, var4, var4);
336var10 = bitfieldExtract(var10, var4, var4);
337var11 = bitfieldExtract(var11, var4, var4);
338// Function Signature : genIType bitfieldInsert(genIType, genIType, int, int)
339var4 = bitfieldInsert(var4, var4, var4, var4);
340var5 = bitfieldInsert(var5, var5, var4, var4);
341var6 = bitfieldInsert(var6, var6, var4, var4);
342var7 = bitfieldInsert(var7, var7, var4, var4);
343// Function Signature : genUType bitfieldInsert(genUType, genUType, int, int)
344var8 = bitfieldInsert(var8, var8, var4, var4);
345var9 = bitfieldInsert(var9, var9, var4, var4);
346var10 = bitfieldInsert(var10, var10, var4, var4);
347var11 = bitfieldInsert(var11, var11, var4, var4);
348// Function Signature : genIType bitfieldReverse(genIType)
349var4 = bitfieldReverse(var4);
350var5 = bitfieldReverse(var5);
351var6 = bitfieldReverse(var6);
352var7 = bitfieldReverse(var7);
353// Function Signature : genUType bitfieldReverse(genUType)
354var8 = bitfieldReverse(var8);
355var9 = bitfieldReverse(var9);
356var10 = bitfieldReverse(var10);
357var11 = bitfieldReverse(var11);
358// Function Signature : genIType bitCount(genIType)
359var4 = bitCount(var4);
360var5 = bitCount(var5);
361var6 = bitCount(var6);
362var7 = bitCount(var7);
363// Function Signature : genUType bitCount(genUType)
364var8 = bitCount(var8);
365var9 = bitCount(var9);
366var10 = bitCount(var10);
367var11 = bitCount(var11);
368// Function Signature : genUType findMSB(genUType)
369var8 = findMSB(var8);
370var9 = findMSB(var9);
371var10 = findMSB(var10);
372var11 = findMSB(var11);
373// Function Signature : genIType findLSB(genIType)
374var4 = findMSB(var4);
375var5 = findMSB(var5);
376var6 = findMSB(var6);
377var7 = findMSB(var7);
378// Function Signature : genIType findLSB(genIType)
379var4 = findLSB(var4);
380var5 = findLSB(var5);
381var6 = findLSB(var6);
382var7 = findLSB(var7);
383// Function Signature : genUType findLSB(genUType)
384var8 = findLSB(var8);
385var9 = findLSB(var9);
386var10 = findLSB(var10);
387var11 = findLSB(var11);
388
389// Function Signature : genIType floatBitsToInt(genType)
390var4 = floatBitsToInt(var0);
391var5 = floatBitsToInt(var1);
392var6 = floatBitsToInt(var2);
393var7 = floatBitsToInt(var3);
394// Function Signature : genUType floatBitsToUint(genType)
395var8 = floatBitsToUint(var0);
396var9 = floatBitsToUint(var1);
397var10 = floatBitsToUint(var2);
398var11 = floatBitsToUint(var3);
399// Function Signature : genType intBitsToFloat(genIType)
400var0 = intBitsToFloat(var4);
401var1 = intBitsToFloat(var5);
402var2 = intBitsToFloat(var6);
403var3 = intBitsToFloat(var7);
404// Function Signature : genType uintBitsToFloat(genUType)
405var0 = uintBitsToFloat(var8);
406var1 = uintBitsToFloat(var9);
407var2 = uintBitsToFloat(var10);
408var3 = uintBitsToFloat(var11);
409
410// Function Signature : genUType uaddCarry(genUType, genUType, genUType)
411var8 = uaddCarry(var8, var8, var8);
412var9 = uaddCarry(var9, var9, var9);
413var10 = uaddCarry(var10, var10, var10);
414var11 = uaddCarry(var11, var11, var11);
415// Function Signature : genUType usubBorrow(genUType, genUType, genUType)
416var8 = usubBorrow(var8, var8, var8);
417var9 = usubBorrow(var9, var9, var9);
418var10 = usubBorrow(var10, var10, var10);
419var11 = usubBorrow(var11, var11, var11);
420// Function Signature : void umulExtended(genUType, genUType, genUType, genUType)
421umulExtended(var8, var8, var8, var8);
422umulExtended(var9, var9, var9, var9);
423umulExtended(var10, var10, var10, var10);
424umulExtended(var11, var11, var11, var11);
425// Function Signature : void imulExtended(genIType, genIType, genIType, genIType)
426imulExtended(var4, var4, var4, var4);
427imulExtended(var5, var5, var5, var5);
428imulExtended(var6, var6, var6, var6);
429imulExtended(var7, var7, var7, var7);
430// Generate specific builtins
431var8 = packUnorm2x16(var1);
432var8 = packUnorm4x8(var3);
433var8 = packSnorm4x8(var3);
434
435var1 = unpackUnorm2x16(var8);
436var3 = unpackUnorm4x8(var8);
437var3 = unpackSnorm4x8(var8);
438
439var0 = interpolateAtCentroid(fvar0);
440var1 = interpolateAtCentroid(fvar1);
441var2 = interpolateAtCentroid(fvar2);
442var3 = interpolateAtCentroid(fvar3);
443var0 = interpolateAtSample(fvar0, var4);
444var1 = interpolateAtSample(fvar1, var4);
445var2 = interpolateAtSample(fvar2, var4);
446var3 = interpolateAtSample(fvar3, var4);
447var0 = interpolateAtOffset(fvar0, var1);
448var1 = interpolateAtOffset(fvar1, var1);
449var2 = interpolateAtOffset(fvar2, var1);
450var3 = interpolateAtOffset(fvar3, var1);
451
452// Generate textue specific intrinsics
453// Function Signature : gvec4 textureGatherOffset(gsampler2D, vec2, ivec2)
454var3 = textureGatherOffset(svar24, var1, var5);
455var11 = textureGatherOffset(svar25, var1, var5);
456var7 = textureGatherOffset(svar26, var1, var5);
457
458// Function Signature : gvec4 textureGatherOffset(gsampler2DArray, vec3, ivec2)
459var3 = textureGatherOffset(svar33, var2, var5);
460var11 = textureGatherOffset(svar34, var2, var5);
461var7 = textureGatherOffset(svar35, var2, var5);
462// Function Signature : gvec4 textureGatherOffset(gsampler2DRect, vec2, ivec2)
463var3 = textureGatherOffset(svar27, var1, var5);
464var11 = textureGatherOffset(svar28, var1, var5);
465var7 = textureGatherOffset(svar29, var1, var5);
466// Function Signature : vec4 textureGatherOffset(sampler2DShadow, vec2, float, ivec2)
467var3 = textureGatherOffset(var16, var1, var0, var5);
468// Function Signature : vec4 textureGatherOffset(sampler2DArrayShadow, vec3, float, ivec2)
469var3 = textureGatherOffset(var18, var2, var0, var5);
470// Function Signature : vec4 textureGatherOffset(sampler2DRectShadow, vec2, float, ivec2)
471var3 = textureGatherOffset(var20, var1, var0, var5);
472
473// Function Signature : gvec4 textureGather(gsampler2D, vec2)
474var3 = textureGather(svar24, var1);
475var11 = textureGather(svar25, var1);
476var7 = textureGather(svar26, var1);
477// Function Signature : gvec4 textureGather(gsampler2DArray, vec3)
478var3 = textureGather(svar33, var2);
479var11 = textureGather(svar34, var2);
480var7 = textureGather(svar35, var2);
481// Function Signature : gvec4 textureGather(gsamplerCube, vec3)
482var3 = textureGather(svar30, var2);
483var11 = textureGather(svar31, var2);
484var7 = textureGather(svar32, var2);
485// Function Signature : gvec4 textureGather(gsamplerCubeArray, vec4)
486var3 = textureGather(svar21, var3);
487var11 = textureGather(svar22, var3);
488var7 = textureGather(svar23, var3);
489// Function Signature : gvec4 textureGather(gsampler2DRect, vec4)
490var3 = textureGather(svar27, var1);
491var11 = textureGather(svar28, var1);
492var7 = textureGather(svar29, var1);
493// Function Signature : vec4 textureGather(sampler2DShadow, vec2, float)
494var3 = textureGather(var16, var1, var0);
495// Function Signature : vec4 textureGather(sampler2DArrayShadow, vec3, float)
496var3 = textureGather(var18, var2, var0);
497// Function Signature : vec4 textureGather(samplerCubeShadow, vec3, float)
498var3 = textureGather(var17, var2, var0);
499// Function Signature : vec4 textureGather(samplerCubeArrayShadow, vec4, float)
500var3 = textureGather(var19, var3, var0);
501// Function Signature : vec4 textureGather(sampler2DRectShadow, vec2, float)
502var3 = textureGather(var20, var1, var0);
503
504// Function Signature : gvec4 textureGatherOffsets(gsampler2D, vec2, ivec2[4])
505var3 = textureGatherOffsets(svar24, var1, Offsets);
506var11 = textureGatherOffsets(svar25, var1, Offsets);
507var7 = textureGatherOffsets(svar26, var1, Offsets);
508// Function Signature : gvec4 textureGatherOffsets(gsampler2DArray, vec2, ivec2[4])
509var3 = textureGatherOffsets(svar33, var2, Offsets);
510var11 = textureGatherOffsets(svar34, var2, Offsets);
511var7 = textureGatherOffsets(svar35, var2, Offsets);
512// Function Signature : gvec4 textureGatherOffsets(gsampler2DRect, vec2, ivec2[4])
513var3 = textureGatherOffsets(svar27, var1, Offsets);
514var11 = textureGatherOffsets(svar28, var1, Offsets);
515var7 = textureGatherOffsets(svar29, var1, Offsets);
516// Function Signature : vec4 textureGatherOffsets(sampler2DShadow, vec2, float, ivec2[4])
517var3 = textureGatherOffsets(var16, var1, var0, Offsets);
518// Function Signature : vec4 textureGatherOffsets(sampler2DArrayShadow, vec3, float, ivec2[4])
519var3 = textureGatherOffsets(var18, var2, var0, Offsets);
520// Function Signature : vec4 textureGatherOffsets(sampler2DRectShadow, vec2, float, ivec2[4])
521var3 = textureGatherOffsets(var20, var1, var0, Offsets);
522}
523
524void testDataTypes()
525{
526    // 8 bit data types
527    int8_t    var1;
528    i8vec2    var2;
529    i8vec3    var3;
530    i8vec4    var4;
531    uint8_t   var17;
532    u8vec2    var18;
533    u8vec3    var19;
534    u8vec4    var20;
535    // 16 bit data types
536    int16_t   var5;
537    i16vec2   var6;
538    i16vec3   var7;
539    i16vec4   var8;
540    uint16_t  var21;
541    u16vec2   var22;
542    u16vec3   var23;
543    u16vec4   var24;
544    // 32 bit data types
545    int32_t   var9;
546    i32vec2   var10;
547    i32vec3   var11;
548    i32vec4   var12;
549    uint32_t  var25; 
550    u32vec2   var26;
551    u32vec3   var27;
552    u32vec4   var28;
553
554    int64_t   var13;
555    i64vec2   var14;
556    i64vec3   var15;
557    i64vec4   var16;
558    uint64_t  var29;
559    u64vec2   var30;
560    u64vec3   var31;
561    u64vec4   var32;
562
563    float16_t var33;
564    f16vec2   var34;
565    f16vec3   var35;
566    f16vec4   var36;
567    float32_t var37;
568    f32vec2   var38;
569    f32vec3   var39;
570    f32vec4   var40;
571
572    float64_t var41; // needs GL_ARB_gpu_shader_fp64
573    f64vec2   var42; // needs GL_ARB_gpu_shader_fp64
574    f64vec3   var43; // needs GL_ARB_gpu_shader_fp64
575    f64vec4   var44; // needs GL_ARB_gpu_shader_fp64
576}
577
578
579// Test explicit data in and out
580flat in int8_t    var1_in;
581flat in int16_t   var5_in;
582flat in int32_t   var9_in;
583flat in int64_t   var13_in;
584flat in float16_t var33_in;
585flat in float64_t var41_in;
586flat in double var42_in;
587
588
589out int8_t    var11_out;
590out int16_t   var51_out;
591out int32_t   var91_out;
592//out int64_t   var131; // Error: TBD Needs to be confirmed
593out float16_t var331_out;
594
595
596void testConstructors()
597{
598      uint8_t uiv = uint8_t(1);
599      double dv = 1.0;
600      int16_t iv = int16_t(1);
601      bool bv = false;
602      float(uiv);      // converts an 8-bit uint value to a float
603      int64_t(dv);     // converts a double value to a 64-bit int
604      float64_t(iv);  // converts a 16-bit int value to a 64-bit float
605      uint16_t(bv);      // converts a Boolean value to a 16-bit uint
606
607}
608
609void testBinaryOps()
610{
611int var0 = int( 0 );
612uint var1 = uint( 1 );
613int64_t var2 = int64_t( 2 );
614uint64_t var3 = uint64_t( 3 );
615float var4 = float( 4 );
616double var5 = double( 5 );
617ivec2 var6 = ivec2( 6 );
618uvec2 var7 = uvec2( 7 );
619i64vec2 var8 = i64vec2( 8 );
620u64vec2 var9 = u64vec2( 9 );
621vec2 var10 = vec2( 10 );
622dvec2 var11 = dvec2( 11 );
623ivec3 var12 = ivec3( 12 );
624uvec3 var13 = uvec3( 13 );
625i64vec3 var14 = i64vec3( 14 );
626u64vec3 var15 = u64vec3( 15 );
627vec3 var16 = vec3( 16 );
628dvec3 var17 = dvec3( 17 );
629ivec4 var18 = ivec4( 18 );
630uvec4 var19 = uvec4( 19 );
631i64vec4 var20 = i64vec4( 20 );
632u64vec4 var21 = u64vec4( 21 );
633vec4 var22 = vec4( 22 );
634dvec4 var23 = dvec4( 23 );
635int8_t var24 = int8_t( 24 );
636int16_t var25 = int16_t( 25 );
637i8vec2 var26 = i8vec2( 26 );
638i16vec2 var27 = i16vec2( 27 );
639i8vec3 var28 = i8vec3( 28 );
640i16vec3 var29 = i16vec3( 29 );
641i8vec4 var30 = i8vec4( 30 );
642i16vec4 var31 = i16vec4( 31 );
643uint8_t var32 = uint8_t( 32 );
644uint16_t var33 = uint16_t( 33 );
645u8vec2 var34 = u8vec2( 34 );
646u16vec2 var35 = u16vec2( 35 );
647u8vec3 var36 = u8vec3( 36 );
648u8vec4 var37 = u8vec4( 37 );
649float16_t var38 = float16_t( 38 );
650f16vec2 var39 = f16vec2( 39 );
651f16vec3 var40 = f16vec3( 40 );
652f16vec4 var41 = f16vec4( 41 );
653// Testing for binary operation +
654// int ====> uint, int64_t, uint64_t, float, double
655uint var42 = var1 + var0;
656int64_t var43 = var2 + var0;
657uint64_t var44 = var3 + var0;
658float var45 = var4 + var0;
659double var46 = var5 + var0;
660// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
661uvec2 var47 = var7 + var6;
662i64vec2 var48 = var8 + var6;
663u64vec2 var49 = var9 + var6;
664vec2 var50 = var10 + var6;
665dvec2 var51 = var11 + var6;
666// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
667uvec3 var52 = var13 + var12;
668i64vec3 var53 = var14 + var12;
669u64vec3 var54 = var15 + var12;
670vec3 var55 = var16 + var12;
671dvec3 var56 = var17 + var12;
672// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
673uvec4 var57 = var19 + var18;
674i64vec4 var58 = var20 + var18;
675u64vec4 var59 = var21 + var18;
676vec4 var60 = var22 + var18;
677dvec4 var61 = var23 + var18;
678// int8_t ====> int, int64_t, uint, uint64_t, float, double
679int var62 = var0 + var24;
680int64_t var63 = var2 + var24;
681uint var64 = var1 + var24;
682uint64_t var65 = var3 + var24;
683float var66 = var4 + var24;
684double var67 = var5 + var24;
685// int16_t ====> int, int64_t, uint, uint64_t, float, double
686int var68 = var0 + var25;
687int64_t var69 = var2 + var25;
688uint var70 = var1 + var25;
689uint64_t var71 = var3 + var25;
690float var72 = var4 + var25;
691double var73 = var5 + var25;
692// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
693ivec2 var74 = var6 + var26;
694i64vec2 var75 = var8 + var26;
695uvec2 var76 = var7 + var26;
696u64vec2 var77 = var9 + var26;
697vec2 var78 = var10 + var26;
698dvec2 var79 = var11 + var26;
699// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
700ivec2 var80 = var6 + var27;
701i64vec2 var81 = var8 + var27;
702uvec2 var82 = var7 + var27;
703u64vec2 var83 = var9 + var27;
704vec2 var84 = var10 + var27;
705dvec2 var85 = var11 + var27;
706// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
707ivec3 var86 = var12 + var28;
708i64vec3 var87 = var14 + var28;
709uvec3 var88 = var13 + var28;
710u64vec3 var89 = var15 + var28;
711vec3 var90 = var16 + var28;
712dvec3 var91 = var17 + var28;
713// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
714uvec3 var92 = var13 + var29;
715u64vec3 var93 = var15 + var29;
716vec3 var94 = var16 + var29;
717dvec3 var95 = var17 + var29;
718// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
719ivec4 var96 = var18 + var30;
720i64vec4 var97 = var20 + var30;
721uvec4 var98 = var19 + var30;
722u64vec4 var99 = var21 + var30;
723vec4 var100 = var22 + var30;
724dvec4 var101 = var23 + var30;
725// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
726uvec4 var102 = var19 + var31;
727u64vec4 var103 = var21 + var31;
728vec4 var104 = var22 + var31;
729dvec4 var105 = var23 + var31;
730// int64_t ====> uint64_t, double
731uint64_t var106 = var3 + var2;
732double var107 = var5 + var2;
733// i64vec2 ====> u64vec2, dvec2
734u64vec2 var108 = var9 + var8;
735dvec2 var109 = var11 + var8;
736// i64vec3 ====> u64vec3, dvec3
737u64vec3 var110 = var15 + var14;
738dvec3 var111 = var17 + var14;
739// i64vec4 ====> u64vec4, dvec4
740u64vec4 var112 = var21 + var20;
741dvec4 var113 = var23 + var20;
742// uint ====> uint64_t, float, double
743uint64_t var114 = var3 + var1;
744float var115 = var4 + var1;
745double var116 = var5 + var1;
746// uvec2 ====> u64vec2, vec2, dvec2
747u64vec2 var117 = var9 + var7;
748vec2 var118 = var10 + var7;
749dvec2 var119 = var11 + var7;
750// uvec3 ====> u64vec3, vec3, dvec3
751u64vec3 var120 = var15 + var13;
752vec3 var121 = var16 + var13;
753dvec3 var122 = var17 + var13;
754// uvec4 ====> u64vec4, vec4, dvec4
755u64vec4 var123 = var21 + var19;
756vec4 var124 = var22 + var19;
757dvec4 var125 = var23 + var19;
758// uint8_t ====> uint, uint64_t, float, double
759uint var126 = var1 + var32;
760uint64_t var127 = var3 + var32;
761float var128 = var4 + var32;
762double var129 = var5 + var32;
763// uint16_t ====> uint, uint64_t, float, double
764uint var130 = var1 + var33;
765uint64_t var131 = var3 + var33;
766float var132 = var4 + var33;
767double var133 = var5 + var33;
768// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
769uvec2 var134 = var7 + var34;
770u64vec2 var135 = var9 + var34;
771vec2 var136 = var10 + var34;
772dvec2 var137 = var11 + var34;
773// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
774uvec2 var138 = var7 + var35;
775u64vec2 var139 = var9 + var35;
776vec2 var140 = var10 + var35;
777dvec2 var141 = var11 + var35;
778// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
779uvec3 var142 = var13 + var36;
780u64vec3 var143 = var15 + var36;
781vec3 var144 = var16 + var36;
782dvec3 var145 = var17 + var36;
783// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
784uvec4 var146 = var19 + var37;
785u64vec4 var147 = var21 + var37;
786vec4 var148 = var22 + var37;
787dvec4 var149 = var23 + var37;
788// uint64_t ====> double
789double var150 = var5 + var3;
790// u64vec2 ====> dvec2
791dvec2 var151 = var11 + var9;
792// u64vec3 ====> dvec3
793dvec3 var152 = var17 + var15;
794// u64vec4 ====> dvec4
795dvec4 var153 = var23 + var21;
796// float ====> double
797double var154 = var5 + var4;
798// vec2 ====> dvec2
799dvec2 var155 = var11 + var10;
800// vec3 ====> dvec3
801dvec3 var156 = var17 + var16;
802// vec4 ====> dvec4
803dvec4 var157 = var23 + var22;
804// float16_t ====> float, double
805float var158 = var4 + var38;
806double var159 = var5 + var38;
807// f16vec2 ====> vec2, dvec2
808vec2 var160 = var10 + var39;
809dvec2 var161 = var11 + var39;
810// f16vec3 ====> vec3, dvec3
811vec3 var162 = var16 + var40;
812dvec3 var163 = var17 + var40;
813// f16vec4 ====> vec4, dvec4
814vec4 var164 = var22 + var41;
815dvec4 var165 = var23 + var41;
816// Testing for binary operation -
817// int ====> uint, int64_t, uint64_t, float, double
818uint var166 = var1 - var0;
819int64_t var167 = var2 - var0;
820uint64_t var168 = var3 - var0;
821float var169 = var4 - var0;
822double var170 = var5 - var0;
823// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
824uvec2 var171 = var7 - var6;
825i64vec2 var172 = var8 - var6;
826u64vec2 var173 = var9 - var6;
827vec2 var174 = var10 - var6;
828dvec2 var175 = var11 - var6;
829// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
830uvec3 var176 = var13 - var12;
831i64vec3 var177 = var14 - var12;
832u64vec3 var178 = var15 - var12;
833vec3 var179 = var16 - var12;
834dvec3 var180 = var17 - var12;
835// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
836uvec4 var181 = var19 - var18;
837i64vec4 var182 = var20 - var18;
838u64vec4 var183 = var21 - var18;
839vec4 var184 = var22 - var18;
840dvec4 var185 = var23 - var18;
841// int8_t ====> int, int64_t, uint, uint64_t, float, double
842int var186 = var0 - var24;
843int64_t var187 = var2 - var24;
844uint var188 = var1 - var24;
845uint64_t var189 = var3 - var24;
846float var190 = var4 - var24;
847double var191 = var5 - var24;
848// int16_t ====> int, int64_t, uint, uint64_t, float, double
849int var192 = var0 - var25;
850int64_t var193 = var2 - var25;
851uint var194 = var1 - var25;
852uint64_t var195 = var3 - var25;
853float var196 = var4 - var25;
854double var197 = var5 - var25;
855// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
856ivec2 var198 = var6 - var26;
857i64vec2 var199 = var8 - var26;
858uvec2 var200 = var7 - var26;
859u64vec2 var201 = var9 - var26;
860vec2 var202 = var10 - var26;
861dvec2 var203 = var11 - var26;
862// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
863ivec2 var204 = var6 - var27;
864i64vec2 var205 = var8 - var27;
865uvec2 var206 = var7 - var27;
866u64vec2 var207 = var9 - var27;
867vec2 var208 = var10 - var27;
868dvec2 var209 = var11 - var27;
869// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
870ivec3 var210 = var12 - var28;
871i64vec3 var211 = var14 - var28;
872uvec3 var212 = var13 - var28;
873u64vec3 var213 = var15 - var28;
874vec3 var214 = var16 - var28;
875dvec3 var215 = var17 - var28;
876// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
877uvec3 var216 = var13 - var29;
878u64vec3 var217 = var15 - var29;
879vec3 var218 = var16 - var29;
880dvec3 var219 = var17 - var29;
881// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
882ivec4 var220 = var18 - var30;
883i64vec4 var221 = var20 - var30;
884uvec4 var222 = var19 - var30;
885u64vec4 var223 = var21 - var30;
886vec4 var224 = var22 - var30;
887dvec4 var225 = var23 - var30;
888// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
889uvec4 var226 = var19 - var31;
890u64vec4 var227 = var21 - var31;
891vec4 var228 = var22 - var31;
892dvec4 var229 = var23 - var31;
893// int64_t ====> uint64_t, double
894uint64_t var230 = var3 - var2;
895double var231 = var5 - var2;
896// i64vec2 ====> u64vec2, dvec2
897u64vec2 var232 = var9 - var8;
898dvec2 var233 = var11 - var8;
899// i64vec3 ====> u64vec3, dvec3
900u64vec3 var234 = var15 - var14;
901dvec3 var235 = var17 - var14;
902// i64vec4 ====> u64vec4, dvec4
903u64vec4 var236 = var21 - var20;
904dvec4 var237 = var23 - var20;
905// uint ====> uint64_t, float, double
906uint64_t var238 = var3 - var1;
907float var239 = var4 - var1;
908double var240 = var5 - var1;
909// uvec2 ====> u64vec2, vec2, dvec2
910u64vec2 var241 = var9 - var7;
911vec2 var242 = var10 - var7;
912dvec2 var243 = var11 - var7;
913// uvec3 ====> u64vec3, vec3, dvec3
914u64vec3 var244 = var15 - var13;
915vec3 var245 = var16 - var13;
916dvec3 var246 = var17 - var13;
917// uvec4 ====> u64vec4, vec4, dvec4
918u64vec4 var247 = var21 - var19;
919vec4 var248 = var22 - var19;
920dvec4 var249 = var23 - var19;
921// uint8_t ====> uint, uint64_t, float, double
922uint var250 = var1 - var32;
923uint64_t var251 = var3 - var32;
924float var252 = var4 - var32;
925double var253 = var5 - var32;
926// uint16_t ====> uint, uint64_t, float, double
927uint var254 = var1 - var33;
928uint64_t var255 = var3 - var33;
929float var256 = var4 - var33;
930double var257 = var5 - var33;
931// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
932uvec2 var258 = var7 - var34;
933u64vec2 var259 = var9 - var34;
934vec2 var260 = var10 - var34;
935dvec2 var261 = var11 - var34;
936// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
937uvec2 var262 = var7 - var35;
938u64vec2 var263 = var9 - var35;
939vec2 var264 = var10 - var35;
940dvec2 var265 = var11 - var35;
941// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
942uvec3 var266 = var13 - var36;
943u64vec3 var267 = var15 - var36;
944vec3 var268 = var16 - var36;
945dvec3 var269 = var17 - var36;
946// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
947uvec4 var270 = var19 - var37;
948u64vec4 var271 = var21 - var37;
949vec4 var272 = var22 - var37;
950dvec4 var273 = var23 - var37;
951// uint64_t ====> double
952double var274 = var5 - var3;
953// u64vec2 ====> dvec2
954dvec2 var275 = var11 - var9;
955// u64vec3 ====> dvec3
956dvec3 var276 = var17 - var15;
957// u64vec4 ====> dvec4
958dvec4 var277 = var23 - var21;
959// float ====> double
960double var278 = var5 - var4;
961// vec2 ====> dvec2
962dvec2 var279 = var11 - var10;
963// vec3 ====> dvec3
964dvec3 var280 = var17 - var16;
965// vec4 ====> dvec4
966dvec4 var281 = var23 - var22;
967// float16_t ====> float, double
968float var282 = var4 - var38;
969double var283 = var5 - var38;
970// f16vec2 ====> vec2, dvec2
971vec2 var284 = var10 - var39;
972dvec2 var285 = var11 - var39;
973// f16vec3 ====> vec3, dvec3
974vec3 var286 = var16 - var40;
975dvec3 var287 = var17 - var40;
976// f16vec4 ====> vec4, dvec4
977vec4 var288 = var22 - var41;
978dvec4 var289 = var23 - var41;
979// Testing for binary operation *
980// int ====> uint, int64_t, uint64_t, float, double
981uint var290 = var1 * var0;
982int64_t var291 = var2 * var0;
983uint64_t var292 = var3 * var0;
984float var293 = var4 * var0;
985double var294 = var5 * var0;
986// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
987uvec2 var295 = var7 * var6;
988i64vec2 var296 = var8 * var6;
989u64vec2 var297 = var9 * var6;
990vec2 var298 = var10 * var6;
991dvec2 var299 = var11 * var6;
992// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
993uvec3 var300 = var13 * var12;
994i64vec3 var301 = var14 * var12;
995u64vec3 var302 = var15 * var12;
996vec3 var303 = var16 * var12;
997dvec3 var304 = var17 * var12;
998// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
999uvec4 var305 = var19 * var18;
1000i64vec4 var306 = var20 * var18;
1001u64vec4 var307 = var21 * var18;
1002vec4 var308 = var22 * var18;
1003dvec4 var309 = var23 * var18;
1004// int8_t ====> int, int64_t, uint, uint64_t, float, double
1005int var310 = var0 * var24;
1006int64_t var311 = var2 * var24;
1007uint var312 = var1 * var24;
1008uint64_t var313 = var3 * var24;
1009float var314 = var4 * var24;
1010double var315 = var5 * var24;
1011// int16_t ====> int, int64_t, uint, uint64_t, float, double
1012int var316 = var0 * var25;
1013int64_t var317 = var2 * var25;
1014uint var318 = var1 * var25;
1015uint64_t var319 = var3 * var25;
1016float var320 = var4 * var25;
1017double var321 = var5 * var25;
1018// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1019ivec2 var322 = var6 * var26;
1020i64vec2 var323 = var8 * var26;
1021uvec2 var324 = var7 * var26;
1022u64vec2 var325 = var9 * var26;
1023vec2 var326 = var10 * var26;
1024dvec2 var327 = var11 * var26;
1025// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1026ivec2 var328 = var6 * var27;
1027i64vec2 var329 = var8 * var27;
1028uvec2 var330 = var7 * var27;
1029u64vec2 var331 = var9 * var27;
1030vec2 var332 = var10 * var27;
1031dvec2 var333 = var11 * var27;
1032// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
1033ivec3 var334 = var12 * var28;
1034i64vec3 var335 = var14 * var28;
1035uvec3 var336 = var13 * var28;
1036u64vec3 var337 = var15 * var28;
1037vec3 var338 = var16 * var28;
1038dvec3 var339 = var17 * var28;
1039// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
1040uvec3 var340 = var13 * var29;
1041u64vec3 var341 = var15 * var29;
1042vec3 var342 = var16 * var29;
1043dvec3 var343 = var17 * var29;
1044// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
1045ivec4 var344 = var18 * var30;
1046i64vec4 var345 = var20 * var30;
1047uvec4 var346 = var19 * var30;
1048u64vec4 var347 = var21 * var30;
1049vec4 var348 = var22 * var30;
1050dvec4 var349 = var23 * var30;
1051// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
1052uvec4 var350 = var19 * var31;
1053u64vec4 var351 = var21 * var31;
1054vec4 var352 = var22 * var31;
1055dvec4 var353 = var23 * var31;
1056// int64_t ====> uint64_t, double
1057uint64_t var354 = var3 * var2;
1058double var355 = var5 * var2;
1059// i64vec2 ====> u64vec2, dvec2
1060u64vec2 var356 = var9 * var8;
1061dvec2 var357 = var11 * var8;
1062// i64vec3 ====> u64vec3, dvec3
1063u64vec3 var358 = var15 * var14;
1064dvec3 var359 = var17 * var14;
1065// i64vec4 ====> u64vec4, dvec4
1066u64vec4 var360 = var21 * var20;
1067dvec4 var361 = var23 * var20;
1068// uint ====> uint64_t, float, double
1069uint64_t var362 = var3 * var1;
1070float var363 = var4 * var1;
1071double var364 = var5 * var1;
1072// uvec2 ====> u64vec2, vec2, dvec2
1073u64vec2 var365 = var9 * var7;
1074vec2 var366 = var10 * var7;
1075dvec2 var367 = var11 * var7;
1076// uvec3 ====> u64vec3, vec3, dvec3
1077u64vec3 var368 = var15 * var13;
1078vec3 var369 = var16 * var13;
1079dvec3 var370 = var17 * var13;
1080// uvec4 ====> u64vec4, vec4, dvec4
1081u64vec4 var371 = var21 * var19;
1082vec4 var372 = var22 * var19;
1083dvec4 var373 = var23 * var19;
1084// uint8_t ====> uint, uint64_t, float, double
1085uint var374 = var1 * var32;
1086uint64_t var375 = var3 * var32;
1087float var376 = var4 * var32;
1088double var377 = var5 * var32;
1089// uint16_t ====> uint, uint64_t, float, double
1090uint var378 = var1 * var33;
1091uint64_t var379 = var3 * var33;
1092float var380 = var4 * var33;
1093double var381 = var5 * var33;
1094// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
1095uvec2 var382 = var7 * var34;
1096u64vec2 var383 = var9 * var34;
1097vec2 var384 = var10 * var34;
1098dvec2 var385 = var11 * var34;
1099// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
1100uvec2 var386 = var7 * var35;
1101u64vec2 var387 = var9 * var35;
1102vec2 var388 = var10 * var35;
1103dvec2 var389 = var11 * var35;
1104// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
1105uvec3 var390 = var13 * var36;
1106u64vec3 var391 = var15 * var36;
1107vec3 var392 = var16 * var36;
1108dvec3 var393 = var17 * var36;
1109// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
1110uvec4 var394 = var19 * var37;
1111u64vec4 var395 = var21 * var37;
1112vec4 var396 = var22 * var37;
1113dvec4 var397 = var23 * var37;
1114// uint64_t ====> double
1115double var398 = var5 * var3;
1116// u64vec2 ====> dvec2
1117dvec2 var399 = var11 * var9;
1118// u64vec3 ====> dvec3
1119dvec3 var400 = var17 * var15;
1120// u64vec4 ====> dvec4
1121dvec4 var401 = var23 * var21;
1122// float ====> double
1123double var402 = var5 * var4;
1124// vec2 ====> dvec2
1125dvec2 var403 = var11 * var10;
1126// vec3 ====> dvec3
1127dvec3 var404 = var17 * var16;
1128// vec4 ====> dvec4
1129dvec4 var405 = var23 * var22;
1130// float16_t ====> float, double
1131float var406 = var4 * var38;
1132double var407 = var5 * var38;
1133// f16vec2 ====> vec2, dvec2
1134vec2 var408 = var10 * var39;
1135dvec2 var409 = var11 * var39;
1136// f16vec3 ====> vec3, dvec3
1137vec3 var410 = var16 * var40;
1138dvec3 var411 = var17 * var40;
1139// f16vec4 ====> vec4, dvec4
1140vec4 var412 = var22 * var41;
1141dvec4 var413 = var23 * var41;
1142}
1143
1144void testModuloOps() {
1145int var0 = int( 0 );
1146uint var1 = uint( 1 );
1147int64_t var2 = int64_t( 2 );
1148uint64_t var3 = uint64_t( 3 );
1149float var4 = float( 4 );
1150double var5 = double( 5 );
1151ivec2 var6 = ivec2( 6 );
1152uvec2 var7 = uvec2( 7 );
1153i64vec2 var8 = i64vec2( 8 );
1154u64vec2 var9 = u64vec2( 9 );
1155vec2 var10 = vec2( 10 );
1156dvec2 var11 = dvec2( 11 );
1157ivec3 var12 = ivec3( 12 );
1158uvec3 var13 = uvec3( 13 );
1159i64vec3 var14 = i64vec3( 14 );
1160u64vec3 var15 = u64vec3( 15 );
1161vec3 var16 = vec3( 16 );
1162dvec3 var17 = dvec3( 17 );
1163ivec4 var18 = ivec4( 18 );
1164uvec4 var19 = uvec4( 19 );
1165i64vec4 var20 = i64vec4( 20 );
1166u64vec4 var21 = u64vec4( 21 );
1167vec4 var22 = vec4( 22 );
1168dvec4 var23 = dvec4( 23 );
1169int8_t var24 = int8_t( 24 );
1170int16_t var25 = int16_t( 25 );
1171i8vec2 var26 = i8vec2( 26 );
1172i16vec2 var27 = i16vec2( 27 );
1173i8vec3 var28 = i8vec3( 28 );
1174i16vec3 var29 = i16vec3( 29 );
1175i8vec4 var30 = i8vec4( 30 );
1176i16vec4 var31 = i16vec4( 31 );
1177uint8_t var32 = uint8_t( 32 );
1178uint16_t var33 = uint16_t( 33 );
1179u8vec2 var34 = u8vec2( 34 );
1180u16vec2 var35 = u16vec2( 35 );
1181u8vec3 var36 = u8vec3( 36 );
1182u8vec4 var37 = u8vec4( 37 );
1183float16_t var38 = float16_t( 38 );
1184f16vec2 var39 = f16vec2( 39 );
1185f16vec3 var40 = f16vec3( 40 );
1186f16vec4 var41 = f16vec4( 41 );
1187uint var42 = var1 % var0; // uint%int
1188int64_t var43 = var2 % var0; // int64_t%int
1189uint64_t var44 = var3 % var0; // uint64_t%int
1190uvec2 var45 = var7 % var6; // uvec2%ivec2
1191i64vec2 var46 = var8 % var6; // i64vec2%ivec2
1192u64vec2 var47 = var9 % var6; // u64vec2%ivec2
1193uvec3 var48 = var13 % var12; // uvec3%ivec3
1194i64vec3 var49 = var14 % var12; // i64vec3%ivec3
1195u64vec3 var50 = var15 % var12; // u64vec3%ivec3
1196uvec4 var51 = var19 % var18; // uvec4%ivec4
1197i64vec4 var52 = var20 % var18; // i64vec4%ivec4
1198u64vec4 var53 = var21 % var18; // u64vec4%ivec4
1199int var54 = var0 % var24; // int%int8_t
1200int64_t var55 = var2 % var24; // int64_t%int8_t
1201uint var56 = var1 % var24; // uint%int8_t
1202uint64_t var57 = var3 % var24; // uint64_t%int8_t
1203int var58 = var0 % var25; // int%int16_t
1204int64_t var59 = var2 % var25; // int64_t%int16_t
1205uint var60 = var1 % var25; // uint%int16_t
1206uint64_t var61 = var3 % var25; // uint64_t%int16_t
1207ivec2 var62 = var6 % var26; // ivec2%i8vec2
1208i64vec2 var63 = var8 % var26; // i64vec2%i8vec2
1209uvec2 var64 = var7 % var26; // uvec2%i8vec2
1210u64vec2 var65 = var9 % var26; // u64vec2%i8vec2
1211ivec2 var66 = var6 % var27; // ivec2%i16vec2
1212i64vec2 var67 = var8 % var27; // i64vec2%i16vec2
1213uvec2 var68 = var7 % var27; // uvec2%i16vec2
1214u64vec2 var69 = var9 % var27; // u64vec2%i16vec2
1215ivec3 var70 = var12 % var28; // ivec3%i8vec3
1216i64vec3 var71 = var14 % var28; // i64vec3%i8vec3
1217uvec3 var72 = var13 % var28; // uvec3%i8vec3
1218u64vec3 var73 = var15 % var28; // u64vec3%i8vec3
1219uvec3 var74 = var13 % var29; // uvec3%i16vec3
1220u64vec3 var75 = var15 % var29; // u64vec3%i16vec3
1221ivec4 var76 = var18 % var30; // ivec4%i8vec4
1222i64vec4 var77 = var20 % var30; // i64vec4%i8vec4
1223uvec4 var78 = var19 % var30; // uvec4%i8vec4
1224u64vec4 var79 = var21 % var30; // u64vec4%i8vec4
1225uvec4 var80 = var19 % var31; // uvec4%i16vec4
1226u64vec4 var81 = var21 % var31; // u64vec4%i16vec4
1227uint64_t var82 = var3 % var2; // uint64_t%int64_t
1228u64vec2 var83 = var9 % var8; // u64vec2%i64vec2
1229u64vec3 var84 = var15 % var14; // u64vec3%i64vec3
1230u64vec4 var85 = var21 % var20; // u64vec4%i64vec4
1231uint64_t var86 = var3 % var1; // uint64_t%uint
1232u64vec2 var87 = var9 % var7; // u64vec2%uvec2
1233u64vec3 var88 = var15 % var13; // u64vec3%uvec3
1234u64vec4 var89 = var21 % var19; // u64vec4%uvec4
1235uint var90 = var1 % var32; // uint%uint8_t
1236uint64_t var91 = var3 % var32; // uint64_t%uint8_t
1237uint var92 = var1 % var33; // uint%uint16_t
1238uint64_t var93 = var3 % var33; // uint64_t%uint16_t
1239uvec2 var94 = var7 % var34; // uvec2%u8vec2
1240u64vec2 var95 = var9 % var34; // u64vec2%u8vec2
1241uvec2 var96 = var7 % var35; // uvec2%u16vec2
1242u64vec2 var97 = var9 % var35; // u64vec2%u16vec2
1243uvec3 var98 = var13 % var36; // uvec3%u8vec3
1244u64vec3 var99 = var15 % var36; // u64vec3%u8vec3
1245uvec4 var100 = var19 % var37; // uvec4%u8vec4
1246u64vec4 var101 = var21 % var37; // u64vec4%u8vec4
1247}
1248
1249
1250void testUnaryOps() {
1251int var0 = int( 0 );
1252uint var1 = uint( 1 );
1253int64_t var2 = int64_t( 2 );
1254uint64_t var3 = uint64_t( 3 );
1255float var4 = float( 4 );
1256double var5 = double( 5 );
1257ivec2 var6 = ivec2( 6 );
1258uvec2 var7 = uvec2( 7 );
1259i64vec2 var8 = i64vec2( 8 );
1260u64vec2 var9 = u64vec2( 9 );
1261vec2 var10 = vec2( 10 );
1262dvec2 var11 = dvec2( 11 );
1263ivec3 var12 = ivec3( 12 );
1264uvec3 var13 = uvec3( 13 );
1265i64vec3 var14 = i64vec3( 14 );
1266u64vec3 var15 = u64vec3( 15 );
1267vec3 var16 = vec3( 16 );
1268dvec3 var17 = dvec3( 17 );
1269ivec4 var18 = ivec4( 18 );
1270uvec4 var19 = uvec4( 19 );
1271i64vec4 var20 = i64vec4( 20 );
1272u64vec4 var21 = u64vec4( 21 );
1273vec4 var22 = vec4( 22 );
1274dvec4 var23 = dvec4( 23 );
1275int8_t var24 = int8_t( 24 );
1276int16_t var25 = int16_t( 25 );
1277i8vec2 var26 = i8vec2( 26 );
1278i16vec2 var27 = i16vec2( 27 );
1279i8vec3 var28 = i8vec3( 28 );
1280i16vec3 var29 = i16vec3( 29 );
1281i8vec4 var30 = i8vec4( 30 );
1282i16vec4 var31 = i16vec4( 31 );
1283uint8_t var32 = uint8_t( 32 );
1284uint16_t var33 = uint16_t( 33 );
1285u8vec2 var34 = u8vec2( 34 );
1286u16vec2 var35 = u16vec2( 35 );
1287u8vec3 var36 = u8vec3( 36 );
1288u8vec4 var37 = u8vec4( 37 );
1289float16_t var38 = float16_t( 38 );
1290f16vec2 var39 = f16vec2( 39 );
1291f16vec3 var40 = f16vec3( 40 );
1292f16vec4 var41 = f16vec4( 41 );
1293// int ====> uint, int64_t, uint64_t, float, double
1294uint var42 = -var1; //uint
1295int64_t var43 = -var2; //int64_t
1296uint64_t var44 = -var3; //uint64_t
1297float var45 = -var4; //float
1298double var46 = -var5; //double
1299// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
1300uvec2 var47 = -var7; //uvec2
1301i64vec2 var48 = -var8; //i64vec2
1302u64vec2 var49 = -var9; //u64vec2
1303vec2 var50 = -var10; //vec2
1304dvec2 var51 = -var11; //dvec2
1305// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
1306uvec3 var52 = -var13; //uvec3
1307i64vec3 var53 = -var14; //i64vec3
1308u64vec3 var54 = -var15; //u64vec3
1309vec3 var55 = -var16; //vec3
1310dvec3 var56 = -var17; //dvec3
1311// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
1312uvec4 var57 = -var19; //uvec4
1313i64vec4 var58 = -var20; //i64vec4
1314u64vec4 var59 = -var21; //u64vec4
1315vec4 var60 = -var22; //vec4
1316dvec4 var61 = -var23; //dvec4
1317// int8_t ====> int, int64_t, uint, uint64_t, float, double
1318int var62 = -var0; //int
1319int64_t var63 = -var2; //int64_t
1320uint var64 = -var1; //uint
1321uint64_t var65 = -var3; //uint64_t
1322float var66 = -var4; //float
1323double var67 = -var5; //double
1324// int16_t ====> int, int64_t, uint, uint64_t, float, double
1325int var68 = -var0; //int
1326int64_t var69 = -var2; //int64_t
1327uint var70 = -var1; //uint
1328uint64_t var71 = -var3; //uint64_t
1329float var72 = -var4; //float
1330double var73 = -var5; //double
1331// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1332ivec2 var74 = -var6; //ivec2
1333i64vec2 var75 = -var8; //i64vec2
1334uvec2 var76 = -var7; //uvec2
1335u64vec2 var77 = -var9; //u64vec2
1336vec2 var78 = -var10; //vec2
1337dvec2 var79 = -var11; //dvec2
1338// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1339ivec2 var80 = -var6; //ivec2
1340i64vec2 var81 = -var8; //i64vec2
1341uvec2 var82 = -var7; //uvec2
1342u64vec2 var83 = -var9; //u64vec2
1343vec2 var84 = -var10; //vec2
1344dvec2 var85 = -var11; //dvec2
1345// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
1346ivec3 var86 = -var12; //ivec3
1347i64vec3 var87 = -var14; //i64vec3
1348uvec3 var88 = -var13; //uvec3
1349u64vec3 var89 = -var15; //u64vec3
1350vec3 var90 = -var16; //vec3
1351dvec3 var91 = -var17; //dvec3
1352// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
1353uvec3 var92 = -var13; //uvec3
1354u64vec3 var93 = -var15; //u64vec3
1355vec3 var94 = -var16; //vec3
1356dvec3 var95 = -var17; //dvec3
1357// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
1358ivec4 var96 = -var18; //ivec4
1359i64vec4 var97 = -var20; //i64vec4
1360uvec4 var98 = -var19; //uvec4
1361u64vec4 var99 = -var21; //u64vec4
1362vec4 var100 = -var22; //vec4
1363dvec4 var101 = -var23; //dvec4
1364// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
1365uvec4 var102 = -var19; //uvec4
1366u64vec4 var103 = -var21; //u64vec4
1367vec4 var104 = -var22; //vec4
1368dvec4 var105 = -var23; //dvec4
1369// int64_t ====> uint64_t, double
1370uint64_t var106 = -var3; //uint64_t
1371double var107 = -var5; //double
1372// i64vec2 ====> u64vec2, dvec2
1373u64vec2 var108 = -var9; //u64vec2
1374dvec2 var109 = -var11; //dvec2
1375// i64vec3 ====> u64vec3, dvec3
1376u64vec3 var110 = -var15; //u64vec3
1377dvec3 var111 = -var17; //dvec3
1378// i64vec4 ====> u64vec4, dvec4
1379u64vec4 var112 = -var21; //u64vec4
1380dvec4 var113 = -var23; //dvec4
1381// uint ====> uint64_t, float, double
1382uint64_t var114 = -var3; //uint64_t
1383float var115 = -var4; //float
1384double var116 = -var5; //double
1385// uvec2 ====> u64vec2, vec2, dvec2
1386u64vec2 var117 = -var9; //u64vec2
1387vec2 var118 = -var10; //vec2
1388dvec2 var119 = -var11; //dvec2
1389// uvec3 ====> u64vec3, vec3, dvec3
1390u64vec3 var120 = -var15; //u64vec3
1391vec3 var121 = -var16; //vec3
1392dvec3 var122 = -var17; //dvec3
1393// uvec4 ====> u64vec4, vec4, dvec4
1394u64vec4 var123 = -var21; //u64vec4
1395vec4 var124 = -var22; //vec4
1396dvec4 var125 = -var23; //dvec4
1397// uint8_t ====> uint, uint64_t, float, double
1398uint var126 = -var1; //uint
1399uint64_t var127 = -var3; //uint64_t
1400float var128 = -var4; //float
1401double var129 = -var5; //double
1402// uint16_t ====> uint, uint64_t, float, double
1403uint var130 = -var1; //uint
1404uint64_t var131 = -var3; //uint64_t
1405float var132 = -var4; //float
1406double var133 = -var5; //double
1407// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
1408uvec2 var134 = -var7; //uvec2
1409u64vec2 var135 = -var9; //u64vec2
1410vec2 var136 = -var10; //vec2
1411dvec2 var137 = -var11; //dvec2
1412// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
1413uvec2 var138 = -var7; //uvec2
1414u64vec2 var139 = -var9; //u64vec2
1415vec2 var140 = -var10; //vec2
1416dvec2 var141 = -var11; //dvec2
1417// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
1418uvec3 var142 = -var13; //uvec3
1419u64vec3 var143 = -var15; //u64vec3
1420vec3 var144 = -var16; //vec3
1421dvec3 var145 = -var17; //dvec3
1422// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
1423uvec4 var146 = -var19; //uvec4
1424u64vec4 var147 = -var21; //u64vec4
1425vec4 var148 = -var22; //vec4
1426dvec4 var149 = -var23; //dvec4
1427// uint64_t ====> double
1428double var150 = -var5; //double
1429// u64vec2 ====> dvec2
1430dvec2 var151 = -var11; //dvec2
1431// u64vec3 ====> dvec3
1432dvec3 var152 = -var17; //dvec3
1433// u64vec4 ====> dvec4
1434dvec4 var153 = -var23; //dvec4
1435// float ====> double
1436double var154 = -var5; //double
1437// vec2 ====> dvec2
1438dvec2 var155 = -var11; //dvec2
1439// vec3 ====> dvec3
1440dvec3 var156 = -var17; //dvec3
1441// vec4 ====> dvec4
1442dvec4 var157 = -var23; //dvec4
1443// float16_t ====> float, double
1444float var158 = -var4; //float
1445double var159 = -var5; //double
1446// f16vec2 ====> vec2, dvec2
1447vec2 var160 = -var10; //vec2
1448dvec2 var161 = -var11; //dvec2
1449// f16vec3 ====> vec3, dvec3
1450vec3 var162 = -var16; //vec3
1451dvec3 var163 = -var17; //dvec3
1452// f16vec4 ====> vec4, dvec4
1453vec4 var164 = -var22; //vec4
1454dvec4 var165 = -var23; //dvec4
1455// int ====> uint, int64_t, uint64_t, float, double
1456uint var166 = ++var1; //uint
1457int64_t var167 = ++var2; //int64_t
1458uint64_t var168 = ++var3; //uint64_t
1459float var169 = ++var4; //float
1460double var170 = ++var5; //double
1461// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
1462uvec2 var171 = ++var7; //uvec2
1463i64vec2 var172 = ++var8; //i64vec2
1464u64vec2 var173 = ++var9; //u64vec2
1465vec2 var174 = ++var10; //vec2
1466dvec2 var175 = ++var11; //dvec2
1467// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
1468uvec3 var176 = ++var13; //uvec3
1469i64vec3 var177 = ++var14; //i64vec3
1470u64vec3 var178 = ++var15; //u64vec3
1471vec3 var179 = ++var16; //vec3
1472dvec3 var180 = ++var17; //dvec3
1473// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
1474uvec4 var181 = ++var19; //uvec4
1475i64vec4 var182 = ++var20; //i64vec4
1476u64vec4 var183 = ++var21; //u64vec4
1477vec4 var184 = ++var22; //vec4
1478dvec4 var185 = ++var23; //dvec4
1479// int8_t ====> int, int64_t, uint, uint64_t, float, double
1480int var186 = ++var0; //int
1481int64_t var187 = ++var2; //int64_t
1482uint var188 = ++var1; //uint
1483uint64_t var189 = ++var3; //uint64_t
1484float var190 = ++var4; //float
1485double var191 = ++var5; //double
1486// int16_t ====> int, int64_t, uint, uint64_t, float, double
1487int var192 = ++var0; //int
1488int64_t var193 = ++var2; //int64_t
1489uint var194 = ++var1; //uint
1490uint64_t var195 = ++var3; //uint64_t
1491float var196 = ++var4; //float
1492double var197 = ++var5; //double
1493// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1494ivec2 var198 = ++var6; //ivec2
1495i64vec2 var199 = ++var8; //i64vec2
1496uvec2 var200 = ++var7; //uvec2
1497u64vec2 var201 = ++var9; //u64vec2
1498vec2 var202 = ++var10; //vec2
1499dvec2 var203 = ++var11; //dvec2
1500// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1501ivec2 var204 = ++var6; //ivec2
1502i64vec2 var205 = ++var8; //i64vec2
1503uvec2 var206 = ++var7; //uvec2
1504u64vec2 var207 = ++var9; //u64vec2
1505vec2 var208 = ++var10; //vec2
1506dvec2 var209 = ++var11; //dvec2
1507// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
1508ivec3 var210 = ++var12; //ivec3
1509i64vec3 var211 = ++var14; //i64vec3
1510uvec3 var212 = ++var13; //uvec3
1511u64vec3 var213 = ++var15; //u64vec3
1512vec3 var214 = ++var16; //vec3
1513dvec3 var215 = ++var17; //dvec3
1514// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
1515uvec3 var216 = ++var13; //uvec3
1516u64vec3 var217 = ++var15; //u64vec3
1517vec3 var218 = ++var16; //vec3
1518dvec3 var219 = ++var17; //dvec3
1519// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
1520ivec4 var220 = ++var18; //ivec4
1521i64vec4 var221 = ++var20; //i64vec4
1522uvec4 var222 = ++var19; //uvec4
1523u64vec4 var223 = ++var21; //u64vec4
1524vec4 var224 = ++var22; //vec4
1525dvec4 var225 = ++var23; //dvec4
1526// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
1527uvec4 var226 = ++var19; //uvec4
1528u64vec4 var227 = ++var21; //u64vec4
1529vec4 var228 = ++var22; //vec4
1530dvec4 var229 = ++var23; //dvec4
1531// int64_t ====> uint64_t, double
1532uint64_t var230 = ++var3; //uint64_t
1533double var231 = ++var5; //double
1534// i64vec2 ====> u64vec2, dvec2
1535u64vec2 var232 = ++var9; //u64vec2
1536dvec2 var233 = ++var11; //dvec2
1537// i64vec3 ====> u64vec3, dvec3
1538u64vec3 var234 = ++var15; //u64vec3
1539dvec3 var235 = ++var17; //dvec3
1540// i64vec4 ====> u64vec4, dvec4
1541u64vec4 var236 = ++var21; //u64vec4
1542dvec4 var237 = ++var23; //dvec4
1543// uint ====> uint64_t, float, double
1544uint64_t var238 = ++var3; //uint64_t
1545float var239 = ++var4; //float
1546double var240 = ++var5; //double
1547// uvec2 ====> u64vec2, vec2, dvec2
1548u64vec2 var241 = ++var9; //u64vec2
1549vec2 var242 = ++var10; //vec2
1550dvec2 var243 = ++var11; //dvec2
1551// uvec3 ====> u64vec3, vec3, dvec3
1552u64vec3 var244 = ++var15; //u64vec3
1553vec3 var245 = ++var16; //vec3
1554dvec3 var246 = ++var17; //dvec3
1555// uvec4 ====> u64vec4, vec4, dvec4
1556u64vec4 var247 = ++var21; //u64vec4
1557vec4 var248 = ++var22; //vec4
1558dvec4 var249 = ++var23; //dvec4
1559// uint8_t ====> uint, uint64_t, float, double
1560uint var250 = ++var1; //uint
1561uint64_t var251 = ++var3; //uint64_t
1562float var252 = ++var4; //float
1563double var253 = ++var5; //double
1564// uint16_t ====> uint, uint64_t, float, double
1565uint var254 = ++var1; //uint
1566uint64_t var255 = ++var3; //uint64_t
1567float var256 = ++var4; //float
1568double var257 = ++var5; //double
1569// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
1570uvec2 var258 = ++var7; //uvec2
1571u64vec2 var259 = ++var9; //u64vec2
1572vec2 var260 = ++var10; //vec2
1573dvec2 var261 = ++var11; //dvec2
1574// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
1575uvec2 var262 = ++var7; //uvec2
1576u64vec2 var263 = ++var9; //u64vec2
1577vec2 var264 = ++var10; //vec2
1578dvec2 var265 = ++var11; //dvec2
1579// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
1580uvec3 var266 = ++var13; //uvec3
1581u64vec3 var267 = ++var15; //u64vec3
1582vec3 var268 = ++var16; //vec3
1583dvec3 var269 = ++var17; //dvec3
1584// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
1585uvec4 var270 = ++var19; //uvec4
1586u64vec4 var271 = ++var21; //u64vec4
1587vec4 var272 = ++var22; //vec4
1588dvec4 var273 = ++var23; //dvec4
1589// uint64_t ====> double
1590double var274 = ++var5; //double
1591// u64vec2 ====> dvec2
1592dvec2 var275 = ++var11; //dvec2
1593// u64vec3 ====> dvec3
1594dvec3 var276 = ++var17; //dvec3
1595// u64vec4 ====> dvec4
1596dvec4 var277 = ++var23; //dvec4
1597// float ====> double
1598double var278 = ++var5; //double
1599// vec2 ====> dvec2
1600dvec2 var279 = ++var11; //dvec2
1601// vec3 ====> dvec3
1602dvec3 var280 = ++var17; //dvec3
1603// vec4 ====> dvec4
1604dvec4 var281 = ++var23; //dvec4
1605// float16_t ====> float, double
1606float var282 = ++var4; //float
1607double var283 = ++var5; //double
1608// f16vec2 ====> vec2, dvec2
1609vec2 var284 = ++var10; //vec2
1610dvec2 var285 = ++var11; //dvec2
1611// f16vec3 ====> vec3, dvec3
1612vec3 var286 = ++var16; //vec3
1613dvec3 var287 = ++var17; //dvec3
1614// f16vec4 ====> vec4, dvec4
1615vec4 var288 = ++var22; //vec4
1616dvec4 var289 = ++var23; //dvec4
1617// int ====> uint, int64_t, uint64_t, float, double
1618uint var290 = --var1; //uint
1619int64_t var291 = --var2; //int64_t
1620uint64_t var292 = --var3; //uint64_t
1621float var293 = --var4; //float
1622double var294 = --var5; //double
1623// ivec2 ====> uvec2, i64vec2, u64vec2, vec2, dvec2
1624uvec2 var295 = --var7; //uvec2
1625i64vec2 var296 = --var8; //i64vec2
1626u64vec2 var297 = --var9; //u64vec2
1627vec2 var298 = --var10; //vec2
1628dvec2 var299 = --var11; //dvec2
1629// ivec3 ====> uvec3, i64vec3, u64vec3, vec3, dvec3
1630uvec3 var300 = --var13; //uvec3
1631i64vec3 var301 = --var14; //i64vec3
1632u64vec3 var302 = --var15; //u64vec3
1633vec3 var303 = --var16; //vec3
1634dvec3 var304 = --var17; //dvec3
1635// ivec4 ====> uvec4, i64vec4, u64vec4, vec4, dvec4
1636uvec4 var305 = --var19; //uvec4
1637i64vec4 var306 = --var20; //i64vec4
1638u64vec4 var307 = --var21; //u64vec4
1639vec4 var308 = --var22; //vec4
1640dvec4 var309 = --var23; //dvec4
1641// int8_t ====> int, int64_t, uint, uint64_t, float, double
1642int var310 = --var0; //int
1643int64_t var311 = --var2; //int64_t
1644uint var312 = --var1; //uint
1645uint64_t var313 = --var3; //uint64_t
1646float var314 = --var4; //float
1647double var315 = --var5; //double
1648// int16_t ====> int, int64_t, uint, uint64_t, float, double
1649int var316 = --var0; //int
1650int64_t var317 = --var2; //int64_t
1651uint var318 = --var1; //uint
1652uint64_t var319 = --var3; //uint64_t
1653float var320 = --var4; //float
1654double var321 = --var5; //double
1655// i8vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1656ivec2 var322 = --var6; //ivec2
1657i64vec2 var323 = --var8; //i64vec2
1658uvec2 var324 = --var7; //uvec2
1659u64vec2 var325 = --var9; //u64vec2
1660vec2 var326 = --var10; //vec2
1661dvec2 var327 = --var11; //dvec2
1662// i16vec2 ====> ivec2, i64vec2, uvec2, u64vec2, vec2, dvec2
1663ivec2 var328 = --var6; //ivec2
1664i64vec2 var329 = --var8; //i64vec2
1665uvec2 var330 = --var7; //uvec2
1666u64vec2 var331 = --var9; //u64vec2
1667vec2 var332 = --var10; //vec2
1668dvec2 var333 = --var11; //dvec2
1669// i8vec3 ====> ivec3, i64vec3, uvec3, u64vec3, vec3, dvec3
1670ivec3 var334 = --var12; //ivec3
1671i64vec3 var335 = --var14; //i64vec3
1672uvec3 var336 = --var13; //uvec3
1673u64vec3 var337 = --var15; //u64vec3
1674vec3 var338 = --var16; //vec3
1675dvec3 var339 = --var17; //dvec3
1676// i16vec3 ====> uvec3, u64vec3, vec3, dvec3
1677uvec3 var340 = --var13; //uvec3
1678u64vec3 var341 = --var15; //u64vec3
1679vec3 var342 = --var16; //vec3
1680dvec3 var343 = --var17; //dvec3
1681// i8vec4 ====> ivec4, i64vec4, uvec4, u64vec4, vec4, dvec4
1682ivec4 var344 = --var18; //ivec4
1683i64vec4 var345 = --var20; //i64vec4
1684uvec4 var346 = --var19; //uvec4
1685u64vec4 var347 = --var21; //u64vec4
1686vec4 var348 = --var22; //vec4
1687dvec4 var349 = --var23; //dvec4
1688// i16vec4 ====> uvec4, u64vec4, vec4, dvec4
1689uvec4 var350 = --var19; //uvec4
1690u64vec4 var351 = --var21; //u64vec4
1691vec4 var352 = --var22; //vec4
1692dvec4 var353 = --var23; //dvec4
1693// int64_t ====> uint64_t, double
1694uint64_t var354 = --var3; //uint64_t
1695double var355 = --var5; //double
1696// i64vec2 ====> u64vec2, dvec2
1697u64vec2 var356 = --var9; //u64vec2
1698dvec2 var357 = --var11; //dvec2
1699// i64vec3 ====> u64vec3, dvec3
1700u64vec3 var358 = --var15; //u64vec3
1701dvec3 var359 = --var17; //dvec3
1702// i64vec4 ====> u64vec4, dvec4
1703u64vec4 var360 = --var21; //u64vec4
1704dvec4 var361 = --var23; //dvec4
1705// uint ====> uint64_t, float, double
1706uint64_t var362 = --var3; //uint64_t
1707float var363 = --var4; //float
1708double var364 = --var5; //double
1709// uvec2 ====> u64vec2, vec2, dvec2
1710u64vec2 var365 = --var9; //u64vec2
1711vec2 var366 = --var10; //vec2
1712dvec2 var367 = --var11; //dvec2
1713// uvec3 ====> u64vec3, vec3, dvec3
1714u64vec3 var368 = --var15; //u64vec3
1715vec3 var369 = --var16; //vec3
1716dvec3 var370 = --var17; //dvec3
1717// uvec4 ====> u64vec4, vec4, dvec4
1718u64vec4 var371 = --var21; //u64vec4
1719vec4 var372 = --var22; //vec4
1720dvec4 var373 = --var23; //dvec4
1721// uint8_t ====> uint, uint64_t, float, double
1722uint var374 = --var1; //uint
1723uint64_t var375 = --var3; //uint64_t
1724float var376 = --var4; //float
1725double var377 = --var5; //double
1726// uint16_t ====> uint, uint64_t, float, double
1727uint var378 = --var1; //uint
1728uint64_t var379 = --var3; //uint64_t
1729float var380 = --var4; //float
1730double var381 = --var5; //double
1731// u8vec2 ====> uvec2, u64vec2, vec2, dvec2
1732uvec2 var382 = --var7; //uvec2
1733u64vec2 var383 = --var9; //u64vec2
1734vec2 var384 = --var10; //vec2
1735dvec2 var385 = --var11; //dvec2
1736// u16vec2 ====> uvec2, u64vec2, vec2, dvec2
1737uvec2 var386 = --var7; //uvec2
1738u64vec2 var387 = --var9; //u64vec2
1739vec2 var388 = --var10; //vec2
1740dvec2 var389 = --var11; //dvec2
1741// u8vec3 ====> uvec3, u64vec3, vec3, dvec3
1742uvec3 var390 = --var13; //uvec3
1743u64vec3 var391 = --var15; //u64vec3
1744vec3 var392 = --var16; //vec3
1745dvec3 var393 = --var17; //dvec3
1746// u8vec4 ====> uvec4, u64vec4, vec4, dvec4
1747uvec4 var394 = --var19; //uvec4
1748u64vec4 var395 = --var21; //u64vec4
1749vec4 var396 = --var22; //vec4
1750dvec4 var397 = --var23; //dvec4
1751// uint64_t ====> double
1752double var398 = --var5; //double
1753// u64vec2 ====> dvec2
1754dvec2 var399 = --var11; //dvec2
1755// u64vec3 ====> dvec3
1756dvec3 var400 = --var17; //dvec3
1757// u64vec4 ====> dvec4
1758dvec4 var401 = --var23; //dvec4
1759// float ====> double
1760double var402 = --var5; //double
1761// vec2 ====> dvec2
1762dvec2 var403 = --var11; //dvec2
1763// vec3 ====> dvec3
1764dvec3 var404 = --var17; //dvec3
1765// vec4 ====> dvec4
1766dvec4 var405 = --var23; //dvec4
1767// float16_t ====> float, double
1768float var406 = --var4; //float
1769double var407 = --var5; //double
1770// f16vec2 ====> vec2, dvec2
1771vec2 var408 = --var10; //vec2
1772dvec2 var409 = --var11; //dvec2
1773// f16vec3 ====> vec3, dvec3
1774vec3 var410 = --var16; //vec3
1775dvec3 var411 = --var17; //dvec3
1776// f16vec4 ====> vec4, dvec4
1777vec4 var412 = --var22; //vec4
1778dvec4 var413 = --var23; //dvec4
1779}
1780
1781void testConditionExpressions() {
1782int8_t    var1 = int8_t(0);
1783int16_t   var5 = int16_t(0);
1784int32_t   var9 = int32_t(0);
1785int64_t   var13 = int64_t(0);
1786float16_t var33 = float16_t(0);
1787float64_t var41 = float64_t(0);
1788double    var42 = double(0);
1789
1790bool b = (var1 == int8_t(0));
1791b = (var5 == int16_t(0));
1792b = (var9 == int32_t(0));
1793b = (var13 == int64_t(0));
1794b = (var33 == float16_t(0));
1795b = (var41 == float64_t(0));
1796b = (var42 == double(0));
1797
1798b = (var5 != int16_t(0));
1799b = (var9 != int32_t(0));
1800b = (var13 != int64_t(0));
1801b = (var33 != float16_t(0));
1802b = (var41 != float64_t(0));
1803b = (var42 != double(0));
1804
1805b = (var5 > int16_t(0));
1806b = (var9 > int32_t(0));
1807b = (var13 > int64_t(0));
1808b = (var33 > float16_t(0));
1809b = (var41 > float64_t(0));
1810b = (var42 > double(0));
1811
1812}
1813
1814
1815// This test case verifies all the function definition conversions as specificed in
1816// NV_gpu_shader5 under "Modify Section 6.1, Function Definitions, p. 63"
1817
1818void func(int64_t a)
1819{
1820}
1821
1822void func(int a)
1823{
1824
1825}
1826
1827void func(uint a)
1828{
1829
1830}
1831
1832void func(uint64_t a)
1833{
1834
1835}
1836
1837void func(float a) {
1838
1839}
1840
1841void func64(double a) {
1842
1843}
1844
1845void func64(int64_t a)
1846{
1847
1848}
1849
1850void func64(uint64_t a)
1851{
1852
1853}
1854
1855void testFunctionDefinition() {
1856
1857int8_t    var1 = int8_t(0);
1858int16_t   var5 = int16_t(0);
1859uint8_t   var2 = uint8_t(0);
1860uint16_t  var3 = uint16_t(0);
1861int32_t   var9 = int32_t(0);
1862int       var10 = int(0);
1863uint      var11 = uint(0);
1864int64_t   var13 = int64_t(0);
1865float16_t var33 = float16_t(0);
1866float     var34 = float(0);
1867/*
1868 source types                destination types
1869-----------------           -----------------
1870int8_t, int16_t             int, int64_t
1871int                         int64_t
1872uint8_t, uint16_t           uint, uint64_t
1873uint                        uint64_t
1874float16_t                   float
1875float                       double
1876*/
1877
1878func(var1); // should pick func(int a)
1879func(var5); // should pick func(int a)
1880func(var10); //int, should pick func(int64_t a)
1881
1882func(var2); //uint8_t should pick func(uint a)
1883func(var3); //uint16_t should pick func(uint a)
1884
1885func(var33); //float16_t should pick void func(float a)
1886
1887func64(var1); // int8_t, should pick func64(int64_t a)
1888func64(var5); // int16_t, should pick func64(int64_t a)
1889func64(var9); // int32_t, should pick func64(int64_t a)
1890
1891func64(var2); //uint8_t should pick func64(uint64_t a)
1892func64(var3); //uint16_t should pick func64(uint64_t a)
1893func64(var11); //uint should pick func64(uint64_t a)
1894func64(var34); //float should pick func64(double a)
1895
1896}
1897
1898
1899
1900flat in int var;
1901void testBuiltinNVOnly()
1902{
1903      // Test builtins defined by NV_gpu_shader5 and not available in ARB_gpu_shader5
1904      int64_t  v1 = packInt2x32(ivec2(0));
1905      uint64_t v2 = packUint2x32(uvec2(0));
1906
1907      ivec2  v3 = unpackInt2x32(int64_t(0));
1908      uvec2  v4 = unpackUint2x32(uint64_t(0));
1909      uint   v5 = packFloat2x16(f16vec2(0));
1910      f16vec2 v6 =  unpackFloat2x16(uint(0));
1911      int64_t v7 = doubleBitsToInt64(double(0));
1912      i64vec2 v8 = doubleBitsToInt64(dvec2(0));
1913      i64vec3 v9 = doubleBitsToInt64(dvec3(0));
1914      i64vec4 v10 = doubleBitsToInt64(dvec4(0));
1915
1916      uint64_t v11 = doubleBitsToUint64(double(0));
1917      u64vec2  v12 = doubleBitsToUint64(dvec2(0));
1918      u64vec3  v13 = doubleBitsToUint64(dvec3(0));
1919      u64vec4  v14 = doubleBitsToUint64(dvec4(0));
1920
1921      double v15 = int64BitsToDouble(int64_t(0));
1922      dvec2  v16 = int64BitsToDouble(i64vec2(0));
1923      dvec3  v17 = int64BitsToDouble(i64vec3(0));
1924      dvec4  v18 = int64BitsToDouble(i64vec4(0));
1925
1926      double v19 = uint64BitsToDouble(uint64_t(0));
1927      dvec2  v20 = uint64BitsToDouble(u64vec2(0));
1928      dvec3  v21 = uint64BitsToDouble(u64vec3(0));
1929      dvec4  v22 = uint64BitsToDouble(u64vec4(0));
1930      
1931      bool b1 = anyThreadNV((var == 1));      
1932      bool b2 = allThreadsNV((var == 1));      
1933      bool b3 = allThreadsEqualNV((var == 1));      
1934
1935}
1936
1937
1938// Modifications to Vector Relational Functions
1939// Introduction of explicitly sized types
1940
1941void testVectorRelationBuiltins()
1942{
1943
1944
1945    bvec2 b1 = lessThan(i64vec2(0), i64vec2(1));
1946    bvec3 b2 = lessThan(i64vec3(0), i64vec3(1));
1947    bvec4 b3 = lessThan(i64vec4(0), i64vec4(1));
1948    bvec2 b4 = lessThan(u64vec2(0), u64vec2(1));
1949    bvec3 b5 = lessThan(u64vec3(0), u64vec3(1));
1950    bvec4 b6 = lessThan(u64vec4(0), u64vec4(1));
1951
1952    bvec2 b7 = lessThanEqual(i64vec2(0), i64vec2(1));
1953    bvec3 b8 = lessThanEqual(i64vec3(0), i64vec3(1));
1954    bvec4 b9 = lessThanEqual(i64vec4(0), i64vec4(1));
1955    bvec2 b10 = lessThanEqual(u64vec2(0), u64vec2(1));
1956    bvec3 b11 = lessThanEqual(u64vec3(0), u64vec3(1));
1957    bvec4 b12 = lessThanEqual(u64vec4(0), u64vec4(1));
1958
1959    bvec2 b13 = greaterThan(i64vec2(0), i64vec2(1));
1960    bvec3 b14 = greaterThan(i64vec3(0), i64vec3(1));
1961    bvec4 b15 = greaterThan(i64vec4(0), i64vec4(1));
1962    bvec2 b16 = greaterThan(u64vec2(0), u64vec2(1));
1963    bvec3 b17 = greaterThan(u64vec3(0), u64vec3(1));
1964    bvec4 b18 = greaterThan(u64vec4(0), u64vec4(1));
1965
1966    bvec2 b19 = greaterThanEqual(i64vec2(0), i64vec2(1));
1967    bvec3 b20 = greaterThanEqual(i64vec3(0), i64vec3(1));
1968    bvec4 b21 = greaterThanEqual(i64vec4(0), i64vec4(1));
1969    bvec2 b22 = greaterThanEqual(u64vec2(0), u64vec2(1));
1970    bvec3 b23 = greaterThanEqual(u64vec3(0), u64vec3(1));
1971    bvec4 b24 = greaterThanEqual(u64vec4(0), u64vec4(1));
1972
1973    bvec2 b25 = equal(i64vec2(0), i64vec2(1));
1974    bvec3 b26 = equal(i64vec3(0), i64vec3(1));
1975    bvec4 b27 = equal(i64vec4(0), i64vec4(1));
1976    bvec2 b28 = equal(u64vec2(0), u64vec2(1));
1977    bvec3 b29 = equal(u64vec3(0), u64vec3(1));
1978    bvec4 b30 = equal(u64vec4(0), u64vec4(1));
1979
1980    bvec2 b31 = notEqual(i64vec2(0), i64vec2(1));
1981    bvec3 b32 = notEqual(i64vec3(0), i64vec3(1));
1982    bvec4 b33 = notEqual(i64vec4(0), i64vec4(1));
1983    bvec2 b34 = notEqual(u64vec2(0), u64vec2(1));
1984    bvec3 b35 = notEqual(u64vec3(0), u64vec3(1));
1985    bvec4 b36 = notEqual(u64vec4(0), u64vec4(1));
1986
1987    bvec2 b37 = lessThan(f16vec2(0), f16vec2(1));
1988    bvec3 b38 = lessThan(f16vec3(0), f16vec3(1));
1989    bvec4 b39 = lessThan(f16vec4(0), f16vec4(1));
1990
1991    bvec2 b40 = lessThanEqual(f16vec2(0), f16vec2(1));
1992    bvec3 b41 = lessThanEqual(f16vec3(0), f16vec3(1));
1993    bvec4 b42 = lessThanEqual(f16vec4(0), f16vec4(1));
1994
1995    bvec2 b43 = greaterThan(f16vec2(0), f16vec2(1));
1996    bvec3 b44 = greaterThan(f16vec3(0), f16vec3(1));
1997    bvec4 b45 = greaterThan(f16vec4(0), f16vec4(1));
1998
1999    bvec2 b46 = greaterThanEqual(f16vec2(0), f16vec2(1));
2000    bvec3 b47 = greaterThanEqual(f16vec3(0), f16vec3(1));
2001    bvec4 b48 = greaterThanEqual(f16vec4(0), f16vec4(1));
2002
2003    bvec2 b49 = equal(f16vec2(0), f16vec2(1));
2004    bvec3 b50 = equal(f16vec3(0), f16vec3(1));
2005    bvec4 b51 = equal(f16vec4(0), f16vec4(1));
2006
2007    bvec2 b52 = notEqual(f16vec2(0), f16vec2(1));
2008    bvec3 b53 = notEqual(f16vec3(0), f16vec3(1));
2009    bvec4 b54 = notEqual(f16vec4(0), f16vec4(1));
2010
2011    // Dependency on GL_ARB_gpu_shader_fp64
2012    bvec2 b55 = lessThan(dvec2(0), dvec2(1));
2013    bvec3 b56 = lessThan(dvec3(0), dvec3(1));
2014    bvec4 b57 = lessThan(dvec4(0), dvec4(1));
2015
2016    bvec2 b58 = lessThanEqual(dvec2(0), dvec2(1));
2017    bvec3 b59 = lessThanEqual(dvec3(0), dvec3(1));
2018    bvec4 b60 = lessThanEqual(dvec4(0), dvec4(1));
2019
2020    bvec2 b61 = greaterThan(dvec2(0), dvec2(1));
2021    bvec3 b62 = greaterThan(dvec3(0), dvec3(1));
2022    bvec4 b63 = greaterThan(dvec4(0), dvec4(1));
2023
2024    bvec2 b64 = greaterThanEqual(dvec2(0), dvec2(1));
2025    bvec3 b65 = greaterThanEqual(dvec3(0), dvec3(1));
2026    bvec4 b66 = greaterThanEqual(dvec4(0), dvec4(1));
2027
2028    bvec2 b67 = equal(dvec2(0), dvec2(1));
2029    bvec3 b68 = equal(dvec3(0), dvec3(1));
2030    bvec4 b69 = equal(dvec4(0), dvec4(1));
2031
2032    bvec2 b70 = notEqual(dvec2(0), dvec2(1));
2033    bvec3 b71 = notEqual(dvec3(0), dvec3(1));
2034    bvec4 b72 = notEqual(dvec4(0), dvec4(1));
2035
2036}
2037
2038
2039// Testing texture builtins with non constant "offset"
2040uniform sampler2DRectShadow tvar0;
2041uniform samplerCubeShadow tvar1;
2042uniform sampler1DArrayShadow tvar2;
2043uniform sampler1DShadow tvar3;
2044uniform sampler2DShadow tvar4;
2045uniform sampler2DArrayShadow tvar5;
2046uniform samplerCubeArrayShadow tvar6;
2047uniform isampler2DArray tvar7;
2048uniform usampler2DArray tvar8;
2049uniform sampler2DArray tvar9;
2050uniform usampler2D tvar10;
2051uniform sampler2D tvar11;
2052uniform isampler2D tvar12;
2053uniform isampler2DRect tvar13;
2054uniform sampler2DRect tvar14;
2055uniform usampler2DRect tvar15;
2056uniform usamplerCubeArray tvar16;
2057uniform isamplerCubeArray tvar17;
2058uniform samplerCubeArray tvar18;
2059uniform usampler3D tvar19;
2060uniform sampler3D tvar20;
2061uniform isampler3D tvar21;
2062uniform sampler1D tvar22;
2063uniform usampler1D tvar23;
2064uniform isampler1D tvar24;
2065uniform isamplerCube tvar25;
2066uniform samplerCube tvar26;
2067uniform usamplerCube tvar27;
2068uniform isampler1DArray tvar28;
2069uniform usampler1DArray tvar29;
2070uniform sampler1DArray tvar30;
2071in float tvar32;
2072flat in int tvar33;
2073in vec2 tvar37;
2074flat in ivec2 tvar38;
2075in vec3 tvar42;
2076flat in ivec3 tvar43;
2077in vec4 tvar81;
2078
2079
2080
2081void main() {
2082vec4 tvar31 =textureOffset( tvar22, tvar32, tvar33, tvar32);
2083ivec4 tvar34 =textureOffset( tvar24, tvar32, tvar33, tvar32);
2084uvec4 tvar35 =textureOffset( tvar23, tvar32, tvar33, tvar32);
2085vec4 tvar36 =textureOffset( tvar11, tvar37, tvar38, tvar32);
2086ivec4 tvar39 =textureOffset( tvar12, tvar37, tvar38, tvar32);
2087uvec4 tvar40 =textureOffset( tvar10, tvar37, tvar38, tvar32);
2088vec4 tvar41 =textureOffset( tvar20, tvar42, tvar43, tvar32);
2089ivec4 tvar44 =textureOffset( tvar21, tvar42, tvar43, tvar32);
2090uvec4 tvar45 =textureOffset( tvar19, tvar42, tvar43, tvar32);
2091vec4 tvar46 =textureOffset( tvar14, tvar37, tvar38);
2092ivec4 tvar47 =textureOffset( tvar13, tvar37, tvar38);
2093uvec4 tvar48 =textureOffset( tvar15, tvar37, tvar38);
2094float tvar49 =textureOffset( tvar0, tvar42, tvar38);
2095float tvar50 =textureOffset( tvar3, tvar42, tvar33, tvar32);
2096float tvar51 =textureOffset( tvar4, tvar42, tvar38, tvar32);
2097vec4 tvar52 =textureOffset( tvar30, tvar37, tvar33, tvar32);
2098ivec4 tvar53 =textureOffset( tvar28, tvar37, tvar33, tvar32);
2099uvec4 tvar54 =textureOffset( tvar29, tvar37, tvar33, tvar32);
2100vec4 tvar55 =textureOffset( tvar9, tvar42, tvar38, tvar32);
2101ivec4 tvar56 =textureOffset( tvar7, tvar42, tvar38, tvar32);
2102uvec4 tvar57 =textureOffset( tvar8, tvar42, tvar38, tvar32);
2103float tvar58 =textureOffset( tvar2, tvar42, tvar33, tvar32);
2104vec4 tvar59 =texelFetchOffset( tvar22, tvar33, tvar33, tvar33);
2105ivec4 tvar60 =texelFetchOffset( tvar24, tvar33, tvar33, tvar33);
2106uvec4 tvar61 =texelFetchOffset( tvar23, tvar33, tvar33, tvar33);
2107vec4 tvar62 =texelFetchOffset( tvar11, tvar38, tvar33, tvar38);
2108ivec4 tvar63 =texelFetchOffset( tvar12, tvar38, tvar33, tvar38);
2109uvec4 tvar64 =texelFetchOffset( tvar10, tvar38, tvar33, tvar38);
2110vec4 tvar65 =texelFetchOffset( tvar20, tvar43, tvar33, tvar43);
2111ivec4 tvar66 =texelFetchOffset( tvar21, tvar43, tvar33, tvar43);
2112uvec4 tvar67 =texelFetchOffset( tvar19, tvar43, tvar33, tvar43);
2113vec4 tvar68 =texelFetchOffset( tvar14, tvar38, tvar38);
2114ivec4 tvar69 =texelFetchOffset( tvar13, tvar38, tvar38);
2115uvec4 tvar70 =texelFetchOffset( tvar15, tvar38, tvar38);
2116vec4 tvar71 =texelFetchOffset( tvar30, tvar38, tvar33, tvar33);
2117ivec4 tvar72 =texelFetchOffset( tvar28, tvar38, tvar33, tvar33);
2118uvec4 tvar73 =texelFetchOffset( tvar29, tvar38, tvar33, tvar33);
2119vec4 tvar74 =texelFetchOffset( tvar9, tvar43, tvar33, tvar38);
2120ivec4 tvar75 =texelFetchOffset( tvar7, tvar43, tvar33, tvar38);
2121uvec4 tvar76 =texelFetchOffset( tvar8, tvar43, tvar33, tvar38);
2122vec4 tvar77 =textureProjOffset( tvar22, tvar37, tvar33, tvar32);
2123ivec4 tvar78 =textureProjOffset( tvar24, tvar37, tvar33, tvar32);
2124uvec4 tvar79 =textureProjOffset( tvar23, tvar37, tvar33, tvar32);
2125vec4 tvar80 =textureProjOffset( tvar22, tvar81, tvar33, tvar32);
2126ivec4 tvar82 =textureProjOffset( tvar24, tvar81, tvar33, tvar32);
2127uvec4 tvar83 =textureProjOffset( tvar23, tvar81, tvar33, tvar32);
2128vec4 tvar84 =textureProjOffset( tvar11, tvar42, tvar38, tvar32);
2129ivec4 tvar85 =textureProjOffset( tvar12, tvar42, tvar38, tvar32);
2130uvec4 tvar86 =textureProjOffset( tvar10, tvar42, tvar38, tvar32);
2131vec4 tvar87 =textureProjOffset( tvar11, tvar81, tvar38, tvar32);
2132ivec4 tvar88 =textureProjOffset( tvar12, tvar81, tvar38, tvar32);
2133uvec4 tvar89 =textureProjOffset( tvar10, tvar81, tvar38, tvar32);
2134vec4 tvar90 =textureProjOffset( tvar20, tvar81, tvar43, tvar32);
2135ivec4 tvar91 =textureProjOffset( tvar21, tvar81, tvar43, tvar32);
2136uvec4 tvar92 =textureProjOffset( tvar19, tvar81, tvar43, tvar32);
2137vec4 tvar93 =textureProjOffset( tvar14, tvar42, tvar38);
2138ivec4 tvar94 =textureProjOffset( tvar13, tvar42, tvar38);
2139uvec4 tvar95 =textureProjOffset( tvar15, tvar42, tvar38);
2140vec4 tvar96 =textureProjOffset( tvar14, tvar81, tvar38);
2141ivec4 tvar97 =textureProjOffset( tvar13, tvar81, tvar38);
2142uvec4 tvar98 =textureProjOffset( tvar15, tvar81, tvar38);
2143float tvar99 =textureProjOffset( tvar0, tvar81, tvar38);
2144float tvar100 =textureProjOffset( tvar3, tvar81, tvar33, tvar32);
2145float tvar101 =textureProjOffset( tvar4, tvar81, tvar38, tvar32);
2146vec4 tvar102 =textureLodOffset( tvar22, tvar32, tvar32, tvar33);
2147ivec4 tvar103 =textureLodOffset( tvar24, tvar32, tvar32, tvar33);
2148uvec4 tvar104 =textureLodOffset( tvar23, tvar32, tvar32, tvar33);
2149vec4 tvar105 =textureLodOffset( tvar11, tvar37, tvar32, tvar38);
2150ivec4 tvar106 =textureLodOffset( tvar12, tvar37, tvar32, tvar38);
2151uvec4 tvar107 =textureLodOffset( tvar10, tvar37, tvar32, tvar38);
2152vec4 tvar108 =textureLodOffset( tvar20, tvar42, tvar32, tvar43);
2153ivec4 tvar109 =textureLodOffset( tvar21, tvar42, tvar32, tvar43);
2154uvec4 tvar110 =textureLodOffset( tvar19, tvar42, tvar32, tvar43);
2155float tvar111 =textureLodOffset( tvar3, tvar42, tvar32, tvar33);
2156float tvar112 =textureLodOffset( tvar4, tvar42, tvar32, tvar38);
2157vec4 tvar113 =textureLodOffset( tvar30, tvar37, tvar32, tvar33);
2158ivec4 tvar114 =textureLodOffset( tvar28, tvar37, tvar32, tvar33);
2159uvec4 tvar115 =textureLodOffset( tvar29, tvar37, tvar32, tvar33);
2160vec4 tvar116 =textureLodOffset( tvar9, tvar42, tvar32, tvar38);
2161ivec4 tvar117 =textureLodOffset( tvar7, tvar42, tvar32, tvar38);
2162uvec4 tvar118 =textureLodOffset( tvar8, tvar42, tvar32, tvar38);
2163float tvar119 =textureLodOffset( tvar2, tvar42, tvar32, tvar33);
2164vec4 tvar120 =textureProjLodOffset( tvar22, tvar37, tvar32, tvar33);
2165ivec4 tvar121 =textureProjLodOffset( tvar24, tvar37, tvar32, tvar33);
2166uvec4 tvar122 =textureProjLodOffset( tvar23, tvar37, tvar32, tvar33);
2167vec4 tvar123 =textureProjLodOffset( tvar22, tvar81, tvar32, tvar33);
2168ivec4 tvar124 =textureProjLodOffset( tvar24, tvar81, tvar32, tvar33);
2169uvec4 tvar125 =textureProjLodOffset( tvar23, tvar81, tvar32, tvar33);
2170vec4 tvar126 =textureProjLodOffset( tvar11, tvar42, tvar32, tvar38);
2171ivec4 tvar127 =textureProjLodOffset( tvar12, tvar42, tvar32, tvar38);
2172uvec4 tvar128 =textureProjLodOffset( tvar10, tvar42, tvar32, tvar38);
2173vec4 tvar129 =textureProjLodOffset( tvar11, tvar81, tvar32, tvar38);
2174ivec4 tvar130 =textureProjLodOffset( tvar12, tvar81, tvar32, tvar38);
2175uvec4 tvar131 =textureProjLodOffset( tvar10, tvar81, tvar32, tvar38);
2176vec4 tvar132 =textureProjLodOffset( tvar20, tvar81, tvar32, tvar43);
2177ivec4 tvar133 =textureProjLodOffset( tvar21, tvar81, tvar32, tvar43);
2178uvec4 tvar134 =textureProjLodOffset( tvar19, tvar81, tvar32, tvar43);
2179float tvar135 =textureProjLodOffset( tvar3, tvar81, tvar32, tvar33);
2180float tvar136 =textureProjLodOffset( tvar4, tvar81, tvar32, tvar38);
2181}