From 647fccaf2f8572430c2fb3fa305027717834e759 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 15 Mar 2018 21:07:35 -0600 Subject: [PATCH] AST: Fix shift conversions, which don't require matching types. The base and shift amount need to be integers, but not of the same type. This fixes #1296 and replaces #1297. --- Test/baseResults/spv.int16.frag.out | 674 ++++++++-------- Test/baseResults/spv.int32.frag.out | 662 ++++++++-------- Test/baseResults/spv.int64.frag.out | 731 +++++++++--------- Test/baseResults/spv.rankShift.comp.out | 57 ++ Test/baseResults/spv.vulkan110.int16.frag.out | 674 ++++++++-------- Test/spv.int64.frag | 2 + Test/spv.rankShift.comp | 15 + glslang/MachineIndependent/Intermediate.cpp | 72 +- gtests/Spv.FromFile.cpp | 1 + 9 files changed, 1475 insertions(+), 1413 deletions(-) create mode 100755 Test/baseResults/spv.rankShift.comp.out create mode 100644 Test/spv.rankShift.comp diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index 22f51380a..835556913 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -1,7 +1,7 @@ spv.int16.frag // Module Version 10000 // Generated by (magic number): 80006 -// Id's are bound by 525 +// Id's are bound by 523 Capability Shader Capability Float16 @@ -55,48 +55,48 @@ spv.int16.frag Name 220 "i" Name 227 "uv" Name 243 "i64" - Name 283 "b" - Name 345 "i16v" - Name 348 "i16" - Name 358 "u16v" - Name 360 "u16" - Name 430 "i32" - Name 433 "i64" - Name 436 "i16v4" - Name 439 "u32" - Name 440 "u16v2" - Name 444 "u64" - Name 447 "u16v4" - Name 459 "bv" - Name 520 "Block" - MemberName 520(Block) 0 "i16" - MemberName 520(Block) 1 "i16v2" - MemberName 520(Block) 2 "i16v3" - MemberName 520(Block) 3 "i16v4" - MemberName 520(Block) 4 "u16" - MemberName 520(Block) 5 "u16v2" - MemberName 520(Block) 6 "u16v3" - MemberName 520(Block) 7 "u16v4" - Name 522 "block" - Name 523 "si16" - Name 524 "su16" + Name 281 "b" + Name 343 "i16v" + Name 346 "i16" + Name 356 "u16v" + Name 358 "u16" + Name 428 "i32" + Name 431 "i64" + Name 434 "i16v4" + Name 437 "u32" + Name 438 "u16v2" + Name 442 "u64" + Name 445 "u16v4" + Name 457 "bv" + Name 518 "Block" + MemberName 518(Block) 0 "i16" + MemberName 518(Block) 1 "i16v2" + MemberName 518(Block) 2 "i16v3" + MemberName 518(Block) 3 "i16v4" + MemberName 518(Block) 4 "u16" + MemberName 518(Block) 5 "u16v2" + MemberName 518(Block) 6 "u16v3" + MemberName 518(Block) 7 "u16v4" + Name 520 "block" + Name 521 "si16" + Name 522 "su16" MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block Decorate 26 DescriptorSet 0 Decorate 26 Binding 0 - MemberDecorate 520(Block) 0 Offset 0 - MemberDecorate 520(Block) 1 Offset 4 - MemberDecorate 520(Block) 2 Offset 8 - MemberDecorate 520(Block) 3 Offset 16 - MemberDecorate 520(Block) 4 Offset 24 - MemberDecorate 520(Block) 5 Offset 28 - MemberDecorate 520(Block) 6 Offset 32 - MemberDecorate 520(Block) 7 Offset 40 - Decorate 520(Block) Block - Decorate 522(block) DescriptorSet 0 - Decorate 522(block) Binding 1 - Decorate 523(si16) SpecId 100 - Decorate 524(su16) SpecId 101 + MemberDecorate 518(Block) 0 Offset 0 + MemberDecorate 518(Block) 1 Offset 4 + MemberDecorate 518(Block) 2 Offset 8 + MemberDecorate 518(Block) 3 Offset 16 + MemberDecorate 518(Block) 4 Offset 24 + MemberDecorate 518(Block) 5 Offset 28 + MemberDecorate 518(Block) 6 Offset 32 + MemberDecorate 518(Block) 7 Offset 40 + Decorate 518(Block) Block + Decorate 520(block) DescriptorSet 0 + Decorate 520(block) Binding 1 + Decorate 521(si16) SpecId 100 + Decorate 522(su16) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 1 @@ -171,28 +171,28 @@ spv.int16.frag 242: TypePointer Function 71(int) 264: 17(int) Constant 1 270: 17(int) Constant 2 - 275: TypeVector 27(int) 3 - 282: TypePointer Function 173(bool) - 284: 17(int) Constant 0 - 298: TypePointer Function 17(int) - 356: 52(ivec2) ConstantComposite 21 21 - 365: 193(ivec3) ConstantComposite 184 184 184 - 407: 173(bool) ConstantTrue - 414: 173(bool) ConstantFalse - 415: 174(bvec2) ConstantComposite 414 414 - 427: TypeVector 173(bool) 3 - 428: 427(bvec3) ConstantComposite 414 414 414 - 434: TypeVector 14(int) 4 - 435: TypePointer Function 434(ivec4) - 443: TypePointer Function 77(int) - 445: TypeVector 36(int) 4 - 446: TypePointer Function 445(ivec4) - 458: TypePointer Function 427(bvec3) - 520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4) - 521: TypePointer Uniform 520(Block) - 522(block): 521(ptr) Variable Uniform - 523(si16): 14(int) SpecConstant 4294967286 - 524(su16): 36(int) SpecConstant 20 + 276: TypeVector 27(int) 3 + 280: TypePointer Function 173(bool) + 282: 17(int) Constant 0 + 296: TypePointer Function 17(int) + 354: 52(ivec2) ConstantComposite 21 21 + 363: 193(ivec3) ConstantComposite 184 184 184 + 405: 173(bool) ConstantTrue + 412: 173(bool) ConstantFalse + 413: 174(bvec2) ConstantComposite 412 412 + 425: TypeVector 173(bool) 3 + 426: 425(bvec3) ConstantComposite 412 412 412 + 432: TypeVector 14(int) 4 + 433: TypePointer Function 432(ivec4) + 441: TypePointer Function 77(int) + 443: TypeVector 36(int) 4 + 444: TypePointer Function 443(ivec4) + 456: TypePointer Function 425(bvec3) + 518(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443(ivec4) + 519: TypePointer Uniform 518(Block) + 520(block): 519(ptr) Variable Uniform + 521(si16): 14(int) SpecConstant 4294967286 + 522(su16): 36(int) SpecConstant 20 4(main): 2 Function None 3 5: Label Return @@ -371,7 +371,7 @@ spv.int16.frag 220(i): 219(ptr) Variable Function 227(uv): 226(ptr) Variable Function 243(i64): 242(ptr) Variable Function - 283(b): 282(ptr) Variable Function + 281(b): 280(ptr) Variable Function 196: 193(ivec3) Load 195(u16v) 198: 197(ivec3) CompositeConstruct 179 179 179 199: 193(ivec3) IAdd 196 198 @@ -460,287 +460,285 @@ spv.int16.frag 273: 14(int) ShiftLeftLogical 269 272 Store 200(i16) 273 274: 193(ivec3) Load 195(u16v) - 276: 275(ivec3) UConvert 274 - 277: 275(ivec3) Bitcast 276 - 278: 27(int) Load 220(i) - 279: 275(ivec3) CompositeConstruct 278 278 278 - 280: 275(ivec3) ShiftLeftLogical 277 279 - 281: 225(ivec3) Bitcast 280 - Store 227(uv) 281 - 285: 37(ptr) AccessChain 195(u16v) 284 - 286: 36(int) Load 285 - 287: 14(int) Load 200(i16) - 288: 36(int) Bitcast 287 - 289: 173(bool) INotEqual 286 288 - Store 283(b) 289 - 290: 14(int) Load 200(i16) - 291: 36(int) Bitcast 290 - 292: 37(ptr) AccessChain 195(u16v) 284 - 293: 36(int) Load 292 - 294: 173(bool) IEqual 291 293 - Store 283(b) 294 - 295: 37(ptr) AccessChain 195(u16v) 284 - 296: 36(int) Load 295 - 297: 17(int) UConvert 296 - 299: 298(ptr) AccessChain 227(uv) 264 - 300: 17(int) Load 299 - 301: 173(bool) UGreaterThan 297 300 - Store 283(b) 301 - 302: 14(int) Load 200(i16) - 303: 27(int) SConvert 302 - 304: 27(int) Load 220(i) - 305: 173(bool) SLessThan 303 304 - Store 283(b) 305 - 306: 37(ptr) AccessChain 195(u16v) 264 - 307: 36(int) Load 306 - 308: 17(int) UConvert 307 - 309: 298(ptr) AccessChain 227(uv) 284 - 310: 17(int) Load 309 - 311: 173(bool) UGreaterThanEqual 308 310 - Store 283(b) 311 - 312: 14(int) Load 200(i16) - 313: 27(int) SConvert 312 - 314: 27(int) Load 220(i) - 315: 173(bool) SLessThanEqual 313 314 - Store 283(b) 315 - 316: 14(int) Load 200(i16) - 317: 27(int) SConvert 316 - 318: 17(int) Bitcast 317 - 319: 225(ivec3) Load 227(uv) - 320: 225(ivec3) CompositeConstruct 318 318 318 - 321: 225(ivec3) BitwiseOr 319 320 - Store 227(uv) 321 - 322: 14(int) Load 200(i16) - 323: 27(int) SConvert 322 - 324: 27(int) Load 220(i) - 325: 27(int) BitwiseOr 323 324 - Store 220(i) 325 - 326: 14(int) Load 200(i16) - 327: 71(int) SConvert 326 - 328: 71(int) Load 243(i64) - 329: 71(int) BitwiseAnd 328 327 - Store 243(i64) 329 - 330: 193(ivec3) Load 195(u16v) - 331: 225(ivec3) UConvert 330 - 332: 225(ivec3) Load 227(uv) - 333: 225(ivec3) BitwiseAnd 331 332 - Store 227(uv) 333 - 334: 14(int) Load 200(i16) - 335: 27(int) SConvert 334 - 336: 17(int) Bitcast 335 - 337: 225(ivec3) Load 227(uv) - 338: 225(ivec3) CompositeConstruct 336 336 336 - 339: 225(ivec3) BitwiseXor 337 338 - Store 227(uv) 339 - 340: 193(ivec3) Load 195(u16v) - 341: 14(int) Load 200(i16) - 342: 36(int) Bitcast 341 - 343: 193(ivec3) CompositeConstruct 342 342 342 - 344: 193(ivec3) BitwiseXor 340 343 - Store 195(u16v) 344 + 275: 27(int) Load 220(i) + 277: 276(ivec3) CompositeConstruct 275 275 275 + 278: 193(ivec3) ShiftLeftLogical 274 277 + 279: 225(ivec3) UConvert 278 + Store 227(uv) 279 + 283: 37(ptr) AccessChain 195(u16v) 282 + 284: 36(int) Load 283 + 285: 14(int) Load 200(i16) + 286: 36(int) Bitcast 285 + 287: 173(bool) INotEqual 284 286 + Store 281(b) 287 + 288: 14(int) Load 200(i16) + 289: 36(int) Bitcast 288 + 290: 37(ptr) AccessChain 195(u16v) 282 + 291: 36(int) Load 290 + 292: 173(bool) IEqual 289 291 + Store 281(b) 292 + 293: 37(ptr) AccessChain 195(u16v) 282 + 294: 36(int) Load 293 + 295: 17(int) UConvert 294 + 297: 296(ptr) AccessChain 227(uv) 264 + 298: 17(int) Load 297 + 299: 173(bool) UGreaterThan 295 298 + Store 281(b) 299 + 300: 14(int) Load 200(i16) + 301: 27(int) SConvert 300 + 302: 27(int) Load 220(i) + 303: 173(bool) SLessThan 301 302 + Store 281(b) 303 + 304: 37(ptr) AccessChain 195(u16v) 264 + 305: 36(int) Load 304 + 306: 17(int) UConvert 305 + 307: 296(ptr) AccessChain 227(uv) 282 + 308: 17(int) Load 307 + 309: 173(bool) UGreaterThanEqual 306 308 + Store 281(b) 309 + 310: 14(int) Load 200(i16) + 311: 27(int) SConvert 310 + 312: 27(int) Load 220(i) + 313: 173(bool) SLessThanEqual 311 312 + Store 281(b) 313 + 314: 14(int) Load 200(i16) + 315: 27(int) SConvert 314 + 316: 17(int) Bitcast 315 + 317: 225(ivec3) Load 227(uv) + 318: 225(ivec3) CompositeConstruct 316 316 316 + 319: 225(ivec3) BitwiseOr 317 318 + Store 227(uv) 319 + 320: 14(int) Load 200(i16) + 321: 27(int) SConvert 320 + 322: 27(int) Load 220(i) + 323: 27(int) BitwiseOr 321 322 + Store 220(i) 323 + 324: 14(int) Load 200(i16) + 325: 71(int) SConvert 324 + 326: 71(int) Load 243(i64) + 327: 71(int) BitwiseAnd 326 325 + Store 243(i64) 327 + 328: 193(ivec3) Load 195(u16v) + 329: 225(ivec3) UConvert 328 + 330: 225(ivec3) Load 227(uv) + 331: 225(ivec3) BitwiseAnd 329 330 + Store 227(uv) 331 + 332: 14(int) Load 200(i16) + 333: 27(int) SConvert 332 + 334: 17(int) Bitcast 333 + 335: 225(ivec3) Load 227(uv) + 336: 225(ivec3) CompositeConstruct 334 334 334 + 337: 225(ivec3) BitwiseXor 335 336 + Store 227(uv) 337 + 338: 193(ivec3) Load 195(u16v) + 339: 14(int) Load 200(i16) + 340: 36(int) Bitcast 339 + 341: 193(ivec3) CompositeConstruct 340 340 340 + 342: 193(ivec3) BitwiseXor 338 341 + Store 195(u16v) 342 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 345(i16v): 53(ptr) Variable Function - 348(i16): 15(ptr) Variable Function - 358(u16v): 194(ptr) Variable Function - 360(u16): 37(ptr) Variable Function - 430(i32): 219(ptr) Variable Function - 433(i64): 242(ptr) Variable Function - 436(i16v4): 435(ptr) Variable Function - 439(u32): 298(ptr) Variable Function - 440(u16v2): 58(ptr) Variable Function - 444(u64): 443(ptr) Variable Function - 447(u16v4): 446(ptr) Variable Function - 459(bv): 458(ptr) Variable Function - 346: 52(ivec2) Load 345(i16v) - 347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346 - Store 345(i16v) 347 - 349: 14(int) Load 348(i16) - 350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349 - Store 348(i16) 350 - 351: 52(ivec2) Load 345(i16v) - 352: 14(int) Load 348(i16) - 353: 52(ivec2) CompositeConstruct 352 352 - 354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353 - Store 345(i16v) 354 - 355: 52(ivec2) Load 345(i16v) - 357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356 - Store 345(i16v) 357 - 359: 193(ivec3) Load 358(u16v) - 361: 36(int) Load 360(u16) - 362: 193(ivec3) CompositeConstruct 361 361 361 - 363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362 - Store 358(u16v) 363 - 364: 193(ivec3) Load 358(u16v) - 366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365 - Store 358(u16v) 366 - 367: 52(ivec2) Load 345(i16v) - 368: 14(int) Load 348(i16) - 369: 52(ivec2) CompositeConstruct 368 368 - 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369 - Store 345(i16v) 370 - 371: 52(ivec2) Load 345(i16v) - 372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356 - Store 345(i16v) 372 - 373: 193(ivec3) Load 358(u16v) - 374: 36(int) Load 360(u16) - 375: 193(ivec3) CompositeConstruct 374 374 374 - 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375 - Store 358(u16v) 376 - 377: 193(ivec3) Load 358(u16v) - 378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365 - Store 358(u16v) 378 - 379: 52(ivec2) Load 345(i16v) - 380: 14(int) Load 348(i16) - 381: 14(int) SNegate 380 - 382: 14(int) Load 348(i16) - 383: 52(ivec2) CompositeConstruct 381 381 - 384: 52(ivec2) CompositeConstruct 382 382 - 385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384 - Store 345(i16v) 385 - 386: 52(ivec2) Load 345(i16v) - 387: 52(ivec2) Load 345(i16v) - 388: 52(ivec2) SNegate 387 - 389: 52(ivec2) Load 345(i16v) - 390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389 - Store 345(i16v) 390 - 391: 193(ivec3) Load 358(u16v) - 392: 36(int) Load 360(u16) - 393: 36(int) SNegate 392 - 394: 36(int) Load 360(u16) - 395: 193(ivec3) CompositeConstruct 393 393 393 - 396: 193(ivec3) CompositeConstruct 394 394 394 - 397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396 - Store 358(u16v) 397 - 398: 193(ivec3) Load 358(u16v) - 399: 193(ivec3) Load 358(u16v) - 400: 193(ivec3) SNegate 399 - 401: 193(ivec3) Load 358(u16v) - 402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401 - Store 358(u16v) 402 - 403: 15(ptr) AccessChain 345(i16v) 284 + 343(i16v): 53(ptr) Variable Function + 346(i16): 15(ptr) Variable Function + 356(u16v): 194(ptr) Variable Function + 358(u16): 37(ptr) Variable Function + 428(i32): 219(ptr) Variable Function + 431(i64): 242(ptr) Variable Function + 434(i16v4): 433(ptr) Variable Function + 437(u32): 296(ptr) Variable Function + 438(u16v2): 58(ptr) Variable Function + 442(u64): 441(ptr) Variable Function + 445(u16v4): 444(ptr) Variable Function + 457(bv): 456(ptr) Variable Function + 344: 52(ivec2) Load 343(i16v) + 345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344 + Store 343(i16v) 345 + 347: 14(int) Load 346(i16) + 348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347 + Store 346(i16) 348 + 349: 52(ivec2) Load 343(i16v) + 350: 14(int) Load 346(i16) + 351: 52(ivec2) CompositeConstruct 350 350 + 352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351 + Store 343(i16v) 352 + 353: 52(ivec2) Load 343(i16v) + 355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354 + Store 343(i16v) 355 + 357: 193(ivec3) Load 356(u16v) + 359: 36(int) Load 358(u16) + 360: 193(ivec3) CompositeConstruct 359 359 359 + 361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360 + Store 356(u16v) 361 + 362: 193(ivec3) Load 356(u16v) + 364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363 + Store 356(u16v) 364 + 365: 52(ivec2) Load 343(i16v) + 366: 14(int) Load 346(i16) + 367: 52(ivec2) CompositeConstruct 366 366 + 368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367 + Store 343(i16v) 368 + 369: 52(ivec2) Load 343(i16v) + 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354 + Store 343(i16v) 370 + 371: 193(ivec3) Load 356(u16v) + 372: 36(int) Load 358(u16) + 373: 193(ivec3) CompositeConstruct 372 372 372 + 374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373 + Store 356(u16v) 374 + 375: 193(ivec3) Load 356(u16v) + 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363 + Store 356(u16v) 376 + 377: 52(ivec2) Load 343(i16v) + 378: 14(int) Load 346(i16) + 379: 14(int) SNegate 378 + 380: 14(int) Load 346(i16) + 381: 52(ivec2) CompositeConstruct 379 379 + 382: 52(ivec2) CompositeConstruct 380 380 + 383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382 + Store 343(i16v) 383 + 384: 52(ivec2) Load 343(i16v) + 385: 52(ivec2) Load 343(i16v) + 386: 52(ivec2) SNegate 385 + 387: 52(ivec2) Load 343(i16v) + 388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387 + Store 343(i16v) 388 + 389: 193(ivec3) Load 356(u16v) + 390: 36(int) Load 358(u16) + 391: 36(int) SNegate 390 + 392: 36(int) Load 358(u16) + 393: 193(ivec3) CompositeConstruct 391 391 391 + 394: 193(ivec3) CompositeConstruct 392 392 392 + 395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394 + Store 356(u16v) 395 + 396: 193(ivec3) Load 356(u16v) + 397: 193(ivec3) Load 356(u16v) + 398: 193(ivec3) SNegate 397 + 399: 193(ivec3) Load 356(u16v) + 400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399 + Store 356(u16v) 400 + 401: 15(ptr) AccessChain 343(i16v) 282 + 402: 14(int) Load 401 + 403: 15(ptr) AccessChain 343(i16v) 264 404: 14(int) Load 403 - 405: 15(ptr) AccessChain 345(i16v) 264 - 406: 14(int) Load 405 - 408: 14(int) Select 407 406 404 - Store 348(i16) 408 - 409: 14(int) Load 348(i16) - 410: 52(ivec2) CompositeConstruct 409 409 - 411: 14(int) Load 348(i16) - 412: 14(int) SNegate 411 - 413: 52(ivec2) CompositeConstruct 412 412 - 416: 52(ivec2) Select 415 413 410 - Store 345(i16v) 416 - 417: 37(ptr) AccessChain 358(u16v) 284 + 406: 14(int) Select 405 404 402 + Store 346(i16) 406 + 407: 14(int) Load 346(i16) + 408: 52(ivec2) CompositeConstruct 407 407 + 409: 14(int) Load 346(i16) + 410: 14(int) SNegate 409 + 411: 52(ivec2) CompositeConstruct 410 410 + 414: 52(ivec2) Select 413 411 408 + Store 343(i16v) 414 + 415: 37(ptr) AccessChain 356(u16v) 282 + 416: 36(int) Load 415 + 417: 37(ptr) AccessChain 356(u16v) 264 418: 36(int) Load 417 - 419: 37(ptr) AccessChain 358(u16v) 264 - 420: 36(int) Load 419 - 421: 36(int) Select 407 420 418 - Store 360(u16) 421 - 422: 36(int) Load 360(u16) - 423: 193(ivec3) CompositeConstruct 422 422 422 - 424: 36(int) Load 360(u16) - 425: 36(int) SNegate 424 - 426: 193(ivec3) CompositeConstruct 425 425 425 - 429: 193(ivec3) Select 428 426 423 - Store 358(u16v) 429 - 431: 52(ivec2) Load 345(i16v) - 432: 27(int) Bitcast 431 - Store 430(i32) 432 - 437: 434(ivec4) Load 436(i16v4) - 438: 71(int) Bitcast 437 - Store 433(i64) 438 - 441: 57(ivec2) Load 440(u16v2) - 442: 17(int) Bitcast 441 - Store 439(u32) 442 - 448: 445(ivec4) Load 447(u16v4) - 449: 77(int) Bitcast 448 - Store 444(u64) 449 - 450: 27(int) Load 430(i32) - 451: 52(ivec2) Bitcast 450 - Store 345(i16v) 451 - 452: 71(int) Load 433(i64) - 453: 434(ivec4) Bitcast 452 - Store 436(i16v4) 453 - 454: 17(int) Load 439(u32) - 455: 57(ivec2) Bitcast 454 - Store 440(u16v2) 455 - 456: 77(int) Load 444(u64) - 457: 445(ivec4) Bitcast 456 - Store 447(u16v4) 457 - 460: 193(ivec3) Load 358(u16v) - 461: 36(int) Load 360(u16) - 462: 193(ivec3) CompositeConstruct 461 461 461 - 463: 427(bvec3) ULessThan 460 462 - Store 459(bv) 463 - 464: 52(ivec2) Load 345(i16v) - 465: 14(int) Load 348(i16) - 466: 52(ivec2) CompositeConstruct 465 465 - 467: 174(bvec2) SLessThan 464 466 - 468: 427(bvec3) Load 459(bv) - 469: 427(bvec3) VectorShuffle 468 467 3 4 2 - Store 459(bv) 469 - 470: 193(ivec3) Load 358(u16v) - 471: 36(int) Load 360(u16) - 472: 193(ivec3) CompositeConstruct 471 471 471 - 473: 427(bvec3) ULessThanEqual 470 472 - Store 459(bv) 473 - 474: 52(ivec2) Load 345(i16v) - 475: 14(int) Load 348(i16) - 476: 52(ivec2) CompositeConstruct 475 475 - 477: 174(bvec2) SLessThanEqual 474 476 - 478: 427(bvec3) Load 459(bv) - 479: 427(bvec3) VectorShuffle 478 477 3 4 2 - Store 459(bv) 479 - 480: 193(ivec3) Load 358(u16v) - 481: 36(int) Load 360(u16) - 482: 193(ivec3) CompositeConstruct 481 481 481 - 483: 427(bvec3) UGreaterThan 480 482 - Store 459(bv) 483 - 484: 52(ivec2) Load 345(i16v) - 485: 14(int) Load 348(i16) - 486: 52(ivec2) CompositeConstruct 485 485 - 487: 174(bvec2) SGreaterThan 484 486 - 488: 427(bvec3) Load 459(bv) - 489: 427(bvec3) VectorShuffle 488 487 3 4 2 - Store 459(bv) 489 - 490: 193(ivec3) Load 358(u16v) - 491: 36(int) Load 360(u16) - 492: 193(ivec3) CompositeConstruct 491 491 491 - 493: 427(bvec3) UGreaterThanEqual 490 492 - Store 459(bv) 493 - 494: 52(ivec2) Load 345(i16v) - 495: 14(int) Load 348(i16) - 496: 52(ivec2) CompositeConstruct 495 495 - 497: 174(bvec2) SGreaterThanEqual 494 496 - 498: 427(bvec3) Load 459(bv) - 499: 427(bvec3) VectorShuffle 498 497 3 4 2 - Store 459(bv) 499 - 500: 193(ivec3) Load 358(u16v) - 501: 36(int) Load 360(u16) - 502: 193(ivec3) CompositeConstruct 501 501 501 - 503: 427(bvec3) IEqual 500 502 - Store 459(bv) 503 - 504: 52(ivec2) Load 345(i16v) - 505: 14(int) Load 348(i16) - 506: 52(ivec2) CompositeConstruct 505 505 - 507: 174(bvec2) IEqual 504 506 - 508: 427(bvec3) Load 459(bv) - 509: 427(bvec3) VectorShuffle 508 507 3 4 2 - Store 459(bv) 509 - 510: 193(ivec3) Load 358(u16v) - 511: 36(int) Load 360(u16) - 512: 193(ivec3) CompositeConstruct 511 511 511 - 513: 427(bvec3) INotEqual 510 512 - Store 459(bv) 513 - 514: 52(ivec2) Load 345(i16v) - 515: 14(int) Load 348(i16) - 516: 52(ivec2) CompositeConstruct 515 515 - 517: 174(bvec2) INotEqual 514 516 - 518: 427(bvec3) Load 459(bv) - 519: 427(bvec3) VectorShuffle 518 517 3 4 2 - Store 459(bv) 519 + 419: 36(int) Select 405 418 416 + Store 358(u16) 419 + 420: 36(int) Load 358(u16) + 421: 193(ivec3) CompositeConstruct 420 420 420 + 422: 36(int) Load 358(u16) + 423: 36(int) SNegate 422 + 424: 193(ivec3) CompositeConstruct 423 423 423 + 427: 193(ivec3) Select 426 424 421 + Store 356(u16v) 427 + 429: 52(ivec2) Load 343(i16v) + 430: 27(int) Bitcast 429 + Store 428(i32) 430 + 435: 432(ivec4) Load 434(i16v4) + 436: 71(int) Bitcast 435 + Store 431(i64) 436 + 439: 57(ivec2) Load 438(u16v2) + 440: 17(int) Bitcast 439 + Store 437(u32) 440 + 446: 443(ivec4) Load 445(u16v4) + 447: 77(int) Bitcast 446 + Store 442(u64) 447 + 448: 27(int) Load 428(i32) + 449: 52(ivec2) Bitcast 448 + Store 343(i16v) 449 + 450: 71(int) Load 431(i64) + 451: 432(ivec4) Bitcast 450 + Store 434(i16v4) 451 + 452: 17(int) Load 437(u32) + 453: 57(ivec2) Bitcast 452 + Store 438(u16v2) 453 + 454: 77(int) Load 442(u64) + 455: 443(ivec4) Bitcast 454 + Store 445(u16v4) 455 + 458: 193(ivec3) Load 356(u16v) + 459: 36(int) Load 358(u16) + 460: 193(ivec3) CompositeConstruct 459 459 459 + 461: 425(bvec3) ULessThan 458 460 + Store 457(bv) 461 + 462: 52(ivec2) Load 343(i16v) + 463: 14(int) Load 346(i16) + 464: 52(ivec2) CompositeConstruct 463 463 + 465: 174(bvec2) SLessThan 462 464 + 466: 425(bvec3) Load 457(bv) + 467: 425(bvec3) VectorShuffle 466 465 3 4 2 + Store 457(bv) 467 + 468: 193(ivec3) Load 356(u16v) + 469: 36(int) Load 358(u16) + 470: 193(ivec3) CompositeConstruct 469 469 469 + 471: 425(bvec3) ULessThanEqual 468 470 + Store 457(bv) 471 + 472: 52(ivec2) Load 343(i16v) + 473: 14(int) Load 346(i16) + 474: 52(ivec2) CompositeConstruct 473 473 + 475: 174(bvec2) SLessThanEqual 472 474 + 476: 425(bvec3) Load 457(bv) + 477: 425(bvec3) VectorShuffle 476 475 3 4 2 + Store 457(bv) 477 + 478: 193(ivec3) Load 356(u16v) + 479: 36(int) Load 358(u16) + 480: 193(ivec3) CompositeConstruct 479 479 479 + 481: 425(bvec3) UGreaterThan 478 480 + Store 457(bv) 481 + 482: 52(ivec2) Load 343(i16v) + 483: 14(int) Load 346(i16) + 484: 52(ivec2) CompositeConstruct 483 483 + 485: 174(bvec2) SGreaterThan 482 484 + 486: 425(bvec3) Load 457(bv) + 487: 425(bvec3) VectorShuffle 486 485 3 4 2 + Store 457(bv) 487 + 488: 193(ivec3) Load 356(u16v) + 489: 36(int) Load 358(u16) + 490: 193(ivec3) CompositeConstruct 489 489 489 + 491: 425(bvec3) UGreaterThanEqual 488 490 + Store 457(bv) 491 + 492: 52(ivec2) Load 343(i16v) + 493: 14(int) Load 346(i16) + 494: 52(ivec2) CompositeConstruct 493 493 + 495: 174(bvec2) SGreaterThanEqual 492 494 + 496: 425(bvec3) Load 457(bv) + 497: 425(bvec3) VectorShuffle 496 495 3 4 2 + Store 457(bv) 497 + 498: 193(ivec3) Load 356(u16v) + 499: 36(int) Load 358(u16) + 500: 193(ivec3) CompositeConstruct 499 499 499 + 501: 425(bvec3) IEqual 498 500 + Store 457(bv) 501 + 502: 52(ivec2) Load 343(i16v) + 503: 14(int) Load 346(i16) + 504: 52(ivec2) CompositeConstruct 503 503 + 505: 174(bvec2) IEqual 502 504 + 506: 425(bvec3) Load 457(bv) + 507: 425(bvec3) VectorShuffle 506 505 3 4 2 + Store 457(bv) 507 + 508: 193(ivec3) Load 356(u16v) + 509: 36(int) Load 358(u16) + 510: 193(ivec3) CompositeConstruct 509 509 509 + 511: 425(bvec3) INotEqual 508 510 + Store 457(bv) 511 + 512: 52(ivec2) Load 343(i16v) + 513: 14(int) Load 346(i16) + 514: 52(ivec2) CompositeConstruct 513 513 + 515: 174(bvec2) INotEqual 512 514 + 516: 425(bvec3) Load 457(bv) + 517: 425(bvec3) VectorShuffle 516 515 3 4 2 + Store 457(bv) 517 Return FunctionEnd diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out index a6d07d032..c615672f2 100644 --- a/Test/baseResults/spv.int32.frag.out +++ b/Test/baseResults/spv.int32.frag.out @@ -1,7 +1,7 @@ spv.int32.frag // Module Version 10300 // Generated by (magic number): 80006 -// Id's are bound by 495 +// Id's are bound by 493 Capability Shader Capability Float16 @@ -52,54 +52,54 @@ spv.int32.frag Name 210 "i" Name 214 "uv" Name 227 "i64" - Name 262 "b" - Name 314 "i32v" - Name 317 "i32" - Name 327 "u32v" - Name 329 "u32" - Name 401 "i8v4" - Name 404 "i16v2" - Name 409 "u8v4" - Name 412 "u16v2" - Name 415 "i64" - Name 418 "u32v2" - Name 420 "u64" - Name 424 "bv" - Name 487 "Block" - MemberName 487(Block) 0 "i32" - MemberName 487(Block) 1 "i32v2" - MemberName 487(Block) 2 "i32v3" - MemberName 487(Block) 3 "i32v4" - MemberName 487(Block) 4 "u32" - MemberName 487(Block) 5 "u32v2" - MemberName 487(Block) 6 "u32v3" - MemberName 487(Block) 7 "u32v4" - Name 489 "block" - Name 490 "si32" - Name 491 "su32" - Name 492 "si" - Name 493 "su" - Name 494 "sb" + Name 260 "b" + Name 312 "i32v" + Name 315 "i32" + Name 325 "u32v" + Name 327 "u32" + Name 399 "i8v4" + Name 402 "i16v2" + Name 407 "u8v4" + Name 410 "u16v2" + Name 413 "i64" + Name 416 "u32v2" + Name 418 "u64" + Name 422 "bv" + Name 485 "Block" + MemberName 485(Block) 0 "i32" + MemberName 485(Block) 1 "i32v2" + MemberName 485(Block) 2 "i32v3" + MemberName 485(Block) 3 "i32v4" + MemberName 485(Block) 4 "u32" + MemberName 485(Block) 5 "u32v2" + MemberName 485(Block) 6 "u32v3" + MemberName 485(Block) 7 "u32v4" + Name 487 "block" + Name 488 "si32" + Name 489 "su32" + Name 490 "si" + Name 491 "su" + Name 492 "sb" MemberDecorate 27(Uniforms) 0 Offset 0 Decorate 27(Uniforms) Block Decorate 29 DescriptorSet 0 Decorate 29 Binding 0 - MemberDecorate 487(Block) 0 Offset 0 - MemberDecorate 487(Block) 1 Offset 8 - MemberDecorate 487(Block) 2 Offset 16 - MemberDecorate 487(Block) 3 Offset 32 - MemberDecorate 487(Block) 4 Offset 48 - MemberDecorate 487(Block) 5 Offset 56 - MemberDecorate 487(Block) 6 Offset 64 - MemberDecorate 487(Block) 7 Offset 80 - Decorate 487(Block) Block - Decorate 489(block) DescriptorSet 0 - Decorate 489(block) Binding 1 - Decorate 490(si32) SpecId 100 - Decorate 491(su32) SpecId 101 - Decorate 492(si) SpecId 102 - Decorate 493(su) SpecId 103 - Decorate 494(sb) SpecId 104 + MemberDecorate 485(Block) 0 Offset 0 + MemberDecorate 485(Block) 1 Offset 8 + MemberDecorate 485(Block) 2 Offset 16 + MemberDecorate 485(Block) 3 Offset 32 + MemberDecorate 485(Block) 4 Offset 48 + MemberDecorate 485(Block) 5 Offset 56 + MemberDecorate 485(Block) 6 Offset 64 + MemberDecorate 485(Block) 7 Offset 80 + Decorate 485(Block) Block + Decorate 487(block) DescriptorSet 0 + Decorate 487(block) Binding 1 + Decorate 488(si32) SpecId 100 + Decorate 489(su32) SpecId 101 + Decorate 490(si) SpecId 102 + Decorate 491(su) SpecId 103 + Decorate 492(sb) SpecId 104 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 0 @@ -171,30 +171,30 @@ spv.int32.frag 188: TypeVector 18(int) 3 226: TypePointer Function 57(int) 251: 14(int) Constant 2 - 261: TypePointer Function 165(bool) - 325: 52(ivec2) ConstantComposite 24 24 - 334: 184(ivec3) ConstantComposite 175 175 175 - 376: 165(bool) ConstantTrue - 383: 165(bool) ConstantFalse - 384: 166(bvec2) ConstantComposite 383 383 - 396: TypeVector 165(bool) 3 - 397: 396(bvec3) ConstantComposite 383 383 383 - 399: TypeVector 91(int) 4 - 400: TypePointer Function 399(ivec4) - 407: TypeVector 120(int) 4 - 408: TypePointer Function 407(ivec4) - 419: TypePointer Function 63(int) - 423: TypePointer Function 396(bvec3) - 485: TypeVector 18(int) 4 - 486: TypeVector 14(int) 4 - 487(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 485(ivec4) 14(int) 49(ivec2) 184(ivec3) 486(ivec4) - 488: TypePointer Uniform 487(Block) - 489(block): 488(ptr) Variable Uniform - 490(si32): 18(int) SpecConstant 4294967286 - 491(su32): 14(int) SpecConstant 20 - 492(si): 18(int) SpecConstant 4294967291 - 493(su): 14(int) SpecConstant 4 - 494(sb): 165(bool) SpecConstantTrue + 259: TypePointer Function 165(bool) + 323: 52(ivec2) ConstantComposite 24 24 + 332: 184(ivec3) ConstantComposite 175 175 175 + 374: 165(bool) ConstantTrue + 381: 165(bool) ConstantFalse + 382: 166(bvec2) ConstantComposite 381 381 + 394: TypeVector 165(bool) 3 + 395: 394(bvec3) ConstantComposite 381 381 381 + 397: TypeVector 91(int) 4 + 398: TypePointer Function 397(ivec4) + 405: TypeVector 120(int) 4 + 406: TypePointer Function 405(ivec4) + 417: TypePointer Function 63(int) + 421: TypePointer Function 394(bvec3) + 483: TypeVector 18(int) 4 + 484: TypeVector 14(int) 4 + 485(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 483(ivec4) 14(int) 49(ivec2) 184(ivec3) 484(ivec4) + 486: TypePointer Uniform 485(Block) + 487(block): 486(ptr) Variable Uniform + 488(si32): 18(int) SpecConstant 4294967286 + 489(su32): 14(int) SpecConstant 20 + 490(si): 18(int) SpecConstant 4294967291 + 491(su): 14(int) SpecConstant 4 + 492(sb): 165(bool) SpecConstantTrue 4(main): 2 Function None 3 5: Label Store 16(u32Max) 17 @@ -360,7 +360,7 @@ spv.int32.frag 210(i): 19(ptr) Variable Function 214(uv): 185(ptr) Variable Function 227(i64): 226(ptr) Variable Function - 262(b): 261(ptr) Variable Function + 260(b): 259(ptr) Variable Function 187: 184(ivec3) Load 186(u32v) 189: 188(ivec3) CompositeConstruct 170 170 170 190: 184(ivec3) IAdd 187 189 @@ -440,275 +440,273 @@ spv.int32.frag 250: 57(int) Load 227(i64) 252: 38(ptr) AccessChain 186(u32v) 251 253: 14(int) Load 252 - 254: 57(int) UConvert 253 - 255: 57(int) Bitcast 254 - 256: 57(int) ShiftLeftLogical 250 255 - Store 227(i64) 256 - 257: 184(ivec3) Load 186(u32v) - 258: 18(int) Load 210(i) - 259: 188(ivec3) CompositeConstruct 258 258 258 - 260: 184(ivec3) ShiftLeftLogical 257 259 - Store 214(uv) 260 - 263: 38(ptr) AccessChain 186(u32v) 175 - 264: 14(int) Load 263 - 265: 18(int) Load 191(i32) - 266: 14(int) Bitcast 265 - 267: 165(bool) INotEqual 264 266 - Store 262(b) 267 - 268: 18(int) Load 191(i32) - 269: 14(int) Bitcast 268 - 270: 38(ptr) AccessChain 186(u32v) 175 - 271: 14(int) Load 270 - 272: 165(bool) IEqual 269 271 - Store 262(b) 272 - 273: 38(ptr) AccessChain 186(u32v) 175 + 254: 57(int) ShiftLeftLogical 250 253 + Store 227(i64) 254 + 255: 184(ivec3) Load 186(u32v) + 256: 18(int) Load 210(i) + 257: 188(ivec3) CompositeConstruct 256 256 256 + 258: 184(ivec3) ShiftLeftLogical 255 257 + Store 214(uv) 258 + 261: 38(ptr) AccessChain 186(u32v) 175 + 262: 14(int) Load 261 + 263: 18(int) Load 191(i32) + 264: 14(int) Bitcast 263 + 265: 165(bool) INotEqual 262 264 + Store 260(b) 265 + 266: 18(int) Load 191(i32) + 267: 14(int) Bitcast 266 + 268: 38(ptr) AccessChain 186(u32v) 175 + 269: 14(int) Load 268 + 270: 165(bool) IEqual 267 269 + Store 260(b) 270 + 271: 38(ptr) AccessChain 186(u32v) 175 + 272: 14(int) Load 271 + 273: 38(ptr) AccessChain 214(uv) 176 274: 14(int) Load 273 - 275: 38(ptr) AccessChain 214(uv) 176 - 276: 14(int) Load 275 - 277: 165(bool) UGreaterThan 274 276 - Store 262(b) 277 - 278: 18(int) Load 191(i32) - 279: 18(int) Load 210(i) - 280: 165(bool) SLessThan 278 279 - Store 262(b) 280 - 281: 38(ptr) AccessChain 186(u32v) 176 + 275: 165(bool) UGreaterThan 272 274 + Store 260(b) 275 + 276: 18(int) Load 191(i32) + 277: 18(int) Load 210(i) + 278: 165(bool) SLessThan 276 277 + Store 260(b) 278 + 279: 38(ptr) AccessChain 186(u32v) 176 + 280: 14(int) Load 279 + 281: 38(ptr) AccessChain 214(uv) 175 282: 14(int) Load 281 - 283: 38(ptr) AccessChain 214(uv) 175 - 284: 14(int) Load 283 - 285: 165(bool) UGreaterThanEqual 282 284 - Store 262(b) 285 - 286: 18(int) Load 191(i32) - 287: 18(int) Load 210(i) - 288: 165(bool) SLessThanEqual 286 287 - Store 262(b) 288 - 289: 18(int) Load 191(i32) - 290: 14(int) Bitcast 289 - 291: 184(ivec3) Load 214(uv) - 292: 184(ivec3) CompositeConstruct 290 290 290 - 293: 184(ivec3) BitwiseOr 291 292 - Store 214(uv) 293 - 294: 18(int) Load 191(i32) - 295: 18(int) Load 210(i) - 296: 18(int) BitwiseOr 294 295 - Store 210(i) 296 - 297: 18(int) Load 191(i32) - 298: 57(int) SConvert 297 - 299: 57(int) Load 227(i64) - 300: 57(int) BitwiseAnd 299 298 - Store 227(i64) 300 - 301: 184(ivec3) Load 186(u32v) - 302: 184(ivec3) Load 214(uv) - 303: 184(ivec3) BitwiseAnd 301 302 - Store 214(uv) 303 - 304: 18(int) Load 191(i32) - 305: 14(int) Bitcast 304 - 306: 184(ivec3) Load 214(uv) - 307: 184(ivec3) CompositeConstruct 305 305 305 - 308: 184(ivec3) BitwiseXor 306 307 - Store 214(uv) 308 - 309: 184(ivec3) Load 186(u32v) - 310: 18(int) Load 191(i32) - 311: 14(int) Bitcast 310 - 312: 184(ivec3) CompositeConstruct 311 311 311 - 313: 184(ivec3) BitwiseXor 309 312 - Store 186(u32v) 313 + 283: 165(bool) UGreaterThanEqual 280 282 + Store 260(b) 283 + 284: 18(int) Load 191(i32) + 285: 18(int) Load 210(i) + 286: 165(bool) SLessThanEqual 284 285 + Store 260(b) 286 + 287: 18(int) Load 191(i32) + 288: 14(int) Bitcast 287 + 289: 184(ivec3) Load 214(uv) + 290: 184(ivec3) CompositeConstruct 288 288 288 + 291: 184(ivec3) BitwiseOr 289 290 + Store 214(uv) 291 + 292: 18(int) Load 191(i32) + 293: 18(int) Load 210(i) + 294: 18(int) BitwiseOr 292 293 + Store 210(i) 294 + 295: 18(int) Load 191(i32) + 296: 57(int) SConvert 295 + 297: 57(int) Load 227(i64) + 298: 57(int) BitwiseAnd 297 296 + Store 227(i64) 298 + 299: 184(ivec3) Load 186(u32v) + 300: 184(ivec3) Load 214(uv) + 301: 184(ivec3) BitwiseAnd 299 300 + Store 214(uv) 301 + 302: 18(int) Load 191(i32) + 303: 14(int) Bitcast 302 + 304: 184(ivec3) Load 214(uv) + 305: 184(ivec3) CompositeConstruct 303 303 303 + 306: 184(ivec3) BitwiseXor 304 305 + Store 214(uv) 306 + 307: 184(ivec3) Load 186(u32v) + 308: 18(int) Load 191(i32) + 309: 14(int) Bitcast 308 + 310: 184(ivec3) CompositeConstruct 309 309 309 + 311: 184(ivec3) BitwiseXor 307 310 + Store 186(u32v) 311 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 314(i32v): 53(ptr) Variable Function - 317(i32): 19(ptr) Variable Function - 327(u32v): 185(ptr) Variable Function - 329(u32): 38(ptr) Variable Function - 401(i8v4): 400(ptr) Variable Function - 404(i16v2): 102(ptr) Variable Function - 409(u8v4): 408(ptr) Variable Function - 412(u16v2): 131(ptr) Variable Function - 415(i64): 226(ptr) Variable Function - 418(u32v2): 50(ptr) Variable Function - 420(u64): 419(ptr) Variable Function - 424(bv): 423(ptr) Variable Function - 315: 52(ivec2) Load 314(i32v) - 316: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 315 - Store 314(i32v) 316 - 318: 18(int) Load 317(i32) - 319: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 318 - Store 317(i32) 319 - 320: 52(ivec2) Load 314(i32v) - 321: 18(int) Load 317(i32) - 322: 52(ivec2) CompositeConstruct 321 321 - 323: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 320 322 - Store 314(i32v) 323 - 324: 52(ivec2) Load 314(i32v) - 326: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 324 325 - Store 314(i32v) 326 - 328: 184(ivec3) Load 327(u32v) - 330: 14(int) Load 329(u32) - 331: 184(ivec3) CompositeConstruct 330 330 330 - 332: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 328 331 - Store 327(u32v) 332 - 333: 184(ivec3) Load 327(u32v) - 335: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 333 334 - Store 327(u32v) 335 - 336: 52(ivec2) Load 314(i32v) - 337: 18(int) Load 317(i32) - 338: 52(ivec2) CompositeConstruct 337 337 - 339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 336 338 - Store 314(i32v) 339 - 340: 52(ivec2) Load 314(i32v) - 341: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 340 325 - Store 314(i32v) 341 - 342: 184(ivec3) Load 327(u32v) - 343: 14(int) Load 329(u32) - 344: 184(ivec3) CompositeConstruct 343 343 343 - 345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 342 344 - Store 327(u32v) 345 - 346: 184(ivec3) Load 327(u32v) - 347: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 346 334 - Store 327(u32v) 347 - 348: 52(ivec2) Load 314(i32v) - 349: 18(int) Load 317(i32) - 350: 18(int) SNegate 349 - 351: 18(int) Load 317(i32) - 352: 52(ivec2) CompositeConstruct 350 350 - 353: 52(ivec2) CompositeConstruct 351 351 - 354: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 352 353 - Store 314(i32v) 354 - 355: 52(ivec2) Load 314(i32v) - 356: 52(ivec2) Load 314(i32v) - 357: 52(ivec2) SNegate 356 - 358: 52(ivec2) Load 314(i32v) - 359: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 355 357 358 - Store 314(i32v) 359 - 360: 184(ivec3) Load 327(u32v) - 361: 14(int) Load 329(u32) - 362: 14(int) SNegate 361 - 363: 14(int) Load 329(u32) - 364: 184(ivec3) CompositeConstruct 362 362 362 - 365: 184(ivec3) CompositeConstruct 363 363 363 - 366: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 364 365 - Store 327(u32v) 366 - 367: 184(ivec3) Load 327(u32v) - 368: 184(ivec3) Load 327(u32v) - 369: 184(ivec3) SNegate 368 - 370: 184(ivec3) Load 327(u32v) - 371: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 367 369 370 - Store 327(u32v) 371 - 372: 19(ptr) AccessChain 314(i32v) 175 + 312(i32v): 53(ptr) Variable Function + 315(i32): 19(ptr) Variable Function + 325(u32v): 185(ptr) Variable Function + 327(u32): 38(ptr) Variable Function + 399(i8v4): 398(ptr) Variable Function + 402(i16v2): 102(ptr) Variable Function + 407(u8v4): 406(ptr) Variable Function + 410(u16v2): 131(ptr) Variable Function + 413(i64): 226(ptr) Variable Function + 416(u32v2): 50(ptr) Variable Function + 418(u64): 417(ptr) Variable Function + 422(bv): 421(ptr) Variable Function + 313: 52(ivec2) Load 312(i32v) + 314: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 313 + Store 312(i32v) 314 + 316: 18(int) Load 315(i32) + 317: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 316 + Store 315(i32) 317 + 318: 52(ivec2) Load 312(i32v) + 319: 18(int) Load 315(i32) + 320: 52(ivec2) CompositeConstruct 319 319 + 321: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 318 320 + Store 312(i32v) 321 + 322: 52(ivec2) Load 312(i32v) + 324: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 322 323 + Store 312(i32v) 324 + 326: 184(ivec3) Load 325(u32v) + 328: 14(int) Load 327(u32) + 329: 184(ivec3) CompositeConstruct 328 328 328 + 330: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 329 + Store 325(u32v) 330 + 331: 184(ivec3) Load 325(u32v) + 333: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 331 332 + Store 325(u32v) 333 + 334: 52(ivec2) Load 312(i32v) + 335: 18(int) Load 315(i32) + 336: 52(ivec2) CompositeConstruct 335 335 + 337: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 334 336 + Store 312(i32v) 337 + 338: 52(ivec2) Load 312(i32v) + 339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 338 323 + Store 312(i32v) 339 + 340: 184(ivec3) Load 325(u32v) + 341: 14(int) Load 327(u32) + 342: 184(ivec3) CompositeConstruct 341 341 341 + 343: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 340 342 + Store 325(u32v) 343 + 344: 184(ivec3) Load 325(u32v) + 345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 344 332 + Store 325(u32v) 345 + 346: 52(ivec2) Load 312(i32v) + 347: 18(int) Load 315(i32) + 348: 18(int) SNegate 347 + 349: 18(int) Load 315(i32) + 350: 52(ivec2) CompositeConstruct 348 348 + 351: 52(ivec2) CompositeConstruct 349 349 + 352: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 346 350 351 + Store 312(i32v) 352 + 353: 52(ivec2) Load 312(i32v) + 354: 52(ivec2) Load 312(i32v) + 355: 52(ivec2) SNegate 354 + 356: 52(ivec2) Load 312(i32v) + 357: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 353 355 356 + Store 312(i32v) 357 + 358: 184(ivec3) Load 325(u32v) + 359: 14(int) Load 327(u32) + 360: 14(int) SNegate 359 + 361: 14(int) Load 327(u32) + 362: 184(ivec3) CompositeConstruct 360 360 360 + 363: 184(ivec3) CompositeConstruct 361 361 361 + 364: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 358 362 363 + Store 325(u32v) 364 + 365: 184(ivec3) Load 325(u32v) + 366: 184(ivec3) Load 325(u32v) + 367: 184(ivec3) SNegate 366 + 368: 184(ivec3) Load 325(u32v) + 369: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 365 367 368 + Store 325(u32v) 369 + 370: 19(ptr) AccessChain 312(i32v) 175 + 371: 18(int) Load 370 + 372: 19(ptr) AccessChain 312(i32v) 176 373: 18(int) Load 372 - 374: 19(ptr) AccessChain 314(i32v) 176 - 375: 18(int) Load 374 - 377: 18(int) Select 376 375 373 - Store 317(i32) 377 - 378: 18(int) Load 317(i32) - 379: 52(ivec2) CompositeConstruct 378 378 - 380: 18(int) Load 317(i32) - 381: 18(int) SNegate 380 - 382: 52(ivec2) CompositeConstruct 381 381 - 385: 52(ivec2) Select 384 382 379 - Store 314(i32v) 385 - 386: 38(ptr) AccessChain 327(u32v) 175 + 375: 18(int) Select 374 373 371 + Store 315(i32) 375 + 376: 18(int) Load 315(i32) + 377: 52(ivec2) CompositeConstruct 376 376 + 378: 18(int) Load 315(i32) + 379: 18(int) SNegate 378 + 380: 52(ivec2) CompositeConstruct 379 379 + 383: 52(ivec2) Select 382 380 377 + Store 312(i32v) 383 + 384: 38(ptr) AccessChain 325(u32v) 175 + 385: 14(int) Load 384 + 386: 38(ptr) AccessChain 325(u32v) 176 387: 14(int) Load 386 - 388: 38(ptr) AccessChain 327(u32v) 176 - 389: 14(int) Load 388 - 390: 14(int) Select 376 389 387 - Store 329(u32) 390 - 391: 14(int) Load 329(u32) - 392: 184(ivec3) CompositeConstruct 391 391 391 - 393: 14(int) Load 329(u32) - 394: 14(int) SNegate 393 - 395: 184(ivec3) CompositeConstruct 394 394 394 - 398: 184(ivec3) Select 397 395 392 - Store 327(u32v) 398 - 402: 399(ivec4) Load 401(i8v4) - 403: 18(int) Bitcast 402 - Store 317(i32) 403 - 405: 101(ivec2) Load 404(i16v2) - 406: 18(int) Bitcast 405 - Store 317(i32) 406 - 410: 407(ivec4) Load 409(u8v4) - 411: 14(int) Bitcast 410 - Store 329(u32) 411 - 413: 130(ivec2) Load 412(u16v2) - 414: 14(int) Bitcast 413 - Store 329(u32) 414 - 416: 57(int) Load 415(i64) - 417: 52(ivec2) Bitcast 416 - Store 314(i32v) 417 - 421: 63(int) Load 420(u64) - 422: 49(ivec2) Bitcast 421 - Store 418(u32v2) 422 - 425: 184(ivec3) Load 327(u32v) - 426: 14(int) Load 329(u32) - 427: 184(ivec3) CompositeConstruct 426 426 426 - 428: 396(bvec3) ULessThan 425 427 - Store 424(bv) 428 - 429: 52(ivec2) Load 314(i32v) - 430: 18(int) Load 317(i32) - 431: 52(ivec2) CompositeConstruct 430 430 - 432: 166(bvec2) SLessThan 429 431 - 433: 396(bvec3) Load 424(bv) - 434: 396(bvec3) VectorShuffle 433 432 3 4 2 - Store 424(bv) 434 - 435: 184(ivec3) Load 327(u32v) - 436: 14(int) Load 329(u32) - 437: 184(ivec3) CompositeConstruct 436 436 436 - 438: 396(bvec3) ULessThanEqual 435 437 - Store 424(bv) 438 - 439: 52(ivec2) Load 314(i32v) - 440: 18(int) Load 317(i32) - 441: 52(ivec2) CompositeConstruct 440 440 - 442: 166(bvec2) SLessThanEqual 439 441 - 443: 396(bvec3) Load 424(bv) - 444: 396(bvec3) VectorShuffle 443 442 3 4 2 - Store 424(bv) 444 - 445: 184(ivec3) Load 327(u32v) - 446: 14(int) Load 329(u32) - 447: 184(ivec3) CompositeConstruct 446 446 446 - 448: 396(bvec3) UGreaterThan 445 447 - Store 424(bv) 448 - 449: 52(ivec2) Load 314(i32v) - 450: 18(int) Load 317(i32) - 451: 52(ivec2) CompositeConstruct 450 450 - 452: 166(bvec2) SGreaterThan 449 451 - 453: 396(bvec3) Load 424(bv) - 454: 396(bvec3) VectorShuffle 453 452 3 4 2 - Store 424(bv) 454 - 455: 184(ivec3) Load 327(u32v) - 456: 14(int) Load 329(u32) - 457: 184(ivec3) CompositeConstruct 456 456 456 - 458: 396(bvec3) UGreaterThanEqual 455 457 - Store 424(bv) 458 - 459: 52(ivec2) Load 314(i32v) - 460: 18(int) Load 317(i32) - 461: 52(ivec2) CompositeConstruct 460 460 - 462: 166(bvec2) SGreaterThanEqual 459 461 - 463: 396(bvec3) Load 424(bv) - 464: 396(bvec3) VectorShuffle 463 462 3 4 2 - Store 424(bv) 464 - 465: 184(ivec3) Load 327(u32v) - 466: 14(int) Load 329(u32) - 467: 184(ivec3) CompositeConstruct 466 466 466 - 468: 396(bvec3) IEqual 465 467 - Store 424(bv) 468 - 469: 52(ivec2) Load 314(i32v) - 470: 18(int) Load 317(i32) - 471: 52(ivec2) CompositeConstruct 470 470 - 472: 166(bvec2) IEqual 469 471 - 473: 396(bvec3) Load 424(bv) - 474: 396(bvec3) VectorShuffle 473 472 3 4 2 - Store 424(bv) 474 - 475: 184(ivec3) Load 327(u32v) - 476: 14(int) Load 329(u32) - 477: 184(ivec3) CompositeConstruct 476 476 476 - 478: 396(bvec3) INotEqual 475 477 - Store 424(bv) 478 - 479: 52(ivec2) Load 314(i32v) - 480: 18(int) Load 317(i32) - 481: 52(ivec2) CompositeConstruct 480 480 - 482: 166(bvec2) INotEqual 479 481 - 483: 396(bvec3) Load 424(bv) - 484: 396(bvec3) VectorShuffle 483 482 3 4 2 - Store 424(bv) 484 + 388: 14(int) Select 374 387 385 + Store 327(u32) 388 + 389: 14(int) Load 327(u32) + 390: 184(ivec3) CompositeConstruct 389 389 389 + 391: 14(int) Load 327(u32) + 392: 14(int) SNegate 391 + 393: 184(ivec3) CompositeConstruct 392 392 392 + 396: 184(ivec3) Select 395 393 390 + Store 325(u32v) 396 + 400: 397(ivec4) Load 399(i8v4) + 401: 18(int) Bitcast 400 + Store 315(i32) 401 + 403: 101(ivec2) Load 402(i16v2) + 404: 18(int) Bitcast 403 + Store 315(i32) 404 + 408: 405(ivec4) Load 407(u8v4) + 409: 14(int) Bitcast 408 + Store 327(u32) 409 + 411: 130(ivec2) Load 410(u16v2) + 412: 14(int) Bitcast 411 + Store 327(u32) 412 + 414: 57(int) Load 413(i64) + 415: 52(ivec2) Bitcast 414 + Store 312(i32v) 415 + 419: 63(int) Load 418(u64) + 420: 49(ivec2) Bitcast 419 + Store 416(u32v2) 420 + 423: 184(ivec3) Load 325(u32v) + 424: 14(int) Load 327(u32) + 425: 184(ivec3) CompositeConstruct 424 424 424 + 426: 394(bvec3) ULessThan 423 425 + Store 422(bv) 426 + 427: 52(ivec2) Load 312(i32v) + 428: 18(int) Load 315(i32) + 429: 52(ivec2) CompositeConstruct 428 428 + 430: 166(bvec2) SLessThan 427 429 + 431: 394(bvec3) Load 422(bv) + 432: 394(bvec3) VectorShuffle 431 430 3 4 2 + Store 422(bv) 432 + 433: 184(ivec3) Load 325(u32v) + 434: 14(int) Load 327(u32) + 435: 184(ivec3) CompositeConstruct 434 434 434 + 436: 394(bvec3) ULessThanEqual 433 435 + Store 422(bv) 436 + 437: 52(ivec2) Load 312(i32v) + 438: 18(int) Load 315(i32) + 439: 52(ivec2) CompositeConstruct 438 438 + 440: 166(bvec2) SLessThanEqual 437 439 + 441: 394(bvec3) Load 422(bv) + 442: 394(bvec3) VectorShuffle 441 440 3 4 2 + Store 422(bv) 442 + 443: 184(ivec3) Load 325(u32v) + 444: 14(int) Load 327(u32) + 445: 184(ivec3) CompositeConstruct 444 444 444 + 446: 394(bvec3) UGreaterThan 443 445 + Store 422(bv) 446 + 447: 52(ivec2) Load 312(i32v) + 448: 18(int) Load 315(i32) + 449: 52(ivec2) CompositeConstruct 448 448 + 450: 166(bvec2) SGreaterThan 447 449 + 451: 394(bvec3) Load 422(bv) + 452: 394(bvec3) VectorShuffle 451 450 3 4 2 + Store 422(bv) 452 + 453: 184(ivec3) Load 325(u32v) + 454: 14(int) Load 327(u32) + 455: 184(ivec3) CompositeConstruct 454 454 454 + 456: 394(bvec3) UGreaterThanEqual 453 455 + Store 422(bv) 456 + 457: 52(ivec2) Load 312(i32v) + 458: 18(int) Load 315(i32) + 459: 52(ivec2) CompositeConstruct 458 458 + 460: 166(bvec2) SGreaterThanEqual 457 459 + 461: 394(bvec3) Load 422(bv) + 462: 394(bvec3) VectorShuffle 461 460 3 4 2 + Store 422(bv) 462 + 463: 184(ivec3) Load 325(u32v) + 464: 14(int) Load 327(u32) + 465: 184(ivec3) CompositeConstruct 464 464 464 + 466: 394(bvec3) IEqual 463 465 + Store 422(bv) 466 + 467: 52(ivec2) Load 312(i32v) + 468: 18(int) Load 315(i32) + 469: 52(ivec2) CompositeConstruct 468 468 + 470: 166(bvec2) IEqual 467 469 + 471: 394(bvec3) Load 422(bv) + 472: 394(bvec3) VectorShuffle 471 470 3 4 2 + Store 422(bv) 472 + 473: 184(ivec3) Load 325(u32v) + 474: 14(int) Load 327(u32) + 475: 184(ivec3) CompositeConstruct 474 474 474 + 476: 394(bvec3) INotEqual 473 475 + Store 422(bv) 476 + 477: 52(ivec2) Load 312(i32v) + 478: 18(int) Load 315(i32) + 479: 52(ivec2) CompositeConstruct 478 478 + 480: 166(bvec2) INotEqual 477 479 + 481: 394(bvec3) Load 422(bv) + 482: 394(bvec3) VectorShuffle 481 480 3 4 2 + Store 422(bv) 482 Return FunctionEnd diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index ac32fb9db..598fc94f6 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -1,7 +1,7 @@ spv.int64.frag // Module Version 10000 // Generated by (magic number): 80006 -// Id's are bound by 483 +// Id's are bound by 488 Capability Shader Capability Float64 @@ -37,38 +37,38 @@ spv.int64.frag Name 139 "i64" Name 159 "i" Name 166 "uv" - Name 221 "b" - Name 281 "i64v" - Name 284 "i64" - Name 294 "u64v" - Name 296 "u64" - Name 368 "dv" - Name 387 "iv" - Name 392 "uv" - Name 396 "bv" - Name 457 "Block" - MemberName 457(Block) 0 "i64v" - MemberName 457(Block) 1 "u64" - Name 459 "block" - Name 460 "si64" - Name 461 "su64" - Name 462 "si" - Name 463 "su" - Name 464 "sb" + Name 226 "b" + Name 286 "i64v" + Name 289 "i64" + Name 299 "u64v" + Name 301 "u64" + Name 373 "dv" + Name 392 "iv" + Name 397 "uv" + Name 401 "bv" + Name 462 "Block" + MemberName 462(Block) 0 "i64v" + MemberName 462(Block) 1 "u64" + Name 464 "block" + Name 465 "si64" + Name 466 "su64" + Name 467 "si" + Name 468 "su" + Name 469 "sb" MemberDecorate 28(Uniforms) 0 Offset 0 Decorate 28(Uniforms) Block Decorate 30 DescriptorSet 0 Decorate 30 Binding 0 - MemberDecorate 457(Block) 0 Offset 0 - MemberDecorate 457(Block) 1 Offset 24 - Decorate 457(Block) Block - Decorate 459(block) DescriptorSet 0 - Decorate 459(block) Binding 1 - Decorate 460(si64) SpecId 100 - Decorate 461(su64) SpecId 101 - Decorate 462(si) SpecId 102 - Decorate 463(su) SpecId 103 - Decorate 464(sb) SpecId 104 + MemberDecorate 462(Block) 0 Offset 0 + MemberDecorate 462(Block) 1 Offset 24 + Decorate 462(Block) Block + Decorate 464(block) DescriptorSet 0 + Decorate 464(block) Binding 1 + Decorate 465(si64) SpecId 100 + Decorate 466(su64) SpecId 101 + Decorate 467(si) SpecId 102 + Decorate 468(su) SpecId 103 + Decorate 469(sb) SpecId 104 2: TypeVoid 3: TypeFunction 2 14: TypeInt 64 0 @@ -128,52 +128,53 @@ spv.int64.frag 158: TypePointer Function 31(int) 164: TypeVector 21(int) 3 165: TypePointer Function 164(ivec3) + 199: TypeVector 31(int) 3 203: 21(int) Constant 1 204: TypePointer Function 21(int) - 212: 21(int) Constant 2 - 220: TypePointer Function 55(bool) - 222: 21(int) Constant 0 - 292: 52(ivec2) ConstantComposite 25 25 - 301: 132(ivec3) ConstantComposite 69 69 69 - 343: 55(bool) ConstantTrue - 350: 55(bool) ConstantFalse - 351: 56(bvec2) ConstantComposite 350 350 - 363: TypeVector 55(bool) 3 - 364: 363(bvec3) ConstantComposite 350 350 350 - 366: TypeVector 94(float) 3 - 367: TypePointer Function 366(fvec3) - 372: TypePointer Function 94(float) - 383: 31(int) Constant 1 - 384: 31(int) Constant 2 - 385: 74(ivec2) ConstantComposite 383 384 - 390: 81(ivec2) ConstantComposite 212 22 - 395: TypePointer Function 363(bvec3) - 457(Block): TypeStruct 136(ivec3) 14(int) - 458: TypePointer Uniform 457(Block) - 459(block): 458(ptr) Variable Uniform - 460(si64): 18(int) SpecConstant 4294967286 4294967295 - 461(su64): 14(int) SpecConstant 20 0 - 462(si): 31(int) SpecConstant 4294967291 - 463(su): 21(int) SpecConstant 4 - 464(sb): 55(bool) SpecConstantTrue - 465: 55(bool) SpecConstantOp 171 460(si64) 69 - 466: 55(bool) SpecConstantOp 171 461(su64) 69 - 467: 18(int) SpecConstantOp 169 464(sb) 61 60 - 468: 14(int) SpecConstantOp 169 464(sb) 70 69 - 469: 31(int) SpecConstantOp 114 460(si64) - 470: 18(int) SpecConstantOp 114 462(si) - 471: 21(int) SpecConstantOp 113 461(su64) - 472: 14(int) SpecConstantOp 113 463(su) - 473: 18(int) SpecConstantOp 128 461(su64) 69 - 474: 14(int) SpecConstantOp 128 460(si64) 69 - 475: 31(int) SpecConstantOp 113 461(su64) - 476: 31(int) SpecConstantOp 128 475 222 - 477: 18(int) SpecConstantOp 114 462(si) - 478: 14(int) SpecConstantOp 128 477 69 - 479: 31(int) SpecConstantOp 114 460(si64) - 480: 21(int) SpecConstantOp 128 479 222 - 481: 18(int) SpecConstantOp 113 463(su) - 482: 18(int) SpecConstantOp 128 481 69 + 217: 21(int) Constant 2 + 225: TypePointer Function 55(bool) + 227: 21(int) Constant 0 + 297: 52(ivec2) ConstantComposite 25 25 + 306: 132(ivec3) ConstantComposite 69 69 69 + 348: 55(bool) ConstantTrue + 355: 55(bool) ConstantFalse + 356: 56(bvec2) ConstantComposite 355 355 + 368: TypeVector 55(bool) 3 + 369: 368(bvec3) ConstantComposite 355 355 355 + 371: TypeVector 94(float) 3 + 372: TypePointer Function 371(fvec3) + 377: TypePointer Function 94(float) + 388: 31(int) Constant 1 + 389: 31(int) Constant 2 + 390: 74(ivec2) ConstantComposite 388 389 + 395: 81(ivec2) ConstantComposite 217 22 + 400: TypePointer Function 368(bvec3) + 462(Block): TypeStruct 136(ivec3) 14(int) + 463: TypePointer Uniform 462(Block) + 464(block): 463(ptr) Variable Uniform + 465(si64): 18(int) SpecConstant 4294967286 4294967295 + 466(su64): 14(int) SpecConstant 20 0 + 467(si): 31(int) SpecConstant 4294967291 + 468(su): 21(int) SpecConstant 4 + 469(sb): 55(bool) SpecConstantTrue + 470: 55(bool) SpecConstantOp 171 465(si64) 69 + 471: 55(bool) SpecConstantOp 171 466(su64) 69 + 472: 18(int) SpecConstantOp 169 469(sb) 61 60 + 473: 14(int) SpecConstantOp 169 469(sb) 70 69 + 474: 31(int) SpecConstantOp 114 465(si64) + 475: 18(int) SpecConstantOp 114 467(si) + 476: 21(int) SpecConstantOp 113 466(su64) + 477: 14(int) SpecConstantOp 113 468(su) + 478: 18(int) SpecConstantOp 128 466(su64) 69 + 479: 14(int) SpecConstantOp 128 465(si64) 69 + 480: 31(int) SpecConstantOp 113 466(su64) + 481: 31(int) SpecConstantOp 128 480 227 + 482: 18(int) SpecConstantOp 114 467(si) + 483: 14(int) SpecConstantOp 128 482 69 + 484: 31(int) SpecConstantOp 114 465(si64) + 485: 21(int) SpecConstantOp 128 484 227 + 486: 18(int) SpecConstantOp 113 468(su) + 487: 18(int) SpecConstantOp 128 486 69 4(main): 2 Function None 3 5: Label Store 16(u64Max) 17 @@ -286,7 +287,7 @@ spv.int64.frag 139(i64): 19(ptr) Variable Function 159(i): 158(ptr) Variable Function 166(uv): 165(ptr) Variable Function - 221(b): 220(ptr) Variable Function + 226(b): 225(ptr) Variable Function 135: 132(ivec3) Load 134(u64v) 137: 136(ivec3) CompositeConstruct 61 61 61 138: 132(ivec3) IAdd 135 137 @@ -359,302 +360,308 @@ spv.int64.frag 195: 18(int) SConvert 194 196: 18(int) SMod 193 195 Store 139(i64) 196 - 197: 31(int) Load 159(i) - 198: 18(int) SConvert 197 - 199: 14(int) Bitcast 198 - 200: 132(ivec3) Load 134(u64v) - 201: 132(ivec3) CompositeConstruct 199 199 199 - 202: 132(ivec3) ShiftLeftLogical 200 201 - Store 134(u64v) 202 + 197: 132(ivec3) Load 134(u64v) + 198: 31(int) Load 159(i) + 200: 199(ivec3) CompositeConstruct 198 198 198 + 201: 132(ivec3) ShiftLeftLogical 197 200 + Store 134(u64v) 201 + 202: 18(int) Load 139(i64) 205: 204(ptr) AccessChain 166(uv) 203 206: 21(int) Load 205 - 207: 18(int) UConvert 206 - 208: 18(int) Bitcast 207 - 209: 18(int) Load 139(i64) - 210: 18(int) ShiftRightArithmetic 209 208 - Store 139(i64) 210 - 211: 18(int) Load 139(i64) - 213: 40(ptr) AccessChain 134(u64v) 212 - 214: 14(int) Load 213 - 215: 18(int) ShiftLeftLogical 211 214 + 207: 18(int) ShiftRightArithmetic 202 206 + Store 139(i64) 207 + 208: 31(int) Load 159(i) + 209: 132(ivec3) Load 134(u64v) + 210: 199(ivec3) CompositeConstruct 208 208 208 + 211: 132(ivec3) ShiftLeftLogical 209 210 + Store 134(u64v) 211 + 212: 204(ptr) AccessChain 166(uv) 203 + 213: 21(int) Load 212 + 214: 18(int) Load 139(i64) + 215: 18(int) ShiftRightArithmetic 214 213 Store 139(i64) 215 - 216: 132(ivec3) Load 134(u64v) - 217: 18(int) Load 139(i64) - 218: 136(ivec3) CompositeConstruct 217 217 217 - 219: 132(ivec3) ShiftLeftLogical 216 218 - Store 134(u64v) 219 - 223: 40(ptr) AccessChain 134(u64v) 222 - 224: 14(int) Load 223 - 225: 18(int) Load 139(i64) - 226: 14(int) Bitcast 225 - 227: 55(bool) INotEqual 224 226 - Store 221(b) 227 - 228: 18(int) Load 139(i64) - 229: 14(int) Bitcast 228 - 230: 40(ptr) AccessChain 134(u64v) 222 - 231: 14(int) Load 230 - 232: 55(bool) IEqual 229 231 - Store 221(b) 232 - 233: 40(ptr) AccessChain 134(u64v) 222 - 234: 14(int) Load 233 - 235: 204(ptr) AccessChain 166(uv) 203 - 236: 21(int) Load 235 - 237: 14(int) UConvert 236 - 238: 55(bool) UGreaterThan 234 237 - Store 221(b) 238 - 239: 18(int) Load 139(i64) - 240: 31(int) Load 159(i) - 241: 18(int) SConvert 240 - 242: 55(bool) SLessThan 239 241 - Store 221(b) 242 - 243: 40(ptr) AccessChain 134(u64v) 203 - 244: 14(int) Load 243 - 245: 204(ptr) AccessChain 166(uv) 222 - 246: 21(int) Load 245 - 247: 14(int) UConvert 246 - 248: 55(bool) UGreaterThanEqual 244 247 - Store 221(b) 248 - 249: 18(int) Load 139(i64) - 250: 31(int) Load 159(i) - 251: 18(int) SConvert 250 - 252: 55(bool) SLessThanEqual 249 251 - Store 221(b) 252 - 253: 31(int) Load 159(i) - 254: 18(int) SConvert 253 - 255: 14(int) Bitcast 254 - 256: 132(ivec3) Load 134(u64v) - 257: 132(ivec3) CompositeConstruct 255 255 255 - 258: 132(ivec3) BitwiseOr 256 257 - Store 134(u64v) 258 - 259: 18(int) Load 139(i64) - 260: 31(int) Load 159(i) - 261: 18(int) SConvert 260 - 262: 18(int) BitwiseOr 259 261 - Store 139(i64) 262 - 263: 31(int) Load 159(i) - 264: 18(int) SConvert 263 - 265: 18(int) Load 139(i64) - 266: 18(int) BitwiseAnd 265 264 - Store 139(i64) 266 - 267: 132(ivec3) Load 134(u64v) - 268: 164(ivec3) Load 166(uv) - 269: 132(ivec3) UConvert 268 - 270: 132(ivec3) BitwiseAnd 267 269 - Store 134(u64v) 270 - 271: 18(int) Load 139(i64) - 272: 14(int) Bitcast 271 - 273: 132(ivec3) Load 134(u64v) - 274: 132(ivec3) CompositeConstruct 272 272 272 - 275: 132(ivec3) BitwiseXor 273 274 + 216: 18(int) Load 139(i64) + 218: 40(ptr) AccessChain 134(u64v) 217 + 219: 14(int) Load 218 + 220: 18(int) ShiftLeftLogical 216 219 + Store 139(i64) 220 + 221: 132(ivec3) Load 134(u64v) + 222: 18(int) Load 139(i64) + 223: 136(ivec3) CompositeConstruct 222 222 222 + 224: 132(ivec3) ShiftLeftLogical 221 223 + Store 134(u64v) 224 + 228: 40(ptr) AccessChain 134(u64v) 227 + 229: 14(int) Load 228 + 230: 18(int) Load 139(i64) + 231: 14(int) Bitcast 230 + 232: 55(bool) INotEqual 229 231 + Store 226(b) 232 + 233: 18(int) Load 139(i64) + 234: 14(int) Bitcast 233 + 235: 40(ptr) AccessChain 134(u64v) 227 + 236: 14(int) Load 235 + 237: 55(bool) IEqual 234 236 + Store 226(b) 237 + 238: 40(ptr) AccessChain 134(u64v) 227 + 239: 14(int) Load 238 + 240: 204(ptr) AccessChain 166(uv) 203 + 241: 21(int) Load 240 + 242: 14(int) UConvert 241 + 243: 55(bool) UGreaterThan 239 242 + Store 226(b) 243 + 244: 18(int) Load 139(i64) + 245: 31(int) Load 159(i) + 246: 18(int) SConvert 245 + 247: 55(bool) SLessThan 244 246 + Store 226(b) 247 + 248: 40(ptr) AccessChain 134(u64v) 203 + 249: 14(int) Load 248 + 250: 204(ptr) AccessChain 166(uv) 227 + 251: 21(int) Load 250 + 252: 14(int) UConvert 251 + 253: 55(bool) UGreaterThanEqual 249 252 + Store 226(b) 253 + 254: 18(int) Load 139(i64) + 255: 31(int) Load 159(i) + 256: 18(int) SConvert 255 + 257: 55(bool) SLessThanEqual 254 256 + Store 226(b) 257 + 258: 31(int) Load 159(i) + 259: 18(int) SConvert 258 + 260: 14(int) Bitcast 259 + 261: 132(ivec3) Load 134(u64v) + 262: 132(ivec3) CompositeConstruct 260 260 260 + 263: 132(ivec3) BitwiseOr 261 262 + Store 134(u64v) 263 + 264: 18(int) Load 139(i64) + 265: 31(int) Load 159(i) + 266: 18(int) SConvert 265 + 267: 18(int) BitwiseOr 264 266 + Store 139(i64) 267 + 268: 31(int) Load 159(i) + 269: 18(int) SConvert 268 + 270: 18(int) Load 139(i64) + 271: 18(int) BitwiseAnd 270 269 + Store 139(i64) 271 + 272: 132(ivec3) Load 134(u64v) + 273: 164(ivec3) Load 166(uv) + 274: 132(ivec3) UConvert 273 + 275: 132(ivec3) BitwiseAnd 272 274 Store 134(u64v) 275 - 276: 132(ivec3) Load 134(u64v) - 277: 18(int) Load 139(i64) - 278: 14(int) Bitcast 277 - 279: 132(ivec3) CompositeConstruct 278 278 278 - 280: 132(ivec3) BitwiseXor 276 279 + 276: 18(int) Load 139(i64) + 277: 14(int) Bitcast 276 + 278: 132(ivec3) Load 134(u64v) + 279: 132(ivec3) CompositeConstruct 277 277 277 + 280: 132(ivec3) BitwiseXor 278 279 Store 134(u64v) 280 + 281: 132(ivec3) Load 134(u64v) + 282: 18(int) Load 139(i64) + 283: 14(int) Bitcast 282 + 284: 132(ivec3) CompositeConstruct 283 283 283 + 285: 132(ivec3) BitwiseXor 281 284 + Store 134(u64v) 285 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 281(i64v): 53(ptr) Variable Function - 284(i64): 19(ptr) Variable Function - 294(u64v): 133(ptr) Variable Function - 296(u64): 40(ptr) Variable Function - 368(dv): 367(ptr) Variable Function - 387(iv): 75(ptr) Variable Function - 392(uv): 82(ptr) Variable Function - 396(bv): 395(ptr) Variable Function - 282: 52(ivec2) Load 281(i64v) - 283: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 282 - Store 281(i64v) 283 - 285: 18(int) Load 284(i64) - 286: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 285 - Store 284(i64) 286 - 287: 52(ivec2) Load 281(i64v) - 288: 18(int) Load 284(i64) - 289: 52(ivec2) CompositeConstruct 288 288 - 290: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 287 289 - Store 281(i64v) 290 - 291: 52(ivec2) Load 281(i64v) - 293: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 291 292 - Store 281(i64v) 293 - 295: 132(ivec3) Load 294(u64v) - 297: 14(int) Load 296(u64) - 298: 132(ivec3) CompositeConstruct 297 297 297 - 299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 298 - Store 294(u64v) 299 - 300: 132(ivec3) Load 294(u64v) - 302: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 301 - Store 294(u64v) 302 - 303: 52(ivec2) Load 281(i64v) - 304: 18(int) Load 284(i64) - 305: 52(ivec2) CompositeConstruct 304 304 - 306: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 303 305 - Store 281(i64v) 306 - 307: 52(ivec2) Load 281(i64v) - 308: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 307 292 - Store 281(i64v) 308 - 309: 132(ivec3) Load 294(u64v) - 310: 14(int) Load 296(u64) - 311: 132(ivec3) CompositeConstruct 310 310 310 - 312: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 309 311 - Store 294(u64v) 312 - 313: 132(ivec3) Load 294(u64v) - 314: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 313 301 - Store 294(u64v) 314 - 315: 52(ivec2) Load 281(i64v) - 316: 18(int) Load 284(i64) - 317: 18(int) SNegate 316 - 318: 18(int) Load 284(i64) - 319: 52(ivec2) CompositeConstruct 317 317 - 320: 52(ivec2) CompositeConstruct 318 318 - 321: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 315 319 320 - Store 281(i64v) 321 - 322: 52(ivec2) Load 281(i64v) - 323: 52(ivec2) Load 281(i64v) - 324: 52(ivec2) SNegate 323 - 325: 52(ivec2) Load 281(i64v) - 326: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 322 324 325 - Store 281(i64v) 326 - 327: 132(ivec3) Load 294(u64v) - 328: 14(int) Load 296(u64) - 329: 14(int) SNegate 328 - 330: 14(int) Load 296(u64) - 331: 132(ivec3) CompositeConstruct 329 329 329 - 332: 132(ivec3) CompositeConstruct 330 330 330 - 333: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 327 331 332 - Store 294(u64v) 333 - 334: 132(ivec3) Load 294(u64v) - 335: 132(ivec3) Load 294(u64v) - 336: 132(ivec3) SNegate 335 - 337: 132(ivec3) Load 294(u64v) - 338: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 334 336 337 - Store 294(u64v) 338 - 339: 19(ptr) AccessChain 281(i64v) 222 - 340: 18(int) Load 339 - 341: 19(ptr) AccessChain 281(i64v) 203 - 342: 18(int) Load 341 - 344: 18(int) Select 343 342 340 - Store 284(i64) 344 - 345: 18(int) Load 284(i64) - 346: 52(ivec2) CompositeConstruct 345 345 - 347: 18(int) Load 284(i64) - 348: 18(int) SNegate 347 - 349: 52(ivec2) CompositeConstruct 348 348 - 352: 52(ivec2) Select 351 349 346 - Store 281(i64v) 352 - 353: 40(ptr) AccessChain 294(u64v) 222 - 354: 14(int) Load 353 - 355: 40(ptr) AccessChain 294(u64v) 203 - 356: 14(int) Load 355 - 357: 14(int) Select 343 356 354 - Store 296(u64) 357 - 358: 14(int) Load 296(u64) - 359: 132(ivec3) CompositeConstruct 358 358 358 - 360: 14(int) Load 296(u64) - 361: 14(int) SNegate 360 - 362: 132(ivec3) CompositeConstruct 361 361 361 - 365: 132(ivec3) Select 364 362 359 - Store 294(u64v) 365 - 369: 366(fvec3) Load 368(dv) - 370: 95(fvec2) VectorShuffle 369 369 0 1 - 371: 52(ivec2) Bitcast 370 - Store 281(i64v) 371 - 373: 372(ptr) AccessChain 368(dv) 212 - 374: 94(float) Load 373 - 375: 14(int) Bitcast 374 - 376: 40(ptr) AccessChain 294(u64v) 222 - Store 376 375 - 377: 52(ivec2) Load 281(i64v) - 378: 95(fvec2) Bitcast 377 - 379: 366(fvec3) Load 368(dv) - 380: 366(fvec3) VectorShuffle 379 378 3 4 2 - Store 368(dv) 380 - 381: 132(ivec3) Load 294(u64v) - 382: 366(fvec3) Bitcast 381 - Store 368(dv) 382 - 386: 18(int) Bitcast 385 - Store 284(i64) 386 - 388: 18(int) Load 284(i64) - 389: 74(ivec2) Bitcast 388 - Store 387(iv) 389 - 391: 14(int) Bitcast 390 - Store 296(u64) 391 - 393: 14(int) Load 296(u64) - 394: 81(ivec2) Bitcast 393 - Store 392(uv) 394 - 397: 132(ivec3) Load 294(u64v) - 398: 14(int) Load 296(u64) - 399: 132(ivec3) CompositeConstruct 398 398 398 - 400: 363(bvec3) ULessThan 397 399 - Store 396(bv) 400 - 401: 52(ivec2) Load 281(i64v) - 402: 18(int) Load 284(i64) - 403: 52(ivec2) CompositeConstruct 402 402 - 404: 56(bvec2) SLessThan 401 403 - 405: 363(bvec3) Load 396(bv) - 406: 363(bvec3) VectorShuffle 405 404 3 4 2 - Store 396(bv) 406 - 407: 132(ivec3) Load 294(u64v) - 408: 14(int) Load 296(u64) - 409: 132(ivec3) CompositeConstruct 408 408 408 - 410: 363(bvec3) ULessThanEqual 407 409 - Store 396(bv) 410 - 411: 52(ivec2) Load 281(i64v) - 412: 18(int) Load 284(i64) - 413: 52(ivec2) CompositeConstruct 412 412 - 414: 56(bvec2) SLessThanEqual 411 413 - 415: 363(bvec3) Load 396(bv) - 416: 363(bvec3) VectorShuffle 415 414 3 4 2 - Store 396(bv) 416 - 417: 132(ivec3) Load 294(u64v) - 418: 14(int) Load 296(u64) - 419: 132(ivec3) CompositeConstruct 418 418 418 - 420: 363(bvec3) UGreaterThan 417 419 - Store 396(bv) 420 - 421: 52(ivec2) Load 281(i64v) - 422: 18(int) Load 284(i64) - 423: 52(ivec2) CompositeConstruct 422 422 - 424: 56(bvec2) SGreaterThan 421 423 - 425: 363(bvec3) Load 396(bv) - 426: 363(bvec3) VectorShuffle 425 424 3 4 2 - Store 396(bv) 426 - 427: 132(ivec3) Load 294(u64v) - 428: 14(int) Load 296(u64) - 429: 132(ivec3) CompositeConstruct 428 428 428 - 430: 363(bvec3) UGreaterThanEqual 427 429 - Store 396(bv) 430 - 431: 52(ivec2) Load 281(i64v) - 432: 18(int) Load 284(i64) - 433: 52(ivec2) CompositeConstruct 432 432 - 434: 56(bvec2) SGreaterThanEqual 431 433 - 435: 363(bvec3) Load 396(bv) - 436: 363(bvec3) VectorShuffle 435 434 3 4 2 - Store 396(bv) 436 - 437: 132(ivec3) Load 294(u64v) - 438: 14(int) Load 296(u64) - 439: 132(ivec3) CompositeConstruct 438 438 438 - 440: 363(bvec3) IEqual 437 439 - Store 396(bv) 440 - 441: 52(ivec2) Load 281(i64v) - 442: 18(int) Load 284(i64) - 443: 52(ivec2) CompositeConstruct 442 442 - 444: 56(bvec2) IEqual 441 443 - 445: 363(bvec3) Load 396(bv) - 446: 363(bvec3) VectorShuffle 445 444 3 4 2 - Store 396(bv) 446 - 447: 132(ivec3) Load 294(u64v) - 448: 14(int) Load 296(u64) - 449: 132(ivec3) CompositeConstruct 448 448 448 - 450: 363(bvec3) INotEqual 447 449 - Store 396(bv) 450 - 451: 52(ivec2) Load 281(i64v) - 452: 18(int) Load 284(i64) - 453: 52(ivec2) CompositeConstruct 452 452 - 454: 56(bvec2) INotEqual 451 453 - 455: 363(bvec3) Load 396(bv) - 456: 363(bvec3) VectorShuffle 455 454 3 4 2 - Store 396(bv) 456 + 286(i64v): 53(ptr) Variable Function + 289(i64): 19(ptr) Variable Function + 299(u64v): 133(ptr) Variable Function + 301(u64): 40(ptr) Variable Function + 373(dv): 372(ptr) Variable Function + 392(iv): 75(ptr) Variable Function + 397(uv): 82(ptr) Variable Function + 401(bv): 400(ptr) Variable Function + 287: 52(ivec2) Load 286(i64v) + 288: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 287 + Store 286(i64v) 288 + 290: 18(int) Load 289(i64) + 291: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 290 + Store 289(i64) 291 + 292: 52(ivec2) Load 286(i64v) + 293: 18(int) Load 289(i64) + 294: 52(ivec2) CompositeConstruct 293 293 + 295: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 292 294 + Store 286(i64v) 295 + 296: 52(ivec2) Load 286(i64v) + 298: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 296 297 + Store 286(i64v) 298 + 300: 132(ivec3) Load 299(u64v) + 302: 14(int) Load 301(u64) + 303: 132(ivec3) CompositeConstruct 302 302 302 + 304: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 303 + Store 299(u64v) 304 + 305: 132(ivec3) Load 299(u64v) + 307: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 305 306 + Store 299(u64v) 307 + 308: 52(ivec2) Load 286(i64v) + 309: 18(int) Load 289(i64) + 310: 52(ivec2) CompositeConstruct 309 309 + 311: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 308 310 + Store 286(i64v) 311 + 312: 52(ivec2) Load 286(i64v) + 313: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 312 297 + Store 286(i64v) 313 + 314: 132(ivec3) Load 299(u64v) + 315: 14(int) Load 301(u64) + 316: 132(ivec3) CompositeConstruct 315 315 315 + 317: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 314 316 + Store 299(u64v) 317 + 318: 132(ivec3) Load 299(u64v) + 319: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 318 306 + Store 299(u64v) 319 + 320: 52(ivec2) Load 286(i64v) + 321: 18(int) Load 289(i64) + 322: 18(int) SNegate 321 + 323: 18(int) Load 289(i64) + 324: 52(ivec2) CompositeConstruct 322 322 + 325: 52(ivec2) CompositeConstruct 323 323 + 326: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 320 324 325 + Store 286(i64v) 326 + 327: 52(ivec2) Load 286(i64v) + 328: 52(ivec2) Load 286(i64v) + 329: 52(ivec2) SNegate 328 + 330: 52(ivec2) Load 286(i64v) + 331: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 327 329 330 + Store 286(i64v) 331 + 332: 132(ivec3) Load 299(u64v) + 333: 14(int) Load 301(u64) + 334: 14(int) SNegate 333 + 335: 14(int) Load 301(u64) + 336: 132(ivec3) CompositeConstruct 334 334 334 + 337: 132(ivec3) CompositeConstruct 335 335 335 + 338: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 332 336 337 + Store 299(u64v) 338 + 339: 132(ivec3) Load 299(u64v) + 340: 132(ivec3) Load 299(u64v) + 341: 132(ivec3) SNegate 340 + 342: 132(ivec3) Load 299(u64v) + 343: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 339 341 342 + Store 299(u64v) 343 + 344: 19(ptr) AccessChain 286(i64v) 227 + 345: 18(int) Load 344 + 346: 19(ptr) AccessChain 286(i64v) 203 + 347: 18(int) Load 346 + 349: 18(int) Select 348 347 345 + Store 289(i64) 349 + 350: 18(int) Load 289(i64) + 351: 52(ivec2) CompositeConstruct 350 350 + 352: 18(int) Load 289(i64) + 353: 18(int) SNegate 352 + 354: 52(ivec2) CompositeConstruct 353 353 + 357: 52(ivec2) Select 356 354 351 + Store 286(i64v) 357 + 358: 40(ptr) AccessChain 299(u64v) 227 + 359: 14(int) Load 358 + 360: 40(ptr) AccessChain 299(u64v) 203 + 361: 14(int) Load 360 + 362: 14(int) Select 348 361 359 + Store 301(u64) 362 + 363: 14(int) Load 301(u64) + 364: 132(ivec3) CompositeConstruct 363 363 363 + 365: 14(int) Load 301(u64) + 366: 14(int) SNegate 365 + 367: 132(ivec3) CompositeConstruct 366 366 366 + 370: 132(ivec3) Select 369 367 364 + Store 299(u64v) 370 + 374: 371(fvec3) Load 373(dv) + 375: 95(fvec2) VectorShuffle 374 374 0 1 + 376: 52(ivec2) Bitcast 375 + Store 286(i64v) 376 + 378: 377(ptr) AccessChain 373(dv) 217 + 379: 94(float) Load 378 + 380: 14(int) Bitcast 379 + 381: 40(ptr) AccessChain 299(u64v) 227 + Store 381 380 + 382: 52(ivec2) Load 286(i64v) + 383: 95(fvec2) Bitcast 382 + 384: 371(fvec3) Load 373(dv) + 385: 371(fvec3) VectorShuffle 384 383 3 4 2 + Store 373(dv) 385 + 386: 132(ivec3) Load 299(u64v) + 387: 371(fvec3) Bitcast 386 + Store 373(dv) 387 + 391: 18(int) Bitcast 390 + Store 289(i64) 391 + 393: 18(int) Load 289(i64) + 394: 74(ivec2) Bitcast 393 + Store 392(iv) 394 + 396: 14(int) Bitcast 395 + Store 301(u64) 396 + 398: 14(int) Load 301(u64) + 399: 81(ivec2) Bitcast 398 + Store 397(uv) 399 + 402: 132(ivec3) Load 299(u64v) + 403: 14(int) Load 301(u64) + 404: 132(ivec3) CompositeConstruct 403 403 403 + 405: 368(bvec3) ULessThan 402 404 + Store 401(bv) 405 + 406: 52(ivec2) Load 286(i64v) + 407: 18(int) Load 289(i64) + 408: 52(ivec2) CompositeConstruct 407 407 + 409: 56(bvec2) SLessThan 406 408 + 410: 368(bvec3) Load 401(bv) + 411: 368(bvec3) VectorShuffle 410 409 3 4 2 + Store 401(bv) 411 + 412: 132(ivec3) Load 299(u64v) + 413: 14(int) Load 301(u64) + 414: 132(ivec3) CompositeConstruct 413 413 413 + 415: 368(bvec3) ULessThanEqual 412 414 + Store 401(bv) 415 + 416: 52(ivec2) Load 286(i64v) + 417: 18(int) Load 289(i64) + 418: 52(ivec2) CompositeConstruct 417 417 + 419: 56(bvec2) SLessThanEqual 416 418 + 420: 368(bvec3) Load 401(bv) + 421: 368(bvec3) VectorShuffle 420 419 3 4 2 + Store 401(bv) 421 + 422: 132(ivec3) Load 299(u64v) + 423: 14(int) Load 301(u64) + 424: 132(ivec3) CompositeConstruct 423 423 423 + 425: 368(bvec3) UGreaterThan 422 424 + Store 401(bv) 425 + 426: 52(ivec2) Load 286(i64v) + 427: 18(int) Load 289(i64) + 428: 52(ivec2) CompositeConstruct 427 427 + 429: 56(bvec2) SGreaterThan 426 428 + 430: 368(bvec3) Load 401(bv) + 431: 368(bvec3) VectorShuffle 430 429 3 4 2 + Store 401(bv) 431 + 432: 132(ivec3) Load 299(u64v) + 433: 14(int) Load 301(u64) + 434: 132(ivec3) CompositeConstruct 433 433 433 + 435: 368(bvec3) UGreaterThanEqual 432 434 + Store 401(bv) 435 + 436: 52(ivec2) Load 286(i64v) + 437: 18(int) Load 289(i64) + 438: 52(ivec2) CompositeConstruct 437 437 + 439: 56(bvec2) SGreaterThanEqual 436 438 + 440: 368(bvec3) Load 401(bv) + 441: 368(bvec3) VectorShuffle 440 439 3 4 2 + Store 401(bv) 441 + 442: 132(ivec3) Load 299(u64v) + 443: 14(int) Load 301(u64) + 444: 132(ivec3) CompositeConstruct 443 443 443 + 445: 368(bvec3) IEqual 442 444 + Store 401(bv) 445 + 446: 52(ivec2) Load 286(i64v) + 447: 18(int) Load 289(i64) + 448: 52(ivec2) CompositeConstruct 447 447 + 449: 56(bvec2) IEqual 446 448 + 450: 368(bvec3) Load 401(bv) + 451: 368(bvec3) VectorShuffle 450 449 3 4 2 + Store 401(bv) 451 + 452: 132(ivec3) Load 299(u64v) + 453: 14(int) Load 301(u64) + 454: 132(ivec3) CompositeConstruct 453 453 453 + 455: 368(bvec3) INotEqual 452 454 + Store 401(bv) 455 + 456: 52(ivec2) Load 286(i64v) + 457: 18(int) Load 289(i64) + 458: 52(ivec2) CompositeConstruct 457 457 + 459: 56(bvec2) INotEqual 456 458 + 460: 368(bvec3) Load 401(bv) + 461: 368(bvec3) VectorShuffle 460 459 3 4 2 + Store 401(bv) 461 Return FunctionEnd diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out new file mode 100755 index 000000000..4cdb6d5df --- /dev/null +++ b/Test/baseResults/spv.rankShift.comp.out @@ -0,0 +1,57 @@ +spv.rankShift.comp +// Module Version 10000 +// Generated by (magic number): 80006 +// Id's are bound by 33 + + Capability Shader + Capability Int64 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 54 1 1 + Source GLSL 450 + SourceExtension "GL_ARB_gpu_shader_int64" + Name 4 "main" + Name 8 "result" + Name 11 "arg0" + Name 15 "arg1" + Decorate 11(arg0) Location 4 + Decorate 15(arg1) Location 5 + Decorate 32 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 64 0 + 7: TypePointer Function 6(int) + 9: TypeInt 64 1 + 10: TypePointer UniformConstant 9(int) + 11(arg0): 10(ptr) Variable UniformConstant + 13: TypeInt 32 0 + 14: TypePointer UniformConstant 13(int) + 15(arg1): 14(ptr) Variable UniformConstant + 29: TypeVector 13(int) 3 + 30: 13(int) Constant 54 + 31: 13(int) Constant 1 + 32: 29(ivec3) ConstantComposite 30 31 31 + 4(main): 2 Function None 3 + 5: Label + 8(result): 7(ptr) Variable Function + 12: 9(int) Load 11(arg0) + 16: 13(int) Load 15(arg1) + 17: 9(int) ShiftLeftLogical 12 16 + 18: 6(int) Bitcast 17 + Store 8(result) 18 + 19: 9(int) Load 11(arg0) + 20: 13(int) Load 15(arg1) + 21: 9(int) ShiftRightArithmetic 19 20 + 22: 6(int) Bitcast 21 + Store 8(result) 22 + 23: 13(int) Load 15(arg1) + 24: 6(int) Load 8(result) + 25: 6(int) ShiftLeftLogical 24 23 + Store 8(result) 25 + 26: 13(int) Load 15(arg1) + 27: 6(int) Load 8(result) + 28: 6(int) ShiftRightLogical 27 26 + Store 8(result) 28 + Return + FunctionEnd diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out index c8135a1d5..6639dc7b5 100755 --- a/Test/baseResults/spv.vulkan110.int16.frag.out +++ b/Test/baseResults/spv.vulkan110.int16.frag.out @@ -1,7 +1,7 @@ spv.vulkan110.int16.frag // Module Version 10300 // Generated by (magic number): 80006 -// Id's are bound by 525 +// Id's are bound by 523 Capability Shader Capability Float16 @@ -52,48 +52,48 @@ spv.vulkan110.int16.frag Name 220 "i" Name 227 "uv" Name 243 "i64" - Name 283 "b" - Name 345 "i16v" - Name 348 "i16" - Name 358 "u16v" - Name 360 "u16" - Name 430 "i32" - Name 433 "i64" - Name 436 "i16v4" - Name 439 "u32" - Name 440 "u16v2" - Name 444 "u64" - Name 447 "u16v4" - Name 459 "bv" - Name 520 "Block" - MemberName 520(Block) 0 "i16" - MemberName 520(Block) 1 "i16v2" - MemberName 520(Block) 2 "i16v3" - MemberName 520(Block) 3 "i16v4" - MemberName 520(Block) 4 "u16" - MemberName 520(Block) 5 "u16v2" - MemberName 520(Block) 6 "u16v3" - MemberName 520(Block) 7 "u16v4" - Name 522 "block" - Name 523 "si16" - Name 524 "su16" + Name 281 "b" + Name 343 "i16v" + Name 346 "i16" + Name 356 "u16v" + Name 358 "u16" + Name 428 "i32" + Name 431 "i64" + Name 434 "i16v4" + Name 437 "u32" + Name 438 "u16v2" + Name 442 "u64" + Name 445 "u16v4" + Name 457 "bv" + Name 518 "Block" + MemberName 518(Block) 0 "i16" + MemberName 518(Block) 1 "i16v2" + MemberName 518(Block) 2 "i16v3" + MemberName 518(Block) 3 "i16v4" + MemberName 518(Block) 4 "u16" + MemberName 518(Block) 5 "u16v2" + MemberName 518(Block) 6 "u16v3" + MemberName 518(Block) 7 "u16v4" + Name 520 "block" + Name 521 "si16" + Name 522 "su16" MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block Decorate 26 DescriptorSet 0 Decorate 26 Binding 0 - MemberDecorate 520(Block) 0 Offset 0 - MemberDecorate 520(Block) 1 Offset 4 - MemberDecorate 520(Block) 2 Offset 8 - MemberDecorate 520(Block) 3 Offset 16 - MemberDecorate 520(Block) 4 Offset 24 - MemberDecorate 520(Block) 5 Offset 28 - MemberDecorate 520(Block) 6 Offset 32 - MemberDecorate 520(Block) 7 Offset 40 - Decorate 520(Block) Block - Decorate 522(block) DescriptorSet 0 - Decorate 522(block) Binding 1 - Decorate 523(si16) SpecId 100 - Decorate 524(su16) SpecId 101 + MemberDecorate 518(Block) 0 Offset 0 + MemberDecorate 518(Block) 1 Offset 4 + MemberDecorate 518(Block) 2 Offset 8 + MemberDecorate 518(Block) 3 Offset 16 + MemberDecorate 518(Block) 4 Offset 24 + MemberDecorate 518(Block) 5 Offset 28 + MemberDecorate 518(Block) 6 Offset 32 + MemberDecorate 518(Block) 7 Offset 40 + Decorate 518(Block) Block + Decorate 520(block) DescriptorSet 0 + Decorate 520(block) Binding 1 + Decorate 521(si16) SpecId 100 + Decorate 522(su16) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 1 @@ -168,28 +168,28 @@ spv.vulkan110.int16.frag 242: TypePointer Function 71(int) 264: 17(int) Constant 1 270: 17(int) Constant 2 - 275: TypeVector 27(int) 3 - 282: TypePointer Function 173(bool) - 284: 17(int) Constant 0 - 298: TypePointer Function 17(int) - 356: 52(ivec2) ConstantComposite 21 21 - 365: 193(ivec3) ConstantComposite 184 184 184 - 407: 173(bool) ConstantTrue - 414: 173(bool) ConstantFalse - 415: 174(bvec2) ConstantComposite 414 414 - 427: TypeVector 173(bool) 3 - 428: 427(bvec3) ConstantComposite 414 414 414 - 434: TypeVector 14(int) 4 - 435: TypePointer Function 434(ivec4) - 443: TypePointer Function 77(int) - 445: TypeVector 36(int) 4 - 446: TypePointer Function 445(ivec4) - 458: TypePointer Function 427(bvec3) - 520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4) - 521: TypePointer Uniform 520(Block) - 522(block): 521(ptr) Variable Uniform - 523(si16): 14(int) SpecConstant 4294967286 - 524(su16): 36(int) SpecConstant 20 + 276: TypeVector 27(int) 3 + 280: TypePointer Function 173(bool) + 282: 17(int) Constant 0 + 296: TypePointer Function 17(int) + 354: 52(ivec2) ConstantComposite 21 21 + 363: 193(ivec3) ConstantComposite 184 184 184 + 405: 173(bool) ConstantTrue + 412: 173(bool) ConstantFalse + 413: 174(bvec2) ConstantComposite 412 412 + 425: TypeVector 173(bool) 3 + 426: 425(bvec3) ConstantComposite 412 412 412 + 432: TypeVector 14(int) 4 + 433: TypePointer Function 432(ivec4) + 441: TypePointer Function 77(int) + 443: TypeVector 36(int) 4 + 444: TypePointer Function 443(ivec4) + 456: TypePointer Function 425(bvec3) + 518(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443(ivec4) + 519: TypePointer Uniform 518(Block) + 520(block): 519(ptr) Variable Uniform + 521(si16): 14(int) SpecConstant 4294967286 + 522(su16): 36(int) SpecConstant 20 4(main): 2 Function None 3 5: Label Return @@ -368,7 +368,7 @@ spv.vulkan110.int16.frag 220(i): 219(ptr) Variable Function 227(uv): 226(ptr) Variable Function 243(i64): 242(ptr) Variable Function - 283(b): 282(ptr) Variable Function + 281(b): 280(ptr) Variable Function 196: 193(ivec3) Load 195(u16v) 198: 197(ivec3) CompositeConstruct 179 179 179 199: 193(ivec3) IAdd 196 198 @@ -457,287 +457,285 @@ spv.vulkan110.int16.frag 273: 14(int) ShiftLeftLogical 269 272 Store 200(i16) 273 274: 193(ivec3) Load 195(u16v) - 276: 275(ivec3) UConvert 274 - 277: 275(ivec3) Bitcast 276 - 278: 27(int) Load 220(i) - 279: 275(ivec3) CompositeConstruct 278 278 278 - 280: 275(ivec3) ShiftLeftLogical 277 279 - 281: 225(ivec3) Bitcast 280 - Store 227(uv) 281 - 285: 37(ptr) AccessChain 195(u16v) 284 - 286: 36(int) Load 285 - 287: 14(int) Load 200(i16) - 288: 36(int) Bitcast 287 - 289: 173(bool) INotEqual 286 288 - Store 283(b) 289 - 290: 14(int) Load 200(i16) - 291: 36(int) Bitcast 290 - 292: 37(ptr) AccessChain 195(u16v) 284 - 293: 36(int) Load 292 - 294: 173(bool) IEqual 291 293 - Store 283(b) 294 - 295: 37(ptr) AccessChain 195(u16v) 284 - 296: 36(int) Load 295 - 297: 17(int) UConvert 296 - 299: 298(ptr) AccessChain 227(uv) 264 - 300: 17(int) Load 299 - 301: 173(bool) UGreaterThan 297 300 - Store 283(b) 301 - 302: 14(int) Load 200(i16) - 303: 27(int) SConvert 302 - 304: 27(int) Load 220(i) - 305: 173(bool) SLessThan 303 304 - Store 283(b) 305 - 306: 37(ptr) AccessChain 195(u16v) 264 - 307: 36(int) Load 306 - 308: 17(int) UConvert 307 - 309: 298(ptr) AccessChain 227(uv) 284 - 310: 17(int) Load 309 - 311: 173(bool) UGreaterThanEqual 308 310 - Store 283(b) 311 - 312: 14(int) Load 200(i16) - 313: 27(int) SConvert 312 - 314: 27(int) Load 220(i) - 315: 173(bool) SLessThanEqual 313 314 - Store 283(b) 315 - 316: 14(int) Load 200(i16) - 317: 27(int) SConvert 316 - 318: 17(int) Bitcast 317 - 319: 225(ivec3) Load 227(uv) - 320: 225(ivec3) CompositeConstruct 318 318 318 - 321: 225(ivec3) BitwiseOr 319 320 - Store 227(uv) 321 - 322: 14(int) Load 200(i16) - 323: 27(int) SConvert 322 - 324: 27(int) Load 220(i) - 325: 27(int) BitwiseOr 323 324 - Store 220(i) 325 - 326: 14(int) Load 200(i16) - 327: 71(int) SConvert 326 - 328: 71(int) Load 243(i64) - 329: 71(int) BitwiseAnd 328 327 - Store 243(i64) 329 - 330: 193(ivec3) Load 195(u16v) - 331: 225(ivec3) UConvert 330 - 332: 225(ivec3) Load 227(uv) - 333: 225(ivec3) BitwiseAnd 331 332 - Store 227(uv) 333 - 334: 14(int) Load 200(i16) - 335: 27(int) SConvert 334 - 336: 17(int) Bitcast 335 - 337: 225(ivec3) Load 227(uv) - 338: 225(ivec3) CompositeConstruct 336 336 336 - 339: 225(ivec3) BitwiseXor 337 338 - Store 227(uv) 339 - 340: 193(ivec3) Load 195(u16v) - 341: 14(int) Load 200(i16) - 342: 36(int) Bitcast 341 - 343: 193(ivec3) CompositeConstruct 342 342 342 - 344: 193(ivec3) BitwiseXor 340 343 - Store 195(u16v) 344 + 275: 27(int) Load 220(i) + 277: 276(ivec3) CompositeConstruct 275 275 275 + 278: 193(ivec3) ShiftLeftLogical 274 277 + 279: 225(ivec3) UConvert 278 + Store 227(uv) 279 + 283: 37(ptr) AccessChain 195(u16v) 282 + 284: 36(int) Load 283 + 285: 14(int) Load 200(i16) + 286: 36(int) Bitcast 285 + 287: 173(bool) INotEqual 284 286 + Store 281(b) 287 + 288: 14(int) Load 200(i16) + 289: 36(int) Bitcast 288 + 290: 37(ptr) AccessChain 195(u16v) 282 + 291: 36(int) Load 290 + 292: 173(bool) IEqual 289 291 + Store 281(b) 292 + 293: 37(ptr) AccessChain 195(u16v) 282 + 294: 36(int) Load 293 + 295: 17(int) UConvert 294 + 297: 296(ptr) AccessChain 227(uv) 264 + 298: 17(int) Load 297 + 299: 173(bool) UGreaterThan 295 298 + Store 281(b) 299 + 300: 14(int) Load 200(i16) + 301: 27(int) SConvert 300 + 302: 27(int) Load 220(i) + 303: 173(bool) SLessThan 301 302 + Store 281(b) 303 + 304: 37(ptr) AccessChain 195(u16v) 264 + 305: 36(int) Load 304 + 306: 17(int) UConvert 305 + 307: 296(ptr) AccessChain 227(uv) 282 + 308: 17(int) Load 307 + 309: 173(bool) UGreaterThanEqual 306 308 + Store 281(b) 309 + 310: 14(int) Load 200(i16) + 311: 27(int) SConvert 310 + 312: 27(int) Load 220(i) + 313: 173(bool) SLessThanEqual 311 312 + Store 281(b) 313 + 314: 14(int) Load 200(i16) + 315: 27(int) SConvert 314 + 316: 17(int) Bitcast 315 + 317: 225(ivec3) Load 227(uv) + 318: 225(ivec3) CompositeConstruct 316 316 316 + 319: 225(ivec3) BitwiseOr 317 318 + Store 227(uv) 319 + 320: 14(int) Load 200(i16) + 321: 27(int) SConvert 320 + 322: 27(int) Load 220(i) + 323: 27(int) BitwiseOr 321 322 + Store 220(i) 323 + 324: 14(int) Load 200(i16) + 325: 71(int) SConvert 324 + 326: 71(int) Load 243(i64) + 327: 71(int) BitwiseAnd 326 325 + Store 243(i64) 327 + 328: 193(ivec3) Load 195(u16v) + 329: 225(ivec3) UConvert 328 + 330: 225(ivec3) Load 227(uv) + 331: 225(ivec3) BitwiseAnd 329 330 + Store 227(uv) 331 + 332: 14(int) Load 200(i16) + 333: 27(int) SConvert 332 + 334: 17(int) Bitcast 333 + 335: 225(ivec3) Load 227(uv) + 336: 225(ivec3) CompositeConstruct 334 334 334 + 337: 225(ivec3) BitwiseXor 335 336 + Store 227(uv) 337 + 338: 193(ivec3) Load 195(u16v) + 339: 14(int) Load 200(i16) + 340: 36(int) Bitcast 339 + 341: 193(ivec3) CompositeConstruct 340 340 340 + 342: 193(ivec3) BitwiseXor 338 341 + Store 195(u16v) 342 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 345(i16v): 53(ptr) Variable Function - 348(i16): 15(ptr) Variable Function - 358(u16v): 194(ptr) Variable Function - 360(u16): 37(ptr) Variable Function - 430(i32): 219(ptr) Variable Function - 433(i64): 242(ptr) Variable Function - 436(i16v4): 435(ptr) Variable Function - 439(u32): 298(ptr) Variable Function - 440(u16v2): 58(ptr) Variable Function - 444(u64): 443(ptr) Variable Function - 447(u16v4): 446(ptr) Variable Function - 459(bv): 458(ptr) Variable Function - 346: 52(ivec2) Load 345(i16v) - 347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346 - Store 345(i16v) 347 - 349: 14(int) Load 348(i16) - 350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349 - Store 348(i16) 350 - 351: 52(ivec2) Load 345(i16v) - 352: 14(int) Load 348(i16) - 353: 52(ivec2) CompositeConstruct 352 352 - 354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353 - Store 345(i16v) 354 - 355: 52(ivec2) Load 345(i16v) - 357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356 - Store 345(i16v) 357 - 359: 193(ivec3) Load 358(u16v) - 361: 36(int) Load 360(u16) - 362: 193(ivec3) CompositeConstruct 361 361 361 - 363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362 - Store 358(u16v) 363 - 364: 193(ivec3) Load 358(u16v) - 366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365 - Store 358(u16v) 366 - 367: 52(ivec2) Load 345(i16v) - 368: 14(int) Load 348(i16) - 369: 52(ivec2) CompositeConstruct 368 368 - 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369 - Store 345(i16v) 370 - 371: 52(ivec2) Load 345(i16v) - 372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356 - Store 345(i16v) 372 - 373: 193(ivec3) Load 358(u16v) - 374: 36(int) Load 360(u16) - 375: 193(ivec3) CompositeConstruct 374 374 374 - 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375 - Store 358(u16v) 376 - 377: 193(ivec3) Load 358(u16v) - 378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365 - Store 358(u16v) 378 - 379: 52(ivec2) Load 345(i16v) - 380: 14(int) Load 348(i16) - 381: 14(int) SNegate 380 - 382: 14(int) Load 348(i16) - 383: 52(ivec2) CompositeConstruct 381 381 - 384: 52(ivec2) CompositeConstruct 382 382 - 385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384 - Store 345(i16v) 385 - 386: 52(ivec2) Load 345(i16v) - 387: 52(ivec2) Load 345(i16v) - 388: 52(ivec2) SNegate 387 - 389: 52(ivec2) Load 345(i16v) - 390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389 - Store 345(i16v) 390 - 391: 193(ivec3) Load 358(u16v) - 392: 36(int) Load 360(u16) - 393: 36(int) SNegate 392 - 394: 36(int) Load 360(u16) - 395: 193(ivec3) CompositeConstruct 393 393 393 - 396: 193(ivec3) CompositeConstruct 394 394 394 - 397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396 - Store 358(u16v) 397 - 398: 193(ivec3) Load 358(u16v) - 399: 193(ivec3) Load 358(u16v) - 400: 193(ivec3) SNegate 399 - 401: 193(ivec3) Load 358(u16v) - 402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401 - Store 358(u16v) 402 - 403: 15(ptr) AccessChain 345(i16v) 284 + 343(i16v): 53(ptr) Variable Function + 346(i16): 15(ptr) Variable Function + 356(u16v): 194(ptr) Variable Function + 358(u16): 37(ptr) Variable Function + 428(i32): 219(ptr) Variable Function + 431(i64): 242(ptr) Variable Function + 434(i16v4): 433(ptr) Variable Function + 437(u32): 296(ptr) Variable Function + 438(u16v2): 58(ptr) Variable Function + 442(u64): 441(ptr) Variable Function + 445(u16v4): 444(ptr) Variable Function + 457(bv): 456(ptr) Variable Function + 344: 52(ivec2) Load 343(i16v) + 345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344 + Store 343(i16v) 345 + 347: 14(int) Load 346(i16) + 348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347 + Store 346(i16) 348 + 349: 52(ivec2) Load 343(i16v) + 350: 14(int) Load 346(i16) + 351: 52(ivec2) CompositeConstruct 350 350 + 352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351 + Store 343(i16v) 352 + 353: 52(ivec2) Load 343(i16v) + 355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354 + Store 343(i16v) 355 + 357: 193(ivec3) Load 356(u16v) + 359: 36(int) Load 358(u16) + 360: 193(ivec3) CompositeConstruct 359 359 359 + 361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360 + Store 356(u16v) 361 + 362: 193(ivec3) Load 356(u16v) + 364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363 + Store 356(u16v) 364 + 365: 52(ivec2) Load 343(i16v) + 366: 14(int) Load 346(i16) + 367: 52(ivec2) CompositeConstruct 366 366 + 368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367 + Store 343(i16v) 368 + 369: 52(ivec2) Load 343(i16v) + 370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354 + Store 343(i16v) 370 + 371: 193(ivec3) Load 356(u16v) + 372: 36(int) Load 358(u16) + 373: 193(ivec3) CompositeConstruct 372 372 372 + 374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373 + Store 356(u16v) 374 + 375: 193(ivec3) Load 356(u16v) + 376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363 + Store 356(u16v) 376 + 377: 52(ivec2) Load 343(i16v) + 378: 14(int) Load 346(i16) + 379: 14(int) SNegate 378 + 380: 14(int) Load 346(i16) + 381: 52(ivec2) CompositeConstruct 379 379 + 382: 52(ivec2) CompositeConstruct 380 380 + 383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382 + Store 343(i16v) 383 + 384: 52(ivec2) Load 343(i16v) + 385: 52(ivec2) Load 343(i16v) + 386: 52(ivec2) SNegate 385 + 387: 52(ivec2) Load 343(i16v) + 388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387 + Store 343(i16v) 388 + 389: 193(ivec3) Load 356(u16v) + 390: 36(int) Load 358(u16) + 391: 36(int) SNegate 390 + 392: 36(int) Load 358(u16) + 393: 193(ivec3) CompositeConstruct 391 391 391 + 394: 193(ivec3) CompositeConstruct 392 392 392 + 395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394 + Store 356(u16v) 395 + 396: 193(ivec3) Load 356(u16v) + 397: 193(ivec3) Load 356(u16v) + 398: 193(ivec3) SNegate 397 + 399: 193(ivec3) Load 356(u16v) + 400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399 + Store 356(u16v) 400 + 401: 15(ptr) AccessChain 343(i16v) 282 + 402: 14(int) Load 401 + 403: 15(ptr) AccessChain 343(i16v) 264 404: 14(int) Load 403 - 405: 15(ptr) AccessChain 345(i16v) 264 - 406: 14(int) Load 405 - 408: 14(int) Select 407 406 404 - Store 348(i16) 408 - 409: 14(int) Load 348(i16) - 410: 52(ivec2) CompositeConstruct 409 409 - 411: 14(int) Load 348(i16) - 412: 14(int) SNegate 411 - 413: 52(ivec2) CompositeConstruct 412 412 - 416: 52(ivec2) Select 415 413 410 - Store 345(i16v) 416 - 417: 37(ptr) AccessChain 358(u16v) 284 + 406: 14(int) Select 405 404 402 + Store 346(i16) 406 + 407: 14(int) Load 346(i16) + 408: 52(ivec2) CompositeConstruct 407 407 + 409: 14(int) Load 346(i16) + 410: 14(int) SNegate 409 + 411: 52(ivec2) CompositeConstruct 410 410 + 414: 52(ivec2) Select 413 411 408 + Store 343(i16v) 414 + 415: 37(ptr) AccessChain 356(u16v) 282 + 416: 36(int) Load 415 + 417: 37(ptr) AccessChain 356(u16v) 264 418: 36(int) Load 417 - 419: 37(ptr) AccessChain 358(u16v) 264 - 420: 36(int) Load 419 - 421: 36(int) Select 407 420 418 - Store 360(u16) 421 - 422: 36(int) Load 360(u16) - 423: 193(ivec3) CompositeConstruct 422 422 422 - 424: 36(int) Load 360(u16) - 425: 36(int) SNegate 424 - 426: 193(ivec3) CompositeConstruct 425 425 425 - 429: 193(ivec3) Select 428 426 423 - Store 358(u16v) 429 - 431: 52(ivec2) Load 345(i16v) - 432: 27(int) Bitcast 431 - Store 430(i32) 432 - 437: 434(ivec4) Load 436(i16v4) - 438: 71(int) Bitcast 437 - Store 433(i64) 438 - 441: 57(ivec2) Load 440(u16v2) - 442: 17(int) Bitcast 441 - Store 439(u32) 442 - 448: 445(ivec4) Load 447(u16v4) - 449: 77(int) Bitcast 448 - Store 444(u64) 449 - 450: 27(int) Load 430(i32) - 451: 52(ivec2) Bitcast 450 - Store 345(i16v) 451 - 452: 71(int) Load 433(i64) - 453: 434(ivec4) Bitcast 452 - Store 436(i16v4) 453 - 454: 17(int) Load 439(u32) - 455: 57(ivec2) Bitcast 454 - Store 440(u16v2) 455 - 456: 77(int) Load 444(u64) - 457: 445(ivec4) Bitcast 456 - Store 447(u16v4) 457 - 460: 193(ivec3) Load 358(u16v) - 461: 36(int) Load 360(u16) - 462: 193(ivec3) CompositeConstruct 461 461 461 - 463: 427(bvec3) ULessThan 460 462 - Store 459(bv) 463 - 464: 52(ivec2) Load 345(i16v) - 465: 14(int) Load 348(i16) - 466: 52(ivec2) CompositeConstruct 465 465 - 467: 174(bvec2) SLessThan 464 466 - 468: 427(bvec3) Load 459(bv) - 469: 427(bvec3) VectorShuffle 468 467 3 4 2 - Store 459(bv) 469 - 470: 193(ivec3) Load 358(u16v) - 471: 36(int) Load 360(u16) - 472: 193(ivec3) CompositeConstruct 471 471 471 - 473: 427(bvec3) ULessThanEqual 470 472 - Store 459(bv) 473 - 474: 52(ivec2) Load 345(i16v) - 475: 14(int) Load 348(i16) - 476: 52(ivec2) CompositeConstruct 475 475 - 477: 174(bvec2) SLessThanEqual 474 476 - 478: 427(bvec3) Load 459(bv) - 479: 427(bvec3) VectorShuffle 478 477 3 4 2 - Store 459(bv) 479 - 480: 193(ivec3) Load 358(u16v) - 481: 36(int) Load 360(u16) - 482: 193(ivec3) CompositeConstruct 481 481 481 - 483: 427(bvec3) UGreaterThan 480 482 - Store 459(bv) 483 - 484: 52(ivec2) Load 345(i16v) - 485: 14(int) Load 348(i16) - 486: 52(ivec2) CompositeConstruct 485 485 - 487: 174(bvec2) SGreaterThan 484 486 - 488: 427(bvec3) Load 459(bv) - 489: 427(bvec3) VectorShuffle 488 487 3 4 2 - Store 459(bv) 489 - 490: 193(ivec3) Load 358(u16v) - 491: 36(int) Load 360(u16) - 492: 193(ivec3) CompositeConstruct 491 491 491 - 493: 427(bvec3) UGreaterThanEqual 490 492 - Store 459(bv) 493 - 494: 52(ivec2) Load 345(i16v) - 495: 14(int) Load 348(i16) - 496: 52(ivec2) CompositeConstruct 495 495 - 497: 174(bvec2) SGreaterThanEqual 494 496 - 498: 427(bvec3) Load 459(bv) - 499: 427(bvec3) VectorShuffle 498 497 3 4 2 - Store 459(bv) 499 - 500: 193(ivec3) Load 358(u16v) - 501: 36(int) Load 360(u16) - 502: 193(ivec3) CompositeConstruct 501 501 501 - 503: 427(bvec3) IEqual 500 502 - Store 459(bv) 503 - 504: 52(ivec2) Load 345(i16v) - 505: 14(int) Load 348(i16) - 506: 52(ivec2) CompositeConstruct 505 505 - 507: 174(bvec2) IEqual 504 506 - 508: 427(bvec3) Load 459(bv) - 509: 427(bvec3) VectorShuffle 508 507 3 4 2 - Store 459(bv) 509 - 510: 193(ivec3) Load 358(u16v) - 511: 36(int) Load 360(u16) - 512: 193(ivec3) CompositeConstruct 511 511 511 - 513: 427(bvec3) INotEqual 510 512 - Store 459(bv) 513 - 514: 52(ivec2) Load 345(i16v) - 515: 14(int) Load 348(i16) - 516: 52(ivec2) CompositeConstruct 515 515 - 517: 174(bvec2) INotEqual 514 516 - 518: 427(bvec3) Load 459(bv) - 519: 427(bvec3) VectorShuffle 518 517 3 4 2 - Store 459(bv) 519 + 419: 36(int) Select 405 418 416 + Store 358(u16) 419 + 420: 36(int) Load 358(u16) + 421: 193(ivec3) CompositeConstruct 420 420 420 + 422: 36(int) Load 358(u16) + 423: 36(int) SNegate 422 + 424: 193(ivec3) CompositeConstruct 423 423 423 + 427: 193(ivec3) Select 426 424 421 + Store 356(u16v) 427 + 429: 52(ivec2) Load 343(i16v) + 430: 27(int) Bitcast 429 + Store 428(i32) 430 + 435: 432(ivec4) Load 434(i16v4) + 436: 71(int) Bitcast 435 + Store 431(i64) 436 + 439: 57(ivec2) Load 438(u16v2) + 440: 17(int) Bitcast 439 + Store 437(u32) 440 + 446: 443(ivec4) Load 445(u16v4) + 447: 77(int) Bitcast 446 + Store 442(u64) 447 + 448: 27(int) Load 428(i32) + 449: 52(ivec2) Bitcast 448 + Store 343(i16v) 449 + 450: 71(int) Load 431(i64) + 451: 432(ivec4) Bitcast 450 + Store 434(i16v4) 451 + 452: 17(int) Load 437(u32) + 453: 57(ivec2) Bitcast 452 + Store 438(u16v2) 453 + 454: 77(int) Load 442(u64) + 455: 443(ivec4) Bitcast 454 + Store 445(u16v4) 455 + 458: 193(ivec3) Load 356(u16v) + 459: 36(int) Load 358(u16) + 460: 193(ivec3) CompositeConstruct 459 459 459 + 461: 425(bvec3) ULessThan 458 460 + Store 457(bv) 461 + 462: 52(ivec2) Load 343(i16v) + 463: 14(int) Load 346(i16) + 464: 52(ivec2) CompositeConstruct 463 463 + 465: 174(bvec2) SLessThan 462 464 + 466: 425(bvec3) Load 457(bv) + 467: 425(bvec3) VectorShuffle 466 465 3 4 2 + Store 457(bv) 467 + 468: 193(ivec3) Load 356(u16v) + 469: 36(int) Load 358(u16) + 470: 193(ivec3) CompositeConstruct 469 469 469 + 471: 425(bvec3) ULessThanEqual 468 470 + Store 457(bv) 471 + 472: 52(ivec2) Load 343(i16v) + 473: 14(int) Load 346(i16) + 474: 52(ivec2) CompositeConstruct 473 473 + 475: 174(bvec2) SLessThanEqual 472 474 + 476: 425(bvec3) Load 457(bv) + 477: 425(bvec3) VectorShuffle 476 475 3 4 2 + Store 457(bv) 477 + 478: 193(ivec3) Load 356(u16v) + 479: 36(int) Load 358(u16) + 480: 193(ivec3) CompositeConstruct 479 479 479 + 481: 425(bvec3) UGreaterThan 478 480 + Store 457(bv) 481 + 482: 52(ivec2) Load 343(i16v) + 483: 14(int) Load 346(i16) + 484: 52(ivec2) CompositeConstruct 483 483 + 485: 174(bvec2) SGreaterThan 482 484 + 486: 425(bvec3) Load 457(bv) + 487: 425(bvec3) VectorShuffle 486 485 3 4 2 + Store 457(bv) 487 + 488: 193(ivec3) Load 356(u16v) + 489: 36(int) Load 358(u16) + 490: 193(ivec3) CompositeConstruct 489 489 489 + 491: 425(bvec3) UGreaterThanEqual 488 490 + Store 457(bv) 491 + 492: 52(ivec2) Load 343(i16v) + 493: 14(int) Load 346(i16) + 494: 52(ivec2) CompositeConstruct 493 493 + 495: 174(bvec2) SGreaterThanEqual 492 494 + 496: 425(bvec3) Load 457(bv) + 497: 425(bvec3) VectorShuffle 496 495 3 4 2 + Store 457(bv) 497 + 498: 193(ivec3) Load 356(u16v) + 499: 36(int) Load 358(u16) + 500: 193(ivec3) CompositeConstruct 499 499 499 + 501: 425(bvec3) IEqual 498 500 + Store 457(bv) 501 + 502: 52(ivec2) Load 343(i16v) + 503: 14(int) Load 346(i16) + 504: 52(ivec2) CompositeConstruct 503 503 + 505: 174(bvec2) IEqual 502 504 + 506: 425(bvec3) Load 457(bv) + 507: 425(bvec3) VectorShuffle 506 505 3 4 2 + Store 457(bv) 507 + 508: 193(ivec3) Load 356(u16v) + 509: 36(int) Load 358(u16) + 510: 193(ivec3) CompositeConstruct 509 509 509 + 511: 425(bvec3) INotEqual 508 510 + Store 457(bv) 511 + 512: 52(ivec2) Load 343(i16v) + 513: 14(int) Load 346(i16) + 514: 52(ivec2) CompositeConstruct 513 513 + 515: 174(bvec2) INotEqual 512 514 + 516: 425(bvec3) Load 457(bv) + 517: 425(bvec3) VectorShuffle 516 515 3 4 2 + Store 457(bv) 517 Return FunctionEnd diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag index bcbb24b34..8fda12b3a 100644 --- a/Test/spv.int64.frag +++ b/Test/spv.int64.frag @@ -116,6 +116,8 @@ void operators() i64 = i64 % i; // Shift + u64v = u64v << i; + i64 = i64 >> uv.y; u64v <<= i; i64 >>= uv.y; diff --git a/Test/spv.rankShift.comp b/Test/spv.rankShift.comp new file mode 100644 index 000000000..1761ad1f5 --- /dev/null +++ b/Test/spv.rankShift.comp @@ -0,0 +1,15 @@ +#version 450 +#extension GL_ARB_gpu_shader_int64 : require + +layout(local_size_x = 54) in; + +layout(location=4) uniform int64_t arg0; +layout(location=5) uniform uint arg1; + +void main() +{ + uint64_t result = arg0 << arg1; + result = arg0 >> arg1; + result <<= arg1; + result >>= arg1; +} \ No newline at end of file diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 2415f6a41..83d188e1a 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -744,9 +744,6 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no auto promoteTo = std::make_tuple(EbtNumTypes, EbtNumTypes); - TBasicType type0 = node0->getType().getBasicType(); - TBasicType type1 = node1->getType().getBasicType(); - switch (op) { // // List all the binary ops that can implicitly convert one operand to the other's type; @@ -776,10 +773,10 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no case EOpSequence: // used by ?: - if (type0 == type1) + if (node0->getBasicType() == node1->getBasicType()) return std::make_tuple(node0, node1); - promoteTo = getConversionDestinatonType(type0, type1, op); + promoteTo = getConversionDestinatonType(node0->getBasicType(), node1->getBasicType(), op); if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes) return std::make_tuple(nullptr, nullptr); @@ -794,23 +791,25 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no return std::make_tuple(node0, node1); break; - // Shifts can have mixed types as long as they are integer and of the same rank, - // without converting. + // There are no conversions needed for GLSL; the shift amount just needs to be an + // integer type, as does the base. + // HLSL can promote bools to ints to make this work. case EOpLeftShift: case EOpRightShift: - if (node0->getType() == node1->getType()) - return std::make_tuple(node0, node1); - - if (isTypeInt(type0) && isTypeInt(type1)) { - if (getTypeRank(type0) == getTypeRank(type1)) { + if (source == EShSourceHlsl) { + TBasicType node0BasicType = node0->getBasicType(); + if (node0BasicType == EbtBool) + node0BasicType = EbtInt; + if (node1->getBasicType() == EbtBool) + promoteTo = std::make_tuple(node0BasicType, EbtInt); + else + promoteTo = std::make_tuple(node0BasicType, node1->getBasicType()); + } else { + if (isTypeInt(node0->getBasicType()) && isTypeInt(node1->getBasicType())) return std::make_tuple(node0, node1); - } else { - promoteTo = getConversionDestinatonType(type0, type1, op); - if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes) - return std::make_tuple(nullptr, nullptr); - } - } else - return std::make_tuple(nullptr, nullptr); + else + return std::make_tuple(nullptr, nullptr); + } break; default: @@ -964,35 +963,24 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt if (type.getBasicType() == node->getType().getBasicType()) return node; - if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op)) + if (canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op)) promoteTo = type.getBasicType(); else return nullptr; break; - // Shifts can have mixed types as long as they are integer and of the same rank, - // without converting. - // It's the left operand's type that determines the resulting type, so no issue - // with assign shift ops either. + // For GLSL, there are no conversions needed; the shift amount just needs to be an + // integer type, as do the base/result. + // HLSL can convert the shift from a bool to an int. case EOpLeftShiftAssign: case EOpRightShiftAssign: { - TBasicType type0 = type.getBasicType(); - TBasicType type1 = node->getType().getBasicType(); - - if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) { - promoteTo = type0; - } else { - if (isTypeInt(type0) && isTypeInt(type1)) { - if (getTypeRank(type0) == getTypeRank(type1)) { - return node; - } else { - if (canImplicitlyPromote(type1, type0, op)) - promoteTo = type0; - else - return nullptr; - } - } else + if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) + promoteTo = type.getBasicType(); + else { + if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType())) + return node; + else return nullptr; } break; @@ -1437,9 +1425,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float32) || extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float64); - if(explicitTypesEnabled) - { - + if(explicitTypesEnabled) { // integral promotions if (isIntegralPromotion(from, to)) { return true; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 20ef2d72d..47e27d2f8 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -416,6 +416,7 @@ INSTANTIATE_TEST_CASE_P( "spv.460.comp", "spv.atomic.comp", "spv.glFragColor.frag", + "spv.rankShift.comp", "spv.specConst.vert", "spv.OVR_multiview.vert", })),