diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3d732d46fd5b36e513e220a978010958a0b3d748..632a21752b1e709560bcc0ac9acf4a957ebc09ee 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -7292,18 +7292,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n // An AST node labelled as specialization constant should be a symbol node. // Its initializer should either be a sub tree with constant nodes, or a constant union array. if (auto* sn = node.getAsSymbolNode()) { + spv::Id result; if (auto* sub_tree = sn->getConstSubtree()) { // Traverse the constant constructor sub tree like generating normal run-time instructions. // During the AST traversal, if the node is marked as 'specConstant', SpecConstantOpModeGuard // will set the builder into spec constant op instruction generating mode. sub_tree->traverse(this); - return accessChainLoad(sub_tree->getType()); - } else if (auto* const_union_array = &sn->getConstArray()){ + result = accessChainLoad(sub_tree->getType()); + } else if (auto* const_union_array = &sn->getConstArray()) { int nextConst = 0; - spv::Id id = createSpvConstantFromConstUnionArray(sn->getType(), *const_union_array, nextConst, true); - builder.addName(id, sn->getName().c_str()); - return id; + result = createSpvConstantFromConstUnionArray(sn->getType(), *const_union_array, nextConst, true); } + builder.addName(result, sn->getName().c_str()); + return result; } // Neither a front-end constant node, nor a specialization constant node with constant union array or diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index b9ca3397b1adb22292d94d4d77a8d0b5063ac5eb..37c66390eb7080ed026c1d58c22c9662458d011d 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -114,6 +114,10 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require Name 526 "sf16" Name 527 "sf" Name 528 "sd" + Name 529 "f16_to_f" + Name 531 "f16_to_d" + Name 532 "f_to_f16" + Name 533 "d_to_f16" Decorate 512 ArrayStride 16 Decorate 513 ArrayStride 32 MemberDecorate 514(S) 0 Offset 0 @@ -235,11 +239,11 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require 526(sf16):28(float16_t) SpecConstant 12288 527(sf): 164(float) SpecConstant 1048576000 528(sd):172(float64_t) SpecConstant 0 1071644672 - 529: 164(float) SpecConstantOp 115 526(sf16) + 529(f16_to_f): 164(float) SpecConstantOp 115 526(sf16) 530: 164(float) SpecConstantOp 115 526(sf16) - 531:172(float64_t) SpecConstantOp 115 530 - 532:28(float16_t) SpecConstantOp 115 527(sf) - 533:28(float16_t) SpecConstantOp 115 528(sd) + 531(f16_to_d):172(float64_t) SpecConstantOp 115 530 + 532(f_to_f16):28(float16_t) SpecConstantOp 115 527(sf) + 533(d_to_f16):28(float16_t) SpecConstantOp 115 528(sd) 4(main): 2 Function None 3 5: Label Return diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out index 9ee7d7f9353901c7339af3f1735e228cbbef2c03..1a325ea187632d4d09d200a16a0de8c064fff475 100644 --- a/Test/baseResults/spv.float32.frag.out +++ b/Test/baseResults/spv.float32.frag.out @@ -104,6 +104,10 @@ error: Capability Float16 is not allowed by Vulkan 1.1 specification (or require Name 525 "sf16" Name 526 "sf" Name 527 "sd" + Name 528 "f16_to_f" + Name 530 "f16_to_d" + Name 531 "f_to_f16" + Name 532 "d_to_f16" Decorate 518 ArrayStride 16 Decorate 519 ArrayStride 32 MemberDecorate 520(S) 0 Offset 0 @@ -209,11 +213,11 @@ error: Capability Float16 is not allowed by Vulkan 1.1 specification (or require 525(sf16):172(float16_t) SpecConstant 12288 526(sf): 26(float) SpecConstant 1048576000 527(sd):149(float64_t) SpecConstant 0 1071644672 - 528: 26(float) SpecConstantOp 115 525(sf16) + 528(f16_to_f): 26(float) SpecConstantOp 115 525(sf16) 529: 26(float) SpecConstantOp 115 525(sf16) - 530:149(float64_t) SpecConstantOp 115 529 - 531:172(float16_t) SpecConstantOp 115 526(sf) - 532:172(float16_t) SpecConstantOp 115 527(sd) + 530(f16_to_d):149(float64_t) SpecConstantOp 115 529 + 531(f_to_f16):172(float16_t) SpecConstantOp 115 526(sf) + 532(d_to_f16):172(float16_t) SpecConstantOp 115 527(sd) 4(main): 2 Function None 3 5: Label Return diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out index 3f095c1f797dc000143e7bf3211f14cff6bef6ef..78dca7564896dad94a0ba6c1570dcad5c8c505d1 100644 --- a/Test/baseResults/spv.float64.frag.out +++ b/Test/baseResults/spv.float64.frag.out @@ -103,6 +103,10 @@ error: Capability Float16 is not allowed by Vulkan 1.1 specification (or require Name 515 "sf16" Name 517 "sf" Name 518 "sd" + Name 519 "f16_to_f" + Name 521 "f16_to_d" + Name 522 "f_to_f16" + Name 523 "d_to_f16" Decorate 461(if64v) Flat Decorate 508 ArrayStride 16 Decorate 509 ArrayStride 64 @@ -207,11 +211,11 @@ error: Capability Float16 is not allowed by Vulkan 1.1 specification (or require 516: TypeFloat 32 517(sf): 516(float) SpecConstant 1048576000 518(sd):26(float64_t) SpecConstant 0 1071644672 - 519: 516(float) SpecConstantOp 115 515(sf16) + 519(f16_to_f): 516(float) SpecConstantOp 115 515(sf16) 520: 516(float) SpecConstantOp 115 515(sf16) - 521:26(float64_t) SpecConstantOp 115 520 - 522:162(float16_t) SpecConstantOp 115 517(sf) - 523:162(float16_t) SpecConstantOp 115 518(sd) + 521(f16_to_d):26(float64_t) SpecConstantOp 115 520 + 522(f_to_f16):162(float16_t) SpecConstantOp 115 517(sf) + 523(d_to_f16):162(float16_t) SpecConstantOp 115 518(sd) 4(main): 2 Function None 3 5: Label Return diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out index 526373bcbaffa1707605febb98d6a61605624916..0e3323bfce14ac450aaf6407ee5fcccbf7aaa522 100644 --- a/Test/baseResults/spv.int16.amd.frag.out +++ b/Test/baseResults/spv.int16.amd.frag.out @@ -76,6 +76,28 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require Name 526 "sb" Name 527 "si16" Name 528 "su16" + Name 529 "i16_to_b" + Name 530 "u16_to_b" + Name 531 "b_to_i16" + Name 532 "b_to_u16" + Name 533 "i16_to_i" + Name 535 "u16_to_i" + Name 536 "i_to_i16" + Name 538 "i_to_u16" + Name 540 "i16_to_u" + Name 541 "u16_to_u" + Name 543 "u_to_i16" + Name 544 "u_to_u16" + Name 545 "i16_to_i64" + Name 548 "u16_to_i64" + Name 549 "i64_to_i16" + Name 551 "i64_to_u16" + Name 553 "i16_to_u64" + Name 554 "u16_to_u64" + Name 556 "u64_to_i16" + Name 557 "u64_to_u16" + Name 558 "i16_to_u16" + Name 559 "u16_to_i16" MemberDecorate 25(Uniforms) 0 Offset 0 Decorate 25(Uniforms) Block Decorate 27 DescriptorSet 0 @@ -195,37 +217,37 @@ error: Capability Float16 is not allowed by Vulkan 1.0 specification (or require 526(sb): 125(bool) SpecConstantTrue 527(si16): 17(int16_t) SpecConstant 4294967291 528(su16): 14(int16_t) SpecConstant 4 - 529: 125(bool) SpecConstantOp 171 527(si16) 202 - 530: 125(bool) SpecConstantOp 171 528(su16) 202 - 531: 17(int16_t) SpecConstantOp 169 526(sb) 53 194 - 532: 14(int16_t) SpecConstantOp 169 526(sb) 203 202 - 533: 28(int) SpecConstantOp 114 527(si16) + 529(i16_to_b): 125(bool) SpecConstantOp 171 527(si16) 202 + 530(u16_to_b): 125(bool) SpecConstantOp 171 528(su16) 202 + 531(b_to_i16): 17(int16_t) SpecConstantOp 169 526(sb) 53 194 + 532(b_to_u16): 14(int16_t) SpecConstantOp 169 526(sb) 203 202 + 533(i16_to_i): 28(int) SpecConstantOp 114 527(si16) 534: 18(int) SpecConstantOp 113 528(su16) - 535: 28(int) SpecConstantOp 128 534 128 - 536: 17(int16_t) SpecConstantOp 114 524(si) + 535(u16_to_i): 28(int) SpecConstantOp 128 534 128 + 536(i_to_i16): 17(int16_t) SpecConstantOp 114 524(si) 537: 17(int16_t) SpecConstantOp 114 524(si) - 538: 14(int16_t) SpecConstantOp 128 537 202 + 538(i_to_u16): 14(int16_t) SpecConstantOp 128 537 202 539: 28(int) SpecConstantOp 114 527(si16) - 540: 18(int) SpecConstantOp 128 539 128 - 541: 18(int) SpecConstantOp 113 528(su16) + 540(i16_to_u): 18(int) SpecConstantOp 128 539 128 + 541(u16_to_u): 18(int) SpecConstantOp 113 528(su16) 542: 14(int16_t) SpecConstantOp 113 525(su) - 543: 17(int16_t) SpecConstantOp 128 542 202 - 544: 14(int16_t) SpecConstantOp 113 525(su) - 545:273(int64_t) SpecConstantOp 114 527(si16) + 543(u_to_i16): 17(int16_t) SpecConstantOp 128 542 202 + 544(u_to_u16): 14(int16_t) SpecConstantOp 113 525(su) + 545(i16_to_i64):273(int64_t) SpecConstantOp 114 527(si16) 546:285(int64_t) SpecConstantOp 113 528(su16) 547:285(int64_t) Constant 0 0 - 548:273(int64_t) SpecConstantOp 128 546 547 - 549: 17(int16_t) SpecConstantOp 114 522(si64) + 548(u16_to_i64):273(int64_t) SpecConstantOp 128 546 547 + 549(i64_to_i16): 17(int16_t) SpecConstantOp 114 522(si64) 550: 17(int16_t) SpecConstantOp 114 522(si64) - 551: 14(int16_t) SpecConstantOp 128 550 202 + 551(i64_to_u16): 14(int16_t) SpecConstantOp 128 550 202 552:273(int64_t) SpecConstantOp 114 527(si16) - 553:285(int64_t) SpecConstantOp 128 552 547 - 554:285(int64_t) SpecConstantOp 113 528(su16) + 553(i16_to_u64):285(int64_t) SpecConstantOp 128 552 547 + 554(u16_to_u64):285(int64_t) SpecConstantOp 113 528(su16) 555: 14(int16_t) SpecConstantOp 113 523(su64) - 556: 17(int16_t) SpecConstantOp 128 555 202 - 557: 14(int16_t) SpecConstantOp 113 523(su64) - 558: 14(int16_t) SpecConstantOp 128 527(si16) 202 - 559: 17(int16_t) SpecConstantOp 128 528(su16) 202 + 556(u64_to_i16): 17(int16_t) SpecConstantOp 128 555 202 + 557(u64_to_u16): 14(int16_t) SpecConstantOp 113 523(su64) + 558(i16_to_u16): 14(int16_t) SpecConstantOp 128 527(si16) 202 + 559(u16_to_i16): 17(int16_t) SpecConstantOp 128 528(su16) 202 4(main): 2 Function None 3 5: Label 511: 2 FunctionCall 6(literal() diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index b82cfa3212a6853e1e5d4ab419839f9c5bb23a63..f2c54f161904a6dec32dee079427abcd130d5bd5 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -1,7 +1,11 @@ spv.int64.frag +error: SPIRV-Tools Validation Errors +error: OpDecorate SpecId decoration target <id> '1' is not a scalar specialization constant. + OpDecorate %su64inc SpecId 105 + // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 488 +// Id's are bound by 489 Capability Shader Capability Float64 @@ -55,6 +59,21 @@ spv.int64.frag Name 467 "si" Name 468 "su" Name 469 "sb" + Name 470 "su64inc" + Name 471 "i64_to_b" + Name 472 "u64_to_b" + Name 473 "b_to_i64" + Name 474 "b_to_u64" + Name 475 "i64_to_i" + Name 476 "i_to_i64" + Name 477 "u64_to_u" + Name 478 "u_to_u64" + Name 479 "u64_to_i64" + Name 480 "i64_to_u64" + Name 482 "u64_to_i" + Name 484 "i_to_u64" + Name 486 "i64_to_u" + Name 488 "u_to_i64" MemberDecorate 28(Uniforms) 0 Offset 0 Decorate 28(Uniforms) Block Decorate 30 DescriptorSet 0 @@ -69,6 +88,7 @@ spv.int64.frag Decorate 467(si) SpecId 102 Decorate 468(su) SpecId 103 Decorate 469(sb) SpecId 104 + Decorate 470(su64inc) SpecId 105 2: TypeVoid 3: TypeFunction 2 14: TypeInt 64 0 @@ -157,24 +177,25 @@ spv.int64.frag 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(int64_t) SpecConstantOp 169 469(sb) 61 60 - 473: 14(int64_t) SpecConstantOp 169 469(sb) 70 69 - 474: 31(int) SpecConstantOp 114 465(si64) - 475: 18(int64_t) SpecConstantOp 114 467(si) - 476: 21(int) SpecConstantOp 113 466(su64) - 477: 14(int64_t) SpecConstantOp 113 468(su) - 478: 18(int64_t) SpecConstantOp 128 466(su64) 69 - 479: 14(int64_t) SpecConstantOp 128 465(si64) 69 - 480: 21(int) SpecConstantOp 113 466(su64) - 481: 31(int) SpecConstantOp 128 480 227 - 482: 18(int64_t) SpecConstantOp 114 467(si) - 483: 14(int64_t) SpecConstantOp 128 482 69 - 484: 31(int) SpecConstantOp 114 465(si64) - 485: 21(int) SpecConstantOp 128 484 227 - 486: 14(int64_t) SpecConstantOp 113 468(su) - 487: 18(int64_t) SpecConstantOp 128 486 69 + 470(su64inc): 14(int64_t) SpecConstantOp 128 466(su64) 70 + 471(i64_to_b): 55(bool) SpecConstantOp 171 465(si64) 69 + 472(u64_to_b): 55(bool) SpecConstantOp 171 466(su64) 69 + 473(b_to_i64): 18(int64_t) SpecConstantOp 169 469(sb) 61 60 + 474(b_to_u64): 14(int64_t) SpecConstantOp 169 469(sb) 70 69 + 475(i64_to_i): 31(int) SpecConstantOp 114 465(si64) + 476(i_to_i64): 18(int64_t) SpecConstantOp 114 467(si) + 477(u64_to_u): 21(int) SpecConstantOp 113 466(su64) + 478(u_to_u64): 14(int64_t) SpecConstantOp 113 468(su) + 479(u64_to_i64): 18(int64_t) SpecConstantOp 128 466(su64) 69 + 480(i64_to_u64): 14(int64_t) SpecConstantOp 128 465(si64) 69 + 481: 21(int) SpecConstantOp 113 466(su64) + 482(u64_to_i): 31(int) SpecConstantOp 128 481 227 + 483: 18(int64_t) SpecConstantOp 114 467(si) + 484(i_to_u64): 14(int64_t) SpecConstantOp 128 483 69 + 485: 31(int) SpecConstantOp 114 465(si64) + 486(i64_to_u): 21(int) SpecConstantOp 128 485 227 + 487: 14(int64_t) SpecConstantOp 113 468(su) + 488(u_to_i64): 18(int64_t) SpecConstantOp 128 487 69 4(main): 2 Function None 3 5: Label Store 16(u64Max) 17 diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out index 4bc948b1893226f6d74b9d39a53b0cdbc2f508f4..0f141e38682bd0e7fd8f699c43b92ba06e9ea967 100644 --- a/Test/baseResults/spv.specConstantOperations.vert.out +++ b/Test/baseResults/spv.specConstantOperations.vert.out @@ -18,10 +18,68 @@ spv.specConstantOperations.vert Name 42 "sp_uint" Name 43 "sp_sint" Name 45 "sp_double" + Name 46 "float_from_double" + Name 47 "double_from_float" + Name 49 "bool_from_int" + Name 50 "bool_from_uint" + Name 51 "int_from_bool" + Name 53 "uint_from_bool" + Name 54 "sp_uint_from_sint" + Name 55 "sp_sint_from_uint" + Name 56 "negate_int" + Name 57 "not_int" + Name 58 "sp_int_add_two" + Name 61 "sp_int_add_two_sub_three" + Name 63 "sp_int_add_two_sub_four" + Name 64 "sp_sint_mul_two" + Name 66 "sp_uint_mul_two" + Name 68 "sp_sint_mul_two_div_five" + Name 70 "sp_uint_mul_two_div_five" + Name 71 "sp_sint_rem_four" + Name 73 "sp_uint_rem_four" + Name 75 "sp_sint_mul_three_div_five" + Name 77 "sp_sint_shift_right_arithmetic" + Name 79 "sp_uint_shift_right_arithmetic" + Name 80 "sp_sint_shift_left" + Name 81 "sp_uint_shift_left" + Name 83 "sp_sint_or_256" + Name 85 "sp_uint_xor_512" + Name 86 "sp_int_lt_sp_sint" + Name 87 "sp_uint_equal_sp_uint" + Name 88 "sp_int_gt_sp_sint" + Name 91 "iv" + Name 95 "uv" + Name 98 "bv_from_iv" + Name 99 "bv_from_uv" + Name 102 "iv_from_bv" + Name 104 "uv_from_bv" + Name 105 "uv_from_iv" + Name 106 "iv_from_uv" + Name 107 "not_iv" + Name 108 "negate_iv" + Name 110 "iv_add_two" + Name 113 "iv_add_two_sub_three" + Name 115 "iv_add_two_sub_four" + Name 116 "iv_mul_two" + Name 118 "iv_mul_two_div_five" + Name 119 "iv_rem_four" + Name 121 "iv_shift_right_arithmetic" + Name 122 "iv_shift_left" + Name 125 "iv_or_1024" + Name 128 "uv_xor_2048" + Name 129 "iv_x" + Name 131 "iv_yx" + Name 133 "iv_zyx" + Name 134 "iv_yzxw" Name 135 "a" Name 136 "b" Name 137 "c" Name 142 "ternayArray1" + Name 145 "t1" + Name 146 "t2" + Name 148 "t3" + Name 152 "t4" + Name 161 "v2" Decorate 19(sp_int) SpecId 201 Decorate 40(sp_float) SpecId 200 Decorate 42(sp_uint) SpecId 202 @@ -53,95 +111,95 @@ spv.specConstantOperations.vert 43(sp_sint): 6(int) SpecConstant 4294967286 44: TypeFloat 64 45(sp_double):44(float64_t) SpecConstant 2333366019 1074118410 - 46: 39(float) SpecConstantOp 115 45(sp_double) - 47:44(float64_t) SpecConstantOp 115 40(sp_float) +46(float_from_double): 39(float) SpecConstantOp 115 45(sp_double) +47(double_from_float):44(float64_t) SpecConstantOp 115 40(sp_float) 48: 41(int) Constant 0 - 49: 22(bool) SpecConstantOp 171 19(sp_int) 48 - 50: 22(bool) SpecConstantOp 171 42(sp_uint) 48 - 51: 6(int) SpecConstantOp 169 49 32 12 +49(bool_from_int): 22(bool) SpecConstantOp 171 19(sp_int) 48 +50(bool_from_uint): 22(bool) SpecConstantOp 171 42(sp_uint) 48 +51(int_from_bool): 6(int) SpecConstantOp 169 49(bool_from_int) 32 12 52: 41(int) Constant 1 - 53: 41(int) SpecConstantOp 169 49 52 48 - 54: 41(int) SpecConstantOp 128 43(sp_sint) 48 - 55: 6(int) SpecConstantOp 128 42(sp_uint) 48 - 56: 6(int) SpecConstantOp 126 19(sp_int) - 57: 6(int) SpecConstantOp 200 19(sp_int) - 58: 6(int) SpecConstantOp 128 19(sp_int) 20 +53(uint_from_bool): 41(int) SpecConstantOp 169 49(bool_from_int) 52 48 +54(sp_uint_from_sint): 41(int) SpecConstantOp 128 43(sp_sint) 48 +55(sp_sint_from_uint): 6(int) SpecConstantOp 128 42(sp_uint) 48 + 56(negate_int): 6(int) SpecConstantOp 126 19(sp_int) + 57(not_int): 6(int) SpecConstantOp 200 19(sp_int) +58(sp_int_add_two): 6(int) SpecConstantOp 128 19(sp_int) 20 59: 6(int) SpecConstantOp 128 19(sp_int) 20 60: 6(int) Constant 3 - 61: 6(int) SpecConstantOp 130 59 60 +61(sp_int_add_two_sub_three): 6(int) SpecConstantOp 130 59 60 62: 6(int) Constant 4 - 63: 6(int) SpecConstantOp 130 58 62 - 64: 6(int) SpecConstantOp 132 43(sp_sint) 20 +63(sp_int_add_two_sub_four): 6(int) SpecConstantOp 130 58(sp_int_add_two) 62 +64(sp_sint_mul_two): 6(int) SpecConstantOp 132 43(sp_sint) 20 65: 41(int) Constant 2 - 66: 41(int) SpecConstantOp 132 42(sp_uint) 65 +66(sp_uint_mul_two): 41(int) SpecConstantOp 132 42(sp_uint) 65 67: 6(int) Constant 5 - 68: 6(int) SpecConstantOp 135 64 67 +68(sp_sint_mul_two_div_five): 6(int) SpecConstantOp 135 64(sp_sint_mul_two) 67 69: 41(int) Constant 5 - 70: 41(int) SpecConstantOp 134 66 69 - 71: 6(int) SpecConstantOp 139 43(sp_sint) 62 +70(sp_uint_mul_two_div_five): 41(int) SpecConstantOp 134 66(sp_uint_mul_two) 69 +71(sp_sint_rem_four): 6(int) SpecConstantOp 139 43(sp_sint) 62 72: 41(int) Constant 4 - 73: 41(int) SpecConstantOp 137 42(sp_uint) 72 +73(sp_uint_rem_four): 41(int) SpecConstantOp 137 42(sp_uint) 72 74: 6(int) SpecConstantOp 132 43(sp_sint) 60 - 75: 6(int) SpecConstantOp 135 74 67 +75(sp_sint_mul_three_div_five): 6(int) SpecConstantOp 135 74 67 76: 6(int) Constant 10 - 77: 6(int) SpecConstantOp 195 43(sp_sint) 76 +77(sp_sint_shift_right_arithmetic): 6(int) SpecConstantOp 195 43(sp_sint) 76 78: 6(int) Constant 20 - 79: 41(int) SpecConstantOp 194 42(sp_uint) 78 - 80: 6(int) SpecConstantOp 196 43(sp_sint) 32 - 81: 41(int) SpecConstantOp 196 42(sp_uint) 20 +79(sp_uint_shift_right_arithmetic): 41(int) SpecConstantOp 194 42(sp_uint) 78 +80(sp_sint_shift_left): 6(int) SpecConstantOp 196 43(sp_sint) 32 +81(sp_uint_shift_left): 41(int) SpecConstantOp 196 42(sp_uint) 20 82: 6(int) Constant 256 - 83: 6(int) SpecConstantOp 197 43(sp_sint) 82 +83(sp_sint_or_256): 6(int) SpecConstantOp 197 43(sp_sint) 82 84: 41(int) Constant 512 - 85: 41(int) SpecConstantOp 198 42(sp_uint) 84 - 86: 22(bool) SpecConstantOp 177 19(sp_int) 43(sp_sint) - 87: 22(bool) SpecConstantOp 170 42(sp_uint) 42(sp_uint) - 88: 22(bool) SpecConstantOp 173 19(sp_int) 43(sp_sint) +85(sp_uint_xor_512): 41(int) SpecConstantOp 198 42(sp_uint) 84 +86(sp_int_lt_sp_sint): 22(bool) SpecConstantOp 177 19(sp_int) 43(sp_sint) +87(sp_uint_equal_sp_uint): 22(bool) SpecConstantOp 170 42(sp_uint) 42(sp_uint) +88(sp_int_gt_sp_sint): 22(bool) SpecConstantOp 173 19(sp_int) 43(sp_sint) 89: 6(int) Constant 30 90: TypeVector 6(int) 4 - 91: 90(ivec4) SpecConstantComposite 78 89 19(sp_int) 19(sp_int) + 91(iv): 90(ivec4) SpecConstantComposite 78 89 19(sp_int) 19(sp_int) 92: 41(int) Constant 4294967295 93: 41(int) Constant 4294967294 94: TypeVector 41(int) 4 - 95: 94(ivec4) SpecConstantComposite 42(sp_uint) 42(sp_uint) 92 93 + 95(uv): 94(ivec4) SpecConstantComposite 42(sp_uint) 42(sp_uint) 92 93 96: TypeVector 22(bool) 4 97: 94(ivec4) ConstantComposite 48 48 48 48 - 98: 96(bvec4) SpecConstantOp 171 91 97 - 99: 96(bvec4) SpecConstantOp 171 95 97 + 98(bv_from_iv): 96(bvec4) SpecConstantOp 171 91(iv) 97 + 99(bv_from_uv): 96(bvec4) SpecConstantOp 171 95(uv) 97 100: 90(ivec4) ConstantComposite 12 12 12 12 101: 90(ivec4) ConstantComposite 32 32 32 32 - 102: 90(ivec4) SpecConstantOp 169 98 101 100 + 102(iv_from_bv): 90(ivec4) SpecConstantOp 169 98(bv_from_iv) 101 100 103: 94(ivec4) ConstantComposite 52 52 52 52 - 104: 94(ivec4) SpecConstantOp 169 98 103 97 - 105: 94(ivec4) SpecConstantOp 128 91 97 - 106: 90(ivec4) SpecConstantOp 128 95 97 - 107: 90(ivec4) SpecConstantOp 200 91 - 108: 90(ivec4) SpecConstantOp 126 91 + 104(uv_from_bv): 94(ivec4) SpecConstantOp 169 98(bv_from_iv) 103 97 + 105(uv_from_iv): 94(ivec4) SpecConstantOp 128 91(iv) 97 + 106(iv_from_uv): 90(ivec4) SpecConstantOp 128 95(uv) 97 + 107(not_iv): 90(ivec4) SpecConstantOp 200 91(iv) + 108(negate_iv): 90(ivec4) SpecConstantOp 126 91(iv) 109: 90(ivec4) ConstantComposite 20 20 20 20 - 110: 90(ivec4) SpecConstantOp 128 91 109 - 111: 90(ivec4) SpecConstantOp 128 91 109 + 110(iv_add_two): 90(ivec4) SpecConstantOp 128 91(iv) 109 + 111: 90(ivec4) SpecConstantOp 128 91(iv) 109 112: 90(ivec4) ConstantComposite 60 60 60 60 - 113: 90(ivec4) SpecConstantOp 130 111 112 +113(iv_add_two_sub_three): 90(ivec4) SpecConstantOp 130 111 112 114: 90(ivec4) ConstantComposite 62 62 62 62 - 115: 90(ivec4) SpecConstantOp 130 113 114 - 116: 90(ivec4) SpecConstantOp 132 91 109 +115(iv_add_two_sub_four): 90(ivec4) SpecConstantOp 130 113(iv_add_two_sub_three) 114 + 116(iv_mul_two): 90(ivec4) SpecConstantOp 132 91(iv) 109 117: 90(ivec4) ConstantComposite 67 67 67 67 - 118: 90(ivec4) SpecConstantOp 135 116 117 - 119: 90(ivec4) SpecConstantOp 139 91 114 +118(iv_mul_two_div_five): 90(ivec4) SpecConstantOp 135 116(iv_mul_two) 117 +119(iv_rem_four): 90(ivec4) SpecConstantOp 139 91(iv) 114 120: 90(ivec4) ConstantComposite 76 76 76 76 - 121: 90(ivec4) SpecConstantOp 195 91 120 - 122: 90(ivec4) SpecConstantOp 196 91 109 +121(iv_shift_right_arithmetic): 90(ivec4) SpecConstantOp 195 91(iv) 120 +122(iv_shift_left): 90(ivec4) SpecConstantOp 196 91(iv) 109 123: 6(int) Constant 1024 124: 90(ivec4) ConstantComposite 123 123 123 123 - 125: 90(ivec4) SpecConstantOp 197 91 124 + 125(iv_or_1024): 90(ivec4) SpecConstantOp 197 91(iv) 124 126: 41(int) Constant 2048 127: 94(ivec4) ConstantComposite 126 126 126 126 - 128: 94(ivec4) SpecConstantOp 198 95 127 - 129: 6(int) SpecConstantOp 81 91 0 +128(uv_xor_2048): 94(ivec4) SpecConstantOp 198 95(uv) 127 + 129(iv_x): 6(int) SpecConstantOp 81 91(iv) 0 130: TypeVector 6(int) 2 - 131: 130(ivec2) SpecConstantOp 79 91 91 1(GLSL.std.450) 0 + 131(iv_yx): 130(ivec2) SpecConstantOp 79 91(iv) 91(iv) 1(GLSL.std.450) 0 132: TypeVector 6(int) 3 - 133: 132(ivec3) SpecConstantOp 79 91 91 2 1(GLSL.std.450) 0 - 134: 90(ivec4) SpecConstantOp 79 91 91 1(GLSL.std.450) 2 0 3 + 133(iv_zyx): 132(ivec3) SpecConstantOp 79 91(iv) 91(iv) 2 1(GLSL.std.450) 0 + 134(iv_yzxw): 90(ivec4) SpecConstantOp 79 91(iv) 91(iv) 1(GLSL.std.450) 2 0 3 135(a): 6(int) SpecConstant 4 136(b): 6(int) SpecConstant 6 137(c): 22(bool) SpecConstantTrue @@ -152,14 +210,14 @@ spv.specConstantOperations.vert 142(ternayArray1): 141(ptr) Variable Private 143: 6(int) Constant 13 144: 6(int) Constant 17 - 145: 6(int) SpecConstantOp 169 137(c) 143 144 - 146: 6(int) SpecConstantOp 169 137(c) 135(a) 144 + 145(t1): 6(int) SpecConstantOp 169 137(c) 143 144 + 146(t2): 6(int) SpecConstantOp 169 137(c) 135(a) 144 147: 22(bool) ConstantTrue - 148: 6(int) SpecConstantOp 169 147 135(a) 144 + 148(t3): 6(int) SpecConstantOp 169 147 135(a) 144 149: 22(bool) SpecConstantOp 173 135(a) 136(b) 150: 6(int) SpecConstantOp 128 143 135(a) 151: 6(int) SpecConstantOp 132 144 136(b) - 152: 6(int) SpecConstantOp 169 149 150 151 + 152(t4): 6(int) SpecConstantOp 169 149 150 151 153: 22(bool) SpecConstantOp 168 137(c) 154: TypeVector 39(float) 2 155: 39(float) Constant 1065353216 @@ -168,7 +226,7 @@ spv.specConstantOperations.vert 158: 154(fvec2) ConstantComposite 157 157 159: TypeVector 22(bool) 2 160: 159(bvec2) SpecConstantComposite 153 153 - 161: 154(fvec2) SpecConstantOp 169 160 156 158 + 161(v2): 154(fvec2) SpecConstantOp 169 160 156 158 4(main): 2 Function None 3 5: Label Return diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag index 8fda12b3aa2e7623d2bbf751096f1373a9f47d90..4ec04cd8e19ce923f34ab50811f0729707684af6 100644 --- a/Test/spv.int64.frag +++ b/Test/spv.int64.frag @@ -236,6 +236,7 @@ layout(constant_id = 101) const uint64_t su64 = 20UL; layout(constant_id = 102) const int si = -5; layout(constant_id = 103) const uint su = 4; layout(constant_id = 104) const bool sb = true; +layout(constant_id = 105) const uint64_t su64inc = su64 + 1UL; // bool <-> int64/uint64 const bool i64_to_b = bool(si64);