yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
69d0c1ac
main
1 2 3groupshared uint gs_ua ; 4groupshared uint gs_ub ; 5groupshared uint gs_uc ; 6groupshared uint2 gs_ua2 ; 7groupshared uint2 gs_ub2 ; 8groupshared uint2 gs_uc2 ; 9groupshared uint3 gs_ua3 ; 10groupshared uint3 gs_ub3 ; 11groupshared uint3 gs_uc3 ; 12groupshared uint4 gs_ua4 ; 13groupshared uint4 gs_ub4 ; 14groupshared uint4 gs_uc4 ; 15 16float PixelShaderFunctionS (float inF0 ,float inF1 ,float inF2 ,uint inU0 ,int inU1 ) 17{ 18uint out_u1 ; 19 20bool r000 = all (inF0 ); 21float r001 = abs (inF0 ); 22float r002 = acos (inF0 ); 23bool r003 = any (inF0 ); 24float r004 = asin (inF0 ); 25int r005 = asint (inF0 ); 26uint r006 = asuint (inU1 ); 27float r007 = asfloat (inU0 ); 28// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics 29float r009 = atan (inF0 ); 30float r010 = atan2 (inF0 ,inF1 ); 31float r011 = ceil (inF0 ); 32float r012 = clamp (inF0 ,inF1 ,inF2 ); 33clip (inF0 ); 34clip (r005 ); 35float r014 = cos (inF0 ); 36float r015 = cosh (inF0 ); 37int r016 = countbits (7 ); 38float r017 = ddx (inF0 ); 39float r018 = ddx_coarse (inF0 ); 40float r019 = ddx_fine (inF0 ); 41float r020 = ddy (inF0 ); 42float r021 = ddy_coarse (inF0 ); 43float r022 = ddy_fine (inF0 ); 44float r023 = degrees (inF0 ); 45float r024 = distance (inF0 ,inF1 ); 46// EvaluateAttributeAtCentroid(inF0); 47// EvaluateAttributeAtSample(inF0, 0); 48// TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); 49float r027 = exp (inF0 ); 50float r028 = exp2 (inF0 ); 51uint r029 = firstbithigh (7 ); 52uint r030 = firstbitlow (7 ); 53float r031 = floor (inF0 ); 54// TODO: fma(inD0, inD1, inD2); 55float r033 = fmod (inF0 ,inF1 ); 56float r033i = fmod (inF0 ,2 ); 57float r034 = frac (inF0 ); 58float r036 = fwidth (inF0 ); 59bool r037 = isinf (inF0 ); 60bool r038 = isnan (inF0 ); 61float r039 = ldexp (inF0 ,inF1 ); 62float r039a = lerp (inF0 ,inF1 ,inF2 ); 63float r040 = log (inF0 ); 64float r041 = log10 (inF0 ); 65float r042 = log2 (inF0 ); 66float r043 = max (inF0 ,inF1 ); 67float r044 = min (inF0 ,inF1 ); 68float r045 = pow (inF0 ,inF1 ); 69float r046 = radians (inF0 ); 70float r047 = rcp (inF0 ); 71uint r048 = reversebits (2 ); 72float r049 = round (inF0 ); 73float r050 = rsqrt (inF0 ); 74float r051 = saturate (inF0 ); 75float r052 = sign (inF0 ); 76float r053 = sin (inF0 ); 77sincos (inF0 ,inF1 ,inF2 ); 78float r055 = sinh (inF0 ); 79float r056 = smoothstep (inF0 ,inF1 ,inF2 ); 80float r057 = sqrt (inF0 ); 81float r058 = step (inF0 ,inF1 ); 82float r059 = tan (inF0 ); 83float r060 = tanh (inF0 ); 84// TODO: sampler intrinsics, when we can declare the types. 85float r061 = trunc (inF0 ); 86 87return 0.0 ; 88} 89 90float1 PixelShaderFunction1 (float1 inF0 ,float1 inF1 ,float1 inF2 ) 91{ 92// TODO: ... add when float1 prototypes are generated 93return 0.0 ; 94} 95 96float2 PixelShaderFunction2 (float2 inF0 ,float2 inF1 ,float2 inF2 ,uint2 inU0 ,uint2 inU1 ) 97{ 98uint2 out_u2 ; 99 100bool r000 = all (inF0 ); 101float2 r001 = abs (inF0 ); 102float2 r002 = acos (inF0 ); 103bool r003 = any (inF0 ); 104float2 r004 = asin (inF0 ); 105int2 r005 = asint (inF0 ); 106uint2 r006 = asuint (inF0 ); 107float2 r007 = asfloat (inU0 ); 108// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics 109float2 r009 = atan (inF0 ); 110float2 r010 = atan2 (inF0 ,inF1 ); 111float2 r011 = ceil (inF0 ); 112float2 r012 = clamp (inF0 ,inF1 ,inF2 ); 113clip (inF0 ); 114clip (inU0 ); 115float2 r013 = cos (inF0 ); 116float2 r015 = cosh (inF0 ); 117int2 r016 = countbits (int2 (7 ,3 )); 118float2 r017 = ddx (inF0 ); 119float2 r018 = ddx_coarse (inF0 ); 120float2 r019 = ddx_fine (inF0 ); 121float2 r020 = ddy (inF0 ); 122float2 r021 = ddy_coarse (inF0 ); 123float2 r022 = ddy_fine (inF0 ); 124float2 r023 = degrees (inF0 ); 125// EvaluateAttributeAtCentroid(inF0); 126// EvaluateAttributeAtSample(inF0, 0); 127// TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); 128float r026 = distance (inF0 ,inF1 ); 129float r027 = dot (inF0 ,inF1 ); 130// EvaluateAttributeAtCentroid(inF0); 131// EvaluateAttributeAtSample(inF0, 0); 132// TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); 133float2 r028 = exp (inF0 ); 134float2 r029 = exp2 (inF0 ); 135float2 r030 = faceforward (inF0 ,inF1 ,inF2 ); 136uint2 r031 = firstbithigh (uint2 (7 ,8 )); 137uint2 r032 = firstbitlow (uint2 (7 ,8 )); 138float2 r033 = floor (inF0 ); 139// TODO: fma(inD0, inD1, inD2); 140float2 r035 = fmod (inF0 ,inF1 ); 141float2 r036 = frac (inF0 ); 142float2 r038 = fwidth (inF0 ); 143bool2 r039 = isinf (inF0 ); 144bool2 r040 = isnan (inF0 ); 145float2 r041 = ldexp (inF0 ,inF1 ); 146float2 r039a = lerp (inF0 ,inF1 ,inF2 ); 147float r042 = length (inF0 ); 148float2 r043 = log (inF0 ); 149float2 r044 = log10 (inF0 ); 150float2 r045 = log2 (inF0 ); 151float2 r046 = max (inF0 ,inF1 ); 152float2 r047 = min (inF0 ,inF1 ); 153float2 r048 = normalize (inF0 ); 154float2 r049 = pow (inF0 ,inF1 ); 155float2 r050 = radians (inF0 ); 156float2 r051 = rcp (inF0 ); 157float2 r052 = reflect (inF0 ,inF1 ); 158float2 r053 = refract (inF0 ,inF1 ,2.0 ); 159uint2 r054 = reversebits (uint2 (1 ,2 )); 160float2 r055 = round (inF0 ); 161float2 r056 = rsqrt (inF0 ); 162float2 r057 = saturate (inF0 ); 163float2 r058 = sign (inF0 ); 164float2 r059 = sin (inF0 ); 165sincos (inF0 ,inF1 ,inF2 ); 166float2 r060 = sinh (inF0 ); 167float2 r061 = smoothstep (inF0 ,inF1 ,inF2 ); 168float2 r062 = sqrt (inF0 ); 169float2 r063 = step (inF0 ,inF1 ); 170float2 r064 = tan (inF0 ); 171float2 r065 = tanh (inF0 ); 172// TODO: sampler intrinsics, when we can declare the types. 173float2 r066 = trunc (inF0 ); 174 175// TODO: ... add when float1 prototypes are generated 176return float2 (1 ,2 ); 177} 178 179float3 PixelShaderFunction3 (float3 inF0 ,float3 inF1 ,float3 inF2 ,uint3 inU0 ,uint3 inU1 ) 180{ 181uint3 out_u3 ; 182 183bool r000 = all (inF0 ); 184float3 r001 = abs (inF0 ); 185float3 r002 = acos (inF0 ); 186bool r003 = any (inF0 ); 187float3 r004 = asin (inF0 ); 188int3 r005 = asint (inF0 ); 189uint3 r006 = asuint (inF0 ); 190float3 r007 = asfloat (inU0 ); 191// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics 192float3 r009 = atan (inF0 ); 193float3 r010 = atan2 (inF0 ,inF1 ); 194float3 r011 = ceil (inF0 ); 195float3 r012 = clamp (inF0 ,inF1 ,inF2 ); 196clip (inF0 ); 197clip (inU0 ); 198float3 r013 = cos (inF0 ); 199float3 r014 = cosh (inF0 ); 200uint3 r015 = countbits (uint3 (7 ,3 ,5 )); 201float3 r016 = cross (inF0 ,inF1 ); 202float3 r017 = ddx (inF0 ); 203float3 r018 = ddx_coarse (inF0 ); 204float3 r019 = ddx_fine (inF0 ); 205float3 r020 = ddy (inF0 ); 206float3 r021 = ddy_coarse (inF0 ); 207float3 r022 = ddy_fine (inF0 ); 208float3 r023 = degrees (inF0 ); 209float r024 = distance (inF0 ,inF1 ); 210float r025 = dot (inF0 ,inF1 ); 211// EvaluateAttributeAtCentroid(inF0); 212// EvaluateAttributeAtSample(inF0, 0); 213// TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); 214float3 r029 = exp (inF0 ); 215float3 r030 = exp2 (inF0 ); 216float3 r031 = faceforward (inF0 ,inF1 ,inF2 ); 217uint3 r032 = firstbithigh (uint3 (2 ,3 ,4 )); 218uint3 r033 = firstbitlow (uint3 (2 ,3 ,4 )); 219float3 r034 = floor (inF0 ); 220// TODO: fma(inD0, inD1, inD2); 221float3 r036 = fmod (inF0 ,inF1 ); 222float3 r037 = frac (inF0 ); 223float3 r039 = fwidth (inF0 ); 224bool3 r040 = isinf (inF0 ); 225bool3 r041 = isnan (inF0 ); 226float3 r042 = ldexp (inF0 ,inF1 ); 227float3 r039a = lerp (inF0 ,inF1 ,inF2 ); 228float3 r039b = lerp (inF0 ,inF1 ,0.3 );// test vec,vec,scalar lerp 229float r043 = length (inF0 ); 230float3 r044 = log (inF0 ); 231float3 r045 = log10 (inF0 ); 232float3 r046 = log2 (inF0 ); 233float3 r047 = max (inF0 ,inF1 ); 234float3 r048 = min (inF0 ,inF1 ); 235float3 r049 = normalize (inF0 ); 236float3 r050 = pow (inF0 ,inF1 ); 237float3 r051 = radians (inF0 ); 238float3 r052 = rcp (inF0 ); 239float3 r053 = reflect (inF0 ,inF1 ); 240float3 r054 = refract (inF0 ,inF1 ,2.0 ); 241uint3 r055 = reversebits (uint3 (1 ,2 ,3 )); 242float3 r056 = round (inF0 ); 243float3 r057 = rsqrt (inF0 ); 244float3 r058 = saturate (inF0 ); 245float3 r059 = sign (inF0 ); 246float3 r060 = sin (inF0 ); 247sincos (inF0 ,inF1 ,inF2 ); 248float3 r061 = sinh (inF0 ); 249float3 r062 = smoothstep (inF0 ,inF1 ,inF2 ); 250float3 r063 = sqrt (inF0 ); 251float3 r064 = step (inF0 ,inF1 ); 252float3 r065 = tan (inF0 ); 253float3 r066 = tanh (inF0 ); 254// TODO: sampler intrinsics, when we can declare the types. 255float3 r067 = trunc (inF0 ); 256 257// TODO: ... add when float1 prototypes are generated 258return float3 (1 ,2 ,3 ); 259} 260 261float4 PixelShaderFunction (float4 inF0 ,float4 inF1 ,float4 inF2 ,uint4 inU0 ,uint4 inU1 ) 262{ 263uint4 out_u4 ; 264 265bool r000 = all (inF0 ); 266float4 r001 = abs (inF0 ); 267float4 r002 = acos (inF0 ); 268bool r003 = any (inF0 ); 269float4 r004 = asin (inF0 ); 270int4 r005 = asint (inF0 ); 271uint4 r006 = asuint (inF0 ); 272float4 r007 = asfloat (inU0 ); 273// asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics 274float4 r009 = atan (inF0 ); 275float4 r010 = atan2 (inF0 ,inF1 ); 276float4 r011 = ceil (inF0 ); 277float4 r012 = clamp (inF0 ,inF1 ,inF2 ); 278clip (inF0 ); 279clip (inU0 ); 280float4 r013 = cos (inF0 ); 281float4 r014 = cosh (inF0 ); 282uint4 r015 = countbits (uint4 (7 ,3 ,5 ,2 )); 283float4 r016 = ddx (inF0 ); 284float4 r017 = ddx_coarse (inF0 ); 285float4 r018 = ddx_fine (inF0 ); 286float4 r019 = ddy (inF0 ); 287float4 r020 = ddy_coarse (inF0 ); 288float4 r021 = ddy_fine (inF0 ); 289float4 r022 = degrees (inF0 ); 290float r023 = distance (inF0 ,inF1 ); 291float r024 = dot (inF0 ,inF1 ); 292float4 r025 = dst (inF0 ,inF1 ); 293// EvaluateAttributeAtCentroid(inF0); 294// EvaluateAttributeAtSample(inF0, 0); 295// TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); 296float4 r029 = exp (inF0 ); 297float4 r030 = exp2 (inF0 ); 298float4 r031 = faceforward (inF0 ,inF1 ,inF2 ); 299uint4 r032 = firstbithigh (uint4 (7 ,8 ,9 ,10 )); 300uint4 r033 = firstbitlow (uint4 (7 ,8 ,9 ,10 )); 301float4 r034 = floor (inF0 ); 302// TODO: fma(inD0, inD1, inD2); 303float4 r036 = fmod (inF0 ,inF1 ); 304float4 r037 = frac (inF0 ); 305float4 r039 = fwidth (inF0 ); 306bool4 r040 = isinf (inF0 ); 307bool4 r041 = isnan (inF0 ); 308float4 r042 = ldexp (inF0 ,inF1 ); 309float4 r039a = lerp (inF0 ,inF1 ,inF2 ); 310float r043 = length (inF0 ); 311float4 r044 = log (inF0 ); 312float4 r045 = log10 (inF0 ); 313float4 r046 = log2 (inF0 ); 314float4 r047 = max (inF0 ,inF1 ); 315float4 r048 = min (inF0 ,inF1 ); 316float4 r049 = normalize (inF0 ); 317float4 r050 = pow (inF0 ,inF1 ); 318float4 r051 = radians (inF0 ); 319float4 r052 = rcp (inF0 ); 320float4 r053 = reflect (inF0 ,inF1 ); 321float4 r054 = refract (inF0 ,inF1 ,2.0 ); 322uint4 r055 = reversebits (uint4 (1 ,2 ,3 ,4 )); 323float4 r056 = round (inF0 ); 324float4 r057 = rsqrt (inF0 ); 325float4 r058 = saturate (inF0 ); 326float4 r059 = sign (inF0 ); 327float4 r060 = sin (inF0 ); 328sincos (inF0 ,inF1 ,inF2 ); 329float4 r061 = sinh (inF0 ); 330float4 r062 = smoothstep (inF0 ,inF1 ,inF2 ); 331float4 r063 = sqrt (inF0 ); 332float4 r064 = step (inF0 ,inF1 ); 333float4 r065 = tan (inF0 ); 334float4 r066 = tanh (inF0 ); 335// TODO: sampler intrinsics, when we can declare the types. 336float4 r067 = trunc (inF0 ); 337 338// TODO: ... add when float1 prototypes are generated 339return float4 (1 ,2 ,3 ,4 ); 340} 341 342// TODO: for mats: 343// asfloat(inU0); \ 344// asint(inF0); \ 345// asuint(inF0); \ 346 347// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. 348#define MATFNS (MT ) \ 349 bool r000 = all(inF0); \ 350 MT r001 = abs(inF0); \ 351 acos(inF0); \ 352 bool r003 = any(inF0); \ 353 MT r004 = asin(inF0); \ 354 MT r005 = atan(inF0); \ 355 MT r006 = atan2(inF0, inF1); \ 356 MT r007 = ceil(inF0); \ 357 clip(inF0); \ 358 MT r008 = clamp(inF0, inF1, inF2); \ 359 MT r009 = cos(inF0); \ 360 MT r010 = cosh(inF0); \ 361 MT r011 = ddx(inF0); \ 362 MT r012 = ddx_coarse(inF0); \ 363 MT r013 = ddx_fine(inF0); \ 364 MT r014 = ddy(inF0); \ 365 MT r015 = ddy_coarse(inF0); \ 366 MT r016 = ddy_fine(inF0); \ 367 MT r017 = degrees(inF0); \ 368 float r018 = determinant(inF0); \ 369 MT r019 = exp(inF0); \ 370 MT R020 = exp2(inF0); \ 371 MT r021 = floor(inF0); \ 372 MT r022 = fmod(inF0, inF1); \ 373 MT r023 = frac(inF0); \ 374 MT r025 = fwidth(inF0); \ 375 MT r026 = ldexp(inF0, inF1); \ 376 MT r026a = lerp(inF0, inF1, inF2); \ 377 MT r027 = log(inF0); \ 378 MT r028 = log10(inF0); \ 379 MT r029 = log2(inF0); \ 380 MT r030 = max(inF0, inF1); \ 381 MT r031 = min(inF0, inF1); \ 382 MT r032 = pow(inF0, inF1); \ 383 MT r033 = radians(inF0); \ 384 MT r034 = round(inF0); \ 385 MT r035 = rsqrt(inF0); \ 386 MT r036 = saturate(inF0); \ 387 MT r037 = sign(inF0); \ 388 MT r038 = sin(inF0); \ 389 sincos(inF0, inF1, inF2); \ 390 MT r039 = sinh(inF0); \ 391 MT r049 = smoothstep(inF0, inF1, inF2); \ 392 MT r041 = sqrt(inF0); \ 393 MT r042 = step(inF0, inF1); \ 394 MT r043 = tan(inF0); \ 395 MT r044 = tanh(inF0); \ 396 transpose(inF0); \ 397 MT r046 = trunc(inF0); 398 399// TODO: turn on non-square matrix tests when protos are available. 400 401float2x2 PixelShaderFunction2x2 (float2x2 inF0 ,float2x2 inF1 ,float2x2 inF2 ) 402{ 403// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. 404MATFNS (float2x2 ); 405 406// TODO: ... add when float1 prototypes are generated 407return float2x2 (2 ,2 ,2 ,2 ); 408} 409 410float3x3 PixelShaderFunction3x3 (float3x3 inF0 ,float3x3 inF1 ,float3x3 inF2 ) 411{ 412// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. 413MATFNS (float3x3 ); 414 415// TODO: ... add when float1 prototypes are generated 416return float3x3 (3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ); 417} 418 419float4x4 PixelShaderFunction4x4 (float4x4 inF0 ,float4x4 inF1 ,float4x4 inF2 ) 420{ 421// TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. 422MATFNS (float4x4 ); 423 424// TODO: ... add when float1 prototypes are generated 425return float4x4 (4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ,4 ); 426} 427 428#define TESTGENMUL (ST ,VT ,MT ) \ 429 ST r0 = mul(inF0, inF1); \ 430 VT r1 = mul(inFV0, inF0); \ 431 VT r2 = mul(inF0, inFV0); \ 432 ST r3 = mul(inFV0, inFV1); \ 433 VT r4 = mul(inFM0, inFV0); \ 434 VT r5 = mul(inFV0, inFM0); \ 435 MT r6 = mul(inFM0, inF0); \ 436 MT r7 = mul(inF0, inFM0); \ 437 MT r8 = mul(inFM0, inFM1); 438 439 440void TestGenMul2 (float inF0 ,float inF1 , 441float2 inFV0 ,float2 inFV1 , 442float2x2 inFM0 ,float2x2 inFM1 ) 443{ 444TESTGENMUL (float ,float2 ,float2x2 ); 445} 446 447void TestGenMul3 (float inF0 ,float inF1 , 448float3 inFV0 ,float3 inFV1 , 449float3x3 inFM0 ,float3x3 inFM1 ) 450{ 451TESTGENMUL (float ,float3 ,float3x3 ); 452} 453 454void TestGenMul4 (float inF0 ,float inF1 , 455float4 inFV0 ,float4 inFV1 , 456float4x4 inFM0 ,float4x4 inFM1 ) 457{ 458TESTGENMUL (float ,float4 ,float4x4 ); 459} 460 461// Test some non-square mats 462void TestGenMulNxM (float inF0 ,float inF1 , 463float2 inFV2 ,float3 inFV3 , 464float2x3 inFM2x3 ,float3x2 inFM3x2 , 465float3x3 inFM3x3 ,float3x4 inFM3x4 , 466float2x4 inFM2x4 ) 467{ 468float r00 = mul (inF0 ,inF1 );// S=S*S 469float2 r01 = mul (inFV2 ,inF0 );// V=V*S 470float3 r02 = mul (inFV3 ,inF0 );// V=V*S 471float2 r03 = mul (inF0 ,inFV2 );// V=S*V 472float3 r04 = mul (inF0 ,inFV3 );// V=S*V 473float r05 = mul (inFV2 ,inFV2 );// S=V*V 474float r06 = mul (inFV3 ,inFV3 );// S=V*V 475float3 r07 = mul (inFV2 ,inFM2x3 );// V=V*M (return V dim is Mcols) 476float2 r08 = mul (inFV3 ,inFM3x2 );// V=V*M (return V dim is Mcols) 477float2 r09 = mul (inFM2x3 ,inFV3 );// V=M*V (return V dim is Mrows) 478float3 r10 = mul (inFM3x2 ,inFV2 );// V=M*V (return V dim is Mrows) 479float2x3 r11 = mul (inFM2x3 ,inF0 ); 480float3x2 r12 = mul (inFM3x2 ,inF0 ); 481float2x2 r13 = mul (inFM2x3 ,inFM3x2 ); 482float2x3 r14 = mul (inFM2x3 ,inFM3x3 ); 483float2x4 r15 = mul (inFM2x3 ,inFM3x4 ); 484float3x4 r16 = mul (inFM3x2 ,inFM2x4 ); 485} 486 487struct PS_OUTPUT {float4 color :SV_Target0 ; }; 488 489PS_OUTPUT main () 490{ 491PS_OUTPUT ps_output ; 492ps_output .color = 1.0 ; 493return ps_output ; 494};