yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
5cffd9a7
main
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 { 10int i ; 11}ubInst [4 ]; 12 13 14vec2 coord ; 15void testIndexing () 16{ 17int i = 0 ; 18texture (tex [i ],coord );//integer expression for indexing 19ubInst [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 527int8_t var1 ; 528i8vec2 var2 ; 529i8vec3 var3 ; 530i8vec4 var4 ; 531uint8_t var17 ; 532u8vec2 var18 ; 533u8vec3 var19 ; 534u8vec4 var20 ; 535// 16 bit data types 536int16_t var5 ; 537i16vec2 var6 ; 538i16vec3 var7 ; 539i16vec4 var8 ; 540uint16_t var21 ; 541u16vec2 var22 ; 542u16vec3 var23 ; 543u16vec4 var24 ; 544// 32 bit data types 545int32_t var9 ; 546i32vec2 var10 ; 547i32vec3 var11 ; 548i32vec4 var12 ; 549uint32_t var25 ; 550u32vec2 var26 ; 551u32vec3 var27 ; 552u32vec4 var28 ; 553 554int64_t var13 ; 555i64vec2 var14 ; 556i64vec3 var15 ; 557i64vec4 var16 ; 558uint64_t var29 ; 559u64vec2 var30 ; 560u64vec3 var31 ; 561u64vec4 var32 ; 562 563float16_t var33 ; 564f16vec2 var34 ; 565f16vec3 var35 ; 566f16vec4 var36 ; 567float32_t var37 ; 568f32vec2 var38 ; 569f32vec3 var39 ; 570f32vec4 var40 ; 571 572float64_t var41 ;// needs GL_ARB_gpu_shader_fp64 573f64vec2 var42 ;// needs GL_ARB_gpu_shader_fp64 574f64vec3 var43 ;// needs GL_ARB_gpu_shader_fp64 575f64vec4 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{ 598uint8_t uiv = uint8_t (1 ); 599double dv = 1.0 ; 600int16_t iv = int16_t (1 ); 601bool bv = false; 602float (uiv );// converts an 8-bit uint value to a float 603int64_t (dv );// converts a double value to a 64-bit int 604float64_t (iv );// converts a 16-bit int value to a 64-bit float 605uint16_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/* 1868source 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 1904int64_t v1 = packInt2x32 (ivec2 (0 )); 1905uint64_t v2 = packUint2x32 (uvec2 (0 )); 1906 1907ivec2 v3 = unpackInt2x32 (int64_t (0 )); 1908uvec2 v4 = unpackUint2x32 (uint64_t (0 )); 1909uint v5 = packFloat2x16 (f16vec2 (0 )); 1910f16vec2 v6 = unpackFloat2x16 (uint (0 )); 1911int64_t v7 = doubleBitsToInt64 (double (0 )); 1912i64vec2 v8 = doubleBitsToInt64 (dvec2 (0 )); 1913i64vec3 v9 = doubleBitsToInt64 (dvec3 (0 )); 1914i64vec4 v10 = doubleBitsToInt64 (dvec4 (0 )); 1915 1916uint64_t v11 = doubleBitsToUint64 (double (0 )); 1917u64vec2 v12 = doubleBitsToUint64 (dvec2 (0 )); 1918u64vec3 v13 = doubleBitsToUint64 (dvec3 (0 )); 1919u64vec4 v14 = doubleBitsToUint64 (dvec4 (0 )); 1920 1921double v15 = int64BitsToDouble (int64_t (0 )); 1922dvec2 v16 = int64BitsToDouble (i64vec2 (0 )); 1923dvec3 v17 = int64BitsToDouble (i64vec3 (0 )); 1924dvec4 v18 = int64BitsToDouble (i64vec4 (0 )); 1925 1926double v19 = uint64BitsToDouble (uint64_t (0 )); 1927dvec2 v20 = uint64BitsToDouble (u64vec2 (0 )); 1928dvec3 v21 = uint64BitsToDouble (u64vec3 (0 )); 1929dvec4 v22 = uint64BitsToDouble (u64vec4 (0 )); 1930 1931bool b1 = anyThreadNV ((var == 1 )); 1932bool b2 = allThreadsNV ((var == 1 )); 1933bool 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 1945bvec2 b1 = lessThan (i64vec2 (0 ),i64vec2 (1 )); 1946bvec3 b2 = lessThan (i64vec3 (0 ),i64vec3 (1 )); 1947bvec4 b3 = lessThan (i64vec4 (0 ),i64vec4 (1 )); 1948bvec2 b4 = lessThan (u64vec2 (0 ),u64vec2 (1 )); 1949bvec3 b5 = lessThan (u64vec3 (0 ),u64vec3 (1 )); 1950bvec4 b6 = lessThan (u64vec4 (0 ),u64vec4 (1 )); 1951 1952bvec2 b7 = lessThanEqual (i64vec2 (0 ),i64vec2 (1 )); 1953bvec3 b8 = lessThanEqual (i64vec3 (0 ),i64vec3 (1 )); 1954bvec4 b9 = lessThanEqual (i64vec4 (0 ),i64vec4 (1 )); 1955bvec2 b10 = lessThanEqual (u64vec2 (0 ),u64vec2 (1 )); 1956bvec3 b11 = lessThanEqual (u64vec3 (0 ),u64vec3 (1 )); 1957bvec4 b12 = lessThanEqual (u64vec4 (0 ),u64vec4 (1 )); 1958 1959bvec2 b13 = greaterThan (i64vec2 (0 ),i64vec2 (1 )); 1960bvec3 b14 = greaterThan (i64vec3 (0 ),i64vec3 (1 )); 1961bvec4 b15 = greaterThan (i64vec4 (0 ),i64vec4 (1 )); 1962bvec2 b16 = greaterThan (u64vec2 (0 ),u64vec2 (1 )); 1963bvec3 b17 = greaterThan (u64vec3 (0 ),u64vec3 (1 )); 1964bvec4 b18 = greaterThan (u64vec4 (0 ),u64vec4 (1 )); 1965 1966bvec2 b19 = greaterThanEqual (i64vec2 (0 ),i64vec2 (1 )); 1967bvec3 b20 = greaterThanEqual (i64vec3 (0 ),i64vec3 (1 )); 1968bvec4 b21 = greaterThanEqual (i64vec4 (0 ),i64vec4 (1 )); 1969bvec2 b22 = greaterThanEqual (u64vec2 (0 ),u64vec2 (1 )); 1970bvec3 b23 = greaterThanEqual (u64vec3 (0 ),u64vec3 (1 )); 1971bvec4 b24 = greaterThanEqual (u64vec4 (0 ),u64vec4 (1 )); 1972 1973bvec2 b25 = equal (i64vec2 (0 ),i64vec2 (1 )); 1974bvec3 b26 = equal (i64vec3 (0 ),i64vec3 (1 )); 1975bvec4 b27 = equal (i64vec4 (0 ),i64vec4 (1 )); 1976bvec2 b28 = equal (u64vec2 (0 ),u64vec2 (1 )); 1977bvec3 b29 = equal (u64vec3 (0 ),u64vec3 (1 )); 1978bvec4 b30 = equal (u64vec4 (0 ),u64vec4 (1 )); 1979 1980bvec2 b31 = notEqual (i64vec2 (0 ),i64vec2 (1 )); 1981bvec3 b32 = notEqual (i64vec3 (0 ),i64vec3 (1 )); 1982bvec4 b33 = notEqual (i64vec4 (0 ),i64vec4 (1 )); 1983bvec2 b34 = notEqual (u64vec2 (0 ),u64vec2 (1 )); 1984bvec3 b35 = notEqual (u64vec3 (0 ),u64vec3 (1 )); 1985bvec4 b36 = notEqual (u64vec4 (0 ),u64vec4 (1 )); 1986 1987bvec2 b37 = lessThan (f16vec2 (0 ),f16vec2 (1 )); 1988bvec3 b38 = lessThan (f16vec3 (0 ),f16vec3 (1 )); 1989bvec4 b39 = lessThan (f16vec4 (0 ),f16vec4 (1 )); 1990 1991bvec2 b40 = lessThanEqual (f16vec2 (0 ),f16vec2 (1 )); 1992bvec3 b41 = lessThanEqual (f16vec3 (0 ),f16vec3 (1 )); 1993bvec4 b42 = lessThanEqual (f16vec4 (0 ),f16vec4 (1 )); 1994 1995bvec2 b43 = greaterThan (f16vec2 (0 ),f16vec2 (1 )); 1996bvec3 b44 = greaterThan (f16vec3 (0 ),f16vec3 (1 )); 1997bvec4 b45 = greaterThan (f16vec4 (0 ),f16vec4 (1 )); 1998 1999bvec2 b46 = greaterThanEqual (f16vec2 (0 ),f16vec2 (1 )); 2000bvec3 b47 = greaterThanEqual (f16vec3 (0 ),f16vec3 (1 )); 2001bvec4 b48 = greaterThanEqual (f16vec4 (0 ),f16vec4 (1 )); 2002 2003bvec2 b49 = equal (f16vec2 (0 ),f16vec2 (1 )); 2004bvec3 b50 = equal (f16vec3 (0 ),f16vec3 (1 )); 2005bvec4 b51 = equal (f16vec4 (0 ),f16vec4 (1 )); 2006 2007bvec2 b52 = notEqual (f16vec2 (0 ),f16vec2 (1 )); 2008bvec3 b53 = notEqual (f16vec3 (0 ),f16vec3 (1 )); 2009bvec4 b54 = notEqual (f16vec4 (0 ),f16vec4 (1 )); 2010 2011// Dependency on GL_ARB_gpu_shader_fp64 2012bvec2 b55 = lessThan (dvec2 (0 ),dvec2 (1 )); 2013bvec3 b56 = lessThan (dvec3 (0 ),dvec3 (1 )); 2014bvec4 b57 = lessThan (dvec4 (0 ),dvec4 (1 )); 2015 2016bvec2 b58 = lessThanEqual (dvec2 (0 ),dvec2 (1 )); 2017bvec3 b59 = lessThanEqual (dvec3 (0 ),dvec3 (1 )); 2018bvec4 b60 = lessThanEqual (dvec4 (0 ),dvec4 (1 )); 2019 2020bvec2 b61 = greaterThan (dvec2 (0 ),dvec2 (1 )); 2021bvec3 b62 = greaterThan (dvec3 (0 ),dvec3 (1 )); 2022bvec4 b63 = greaterThan (dvec4 (0 ),dvec4 (1 )); 2023 2024bvec2 b64 = greaterThanEqual (dvec2 (0 ),dvec2 (1 )); 2025bvec3 b65 = greaterThanEqual (dvec3 (0 ),dvec3 (1 )); 2026bvec4 b66 = greaterThanEqual (dvec4 (0 ),dvec4 (1 )); 2027 2028bvec2 b67 = equal (dvec2 (0 ),dvec2 (1 )); 2029bvec3 b68 = equal (dvec3 (0 ),dvec3 (1 )); 2030bvec4 b69 = equal (dvec4 (0 ),dvec4 (1 )); 2031 2032bvec2 b70 = notEqual (dvec2 (0 ),dvec2 (1 )); 2033bvec3 b71 = notEqual (dvec3 (0 ),dvec3 (1 )); 2034bvec4 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}