diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index e5e2169b..00369d21 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1342,19 +1342,17 @@ void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* n bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node) { auto blocks = builder.makeNewLoop(); + builder.createBranch(&blocks.head); if (node->testFirst() && node->getTest()) { - spv::Block& head = builder.makeNewBlock(); - builder.createBranch(&head); - - builder.setBuildPoint(&head); + builder.setBuildPoint(&blocks.head); node->getTest()->traverse(this); spv::Id condition = builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType())); builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone); builder.createConditionalBranch(condition, &blocks.body, &blocks.merge); - breakForLoop.push(true); builder.setBuildPoint(&blocks.body); + breakForLoop.push(true); if (node->getBody()) node->getBody()->traverse(this); builder.createBranch(&blocks.continue_target); @@ -1363,8 +1361,14 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn builder.setBuildPoint(&blocks.continue_target); if (node->getTerminal()) node->getTerminal()->traverse(this); - builder.createBranch(&head); + builder.createBranch(&blocks.head); } else { + // Spec requires back edges to target header blocks, and every header + // block must dominate its merge block. Create an empty header block + // here to ensure these conditions are met even when body contains + // non-trivial control flow. + builder.setBuildPoint(&blocks.head); + builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone); builder.createBranch(&blocks.body); breakForLoop.push(true); @@ -1381,14 +1385,17 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn node->getTest()->traverse(this); spv::Id condition = builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType())); - builder.createLoopMerge(&blocks.merge, &blocks.continue_target, - spv::LoopControlMaskNone); - builder.createConditionalBranch(condition, &blocks.body, &blocks.merge); + builder.createConditionalBranch(condition, &blocks.head, &blocks.merge); } else { - builder.createBranch(&blocks.body); + // TODO: unless there was a break instruction somewhere in the body, + // this is an infinite loop, so we should abort code generation with + // a warning. As it stands now, nothing will jump to the merge + // block, and it may be dropped as unreachable by the SPIR-V dumper. + // That, in turn, will result in a non-existing %ID in the LoopMerge + // above. + builder.createBranch(&blocks.head); } } - builder.setBuildPoint(&blocks.merge); builder.closeLoop(); return false; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index eb8c4d37..f9c4ae6c 100755 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1763,7 +1763,7 @@ Block& Builder::makeNewBlock() Builder::LoopBlocks& Builder::makeNewLoop() { - loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock()}); + loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock(), makeNewBlock()}); return loops.top(); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index a1ed84ca..fa3600b6 100755 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -374,7 +374,7 @@ public: void endSwitch(std::vector& segmentBB); struct LoopBlocks { - Block &body, &merge, &continue_target; + Block &head, &body, &merge, &continue_target; }; // Start a new loop and prepare the builder to generate code for it. Until diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out index 0efe6568..5cccee1d 100755 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -48,26 +48,26 @@ Linked vertex stage: 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 - Branch 13 + Branch 10 10: Label - 25: 6(int) Load 8(i) - 28: 19(fvec4) Load 27(color) - 30: 29(ptr) AccessChain 24(colorOut) 25 - Store 30 28 - Branch 12 - 11: Label + 14: 6(int) Load 8(i) + 17: 16(bool) SLessThan 14 15 + LoopMerge 12 13 None + BranchConditional 17 11 12 + 11: Label + 25: 6(int) Load 8(i) + 28: 19(fvec4) Load 27(color) + 30: 29(ptr) AccessChain 24(colorOut) 25 + Store 30 28 + Branch 13 + 12: Label 35: 29(ptr) AccessChain 24(colorOut) 34 36: 19(fvec4) Load 35 Store 33(gl_Position) 36 Return - 12: Label + 13: Label 31: 6(int) Load 8(i) 32: 6(int) IAdd 31 9 Store 8(i) 32 - Branch 13 - 13: Label - 14: 6(int) Load 8(i) - 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 - FunctionEnd + Branch 10 + FunctionEnd diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out index 694da83a..e38c0f5a 100755 --- a/Test/baseResults/spv.do-simple.vert.out +++ b/Test/baseResults/spv.do-simple.vert.out @@ -1,49 +1,51 @@ -spv.do-simple.vert - -Linked vertex stage: - - -// Module Version 10000 -// Generated by (magic number): 80001 -// Id's are bound by 23 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 21 22 - Source ESSL 300 - Name 4 "main" - Name 8 "i" - Name 21 "gl_VertexID" - Name 22 "gl_InstanceID" - Decorate 21(gl_VertexID) BuiltIn VertexId - Decorate 22(gl_InstanceID) BuiltIn InstanceId - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypePointer Function 6(int) - 9: 6(int) Constant 0 - 14: 6(int) Constant 1 - 17: 6(int) Constant 10 - 18: TypeBool - 20: TypePointer Input 6(int) - 21(gl_VertexID): 20(ptr) Variable Input -22(gl_InstanceID): 20(ptr) Variable Input - 4(main): 2 Function None 3 - 5: Label - 8(i): 7(ptr) Variable Function - Store 8(i) 9 - Branch 10 - 10: Label - 13: 6(int) Load 8(i) - 15: 6(int) IAdd 13 14 - Store 8(i) 15 - Branch 12 - 11: Label - Return - 12: Label - 16: 6(int) Load 8(i) - 19: 18(bool) SLessThan 16 17 - LoopMerge 11 12 None - BranchConditional 19 10 11 - FunctionEnd +spv.do-simple.vert + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 24 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 22 23 + Source ESSL 300 + Name 4 "main" + Name 8 "i" + Name 22 "gl_VertexID" + Name 23 "gl_InstanceID" + Decorate 22(gl_VertexID) BuiltIn VertexId + Decorate 23(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 15: 6(int) Constant 1 + 18: 6(int) Constant 10 + 19: TypeBool + 21: TypePointer Input 6(int) + 22(gl_VertexID): 21(ptr) Variable Input +23(gl_InstanceID): 21(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Branch 10 + 10: Label + LoopMerge 12 13 None + Branch 11 + 11: Label + 14: 6(int) Load 8(i) + 16: 6(int) IAdd 14 15 + Store 8(i) 16 + Branch 13 + 12: Label + Return + 13: Label + 17: 6(int) Load 8(i) + 20: 19(bool) SLessThan 17 18 + BranchConditional 20 10 12 + FunctionEnd diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out index c70c28da..ec4d1009 100755 --- a/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/Test/baseResults/spv.do-while-continue-break.vert.out @@ -5,89 +5,91 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 45 +// Id's are bound by 46 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 43 44 + EntryPoint Vertex 4 "main" 44 45 Source ESSL 300 Name 4 "main" Name 8 "i" - Name 13 "A" - Name 20 "B" - Name 23 "C" - Name 29 "D" - Name 32 "E" - Name 34 "F" - Name 40 "G" - Name 43 "gl_VertexID" - Name 44 "gl_InstanceID" - Decorate 43(gl_VertexID) BuiltIn VertexId - Decorate 44(gl_InstanceID) BuiltIn InstanceId + Name 14 "A" + Name 21 "B" + Name 24 "C" + Name 30 "D" + Name 33 "E" + Name 35 "F" + Name 41 "G" + Name 44 "gl_VertexID" + Name 45 "gl_InstanceID" + Decorate 44(gl_VertexID) BuiltIn VertexId + Decorate 45(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 0 - 15: 6(int) Constant 2 - 16: TypeBool - 21: 6(int) Constant 1 - 25: 6(int) Constant 5 - 30: 6(int) Constant 3 - 33: 6(int) Constant 42 - 35: 6(int) Constant 99 - 38: 6(int) Constant 19 - 41: 6(int) Constant 12 - 42: TypePointer Input 6(int) - 43(gl_VertexID): 42(ptr) Variable Input -44(gl_InstanceID): 42(ptr) Variable Input + 16: 6(int) Constant 2 + 17: TypeBool + 22: 6(int) Constant 1 + 26: 6(int) Constant 5 + 31: 6(int) Constant 3 + 34: 6(int) Constant 42 + 36: 6(int) Constant 99 + 39: 6(int) Constant 19 + 42: 6(int) Constant 12 + 43: TypePointer Input 6(int) + 44(gl_VertexID): 43(ptr) Variable Input +45(gl_InstanceID): 43(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function - 13(A): 7(ptr) Variable Function - 20(B): 7(ptr) Variable Function - 23(C): 7(ptr) Variable Function - 29(D): 7(ptr) Variable Function - 32(E): 7(ptr) Variable Function - 34(F): 7(ptr) Variable Function - 40(G): 7(ptr) Variable Function + 14(A): 7(ptr) Variable Function + 21(B): 7(ptr) Variable Function + 24(C): 7(ptr) Variable Function + 30(D): 7(ptr) Variable Function + 33(E): 7(ptr) Variable Function + 35(F): 7(ptr) Variable Function + 41(G): 7(ptr) Variable Function Store 8(i) 9 Branch 10 10: Label - Store 13(A) 9 - 14: 6(int) Load 8(i) - 17: 16(bool) IEqual 14 15 - SelectionMerge 19 None - BranchConditional 17 18 19 - 11: Label - Store 40(G) 41 - Return + LoopMerge 12 13 None + Branch 11 + 11: Label + Store 14(A) 9 + 15: 6(int) Load 8(i) + 18: 17(bool) IEqual 15 16 + SelectionMerge 20 None + BranchConditional 18 19 20 12: Label - 36: 6(int) Load 8(i) - 37: 6(int) IAdd 36 21 - Store 8(i) 37 - 39: 16(bool) SLessThan 37 38 - LoopMerge 11 12 None - BranchConditional 39 10 11 - 18: Label - Store 20(B) 21 - Branch 12 - 22: Label - Store 23(C) 15 - Branch 19 - 19: Label - 24: 6(int) Load 8(i) - 26: 16(bool) IEqual 24 25 - SelectionMerge 28 None - BranchConditional 26 27 28 - 27: Label - Store 29(D) 30 - Branch 11 - 31: Label - Store 32(E) 33 - Branch 28 - 28: Label - Store 34(F) 35 - Branch 12 - FunctionEnd + Store 41(G) 42 + Return + 13: Label + 37: 6(int) Load 8(i) + 38: 6(int) IAdd 37 22 + Store 8(i) 38 + 40: 17(bool) SLessThan 38 39 + BranchConditional 40 10 12 + 19: Label + Store 21(B) 22 + Branch 13 + 23: Label + Store 24(C) 16 + Branch 20 + 20: Label + 25: 6(int) Load 8(i) + 27: 17(bool) IEqual 25 26 + SelectionMerge 29 None + BranchConditional 27 28 29 + 28: Label + Store 30(D) 31 + Branch 12 + 32: Label + Store 33(E) 34 + Branch 29 + 29: Label + Store 35(F) 36 + Branch 13 + FunctionEnd diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out index 64d05813..5e01fc67 100755 --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -5,7 +5,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 34 +// Id's are bound by 35 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -16,9 +16,9 @@ Linked fragment stage: Name 4 "main" Name 9 "color" Name 11 "BaseColor" - Name 17 "bigColor" - Name 27 "d" - Name 32 "gl_FragColor" + Name 18 "bigColor" + Name 28 "d" + Name 33 "gl_FragColor" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -26,16 +26,16 @@ Linked fragment stage: 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input - 16: TypePointer UniformConstant 7(fvec4) - 17(bigColor): 16(ptr) Variable UniformConstant - 21: TypeInt 32 0 - 22: 21(int) Constant 0 - 23: TypePointer Function 6(float) - 26: TypePointer UniformConstant 6(float) - 27(d): 26(ptr) Variable UniformConstant - 29: TypeBool - 31: TypePointer Output 7(fvec4) -32(gl_FragColor): 31(ptr) Variable Output + 17: TypePointer UniformConstant 7(fvec4) + 18(bigColor): 17(ptr) Variable UniformConstant + 22: TypeInt 32 0 + 23: 22(int) Constant 0 + 24: TypePointer Function 6(float) + 27: TypePointer UniformConstant 6(float) + 28(d): 27(ptr) Variable UniformConstant + 30: TypeBool + 32: TypePointer Output 7(fvec4) +33(gl_FragColor): 32(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function @@ -43,20 +43,22 @@ Linked fragment stage: Store 9(color) 12 Branch 13 13: Label - 18: 7(fvec4) Load 17(bigColor) - 19: 7(fvec4) Load 9(color) - 20: 7(fvec4) FAdd 19 18 - Store 9(color) 20 - Branch 15 + LoopMerge 15 16 None + Branch 14 14: Label - 33: 7(fvec4) Load 9(color) - Store 32(gl_FragColor) 33 - Return + 19: 7(fvec4) Load 18(bigColor) + 20: 7(fvec4) Load 9(color) + 21: 7(fvec4) FAdd 20 19 + Store 9(color) 21 + Branch 16 15: Label - 24: 23(ptr) AccessChain 9(color) 22 - 25: 6(float) Load 24 - 28: 6(float) Load 27(d) - 30: 29(bool) FOrdLessThan 25 28 - LoopMerge 14 15 None - BranchConditional 30 13 14 + 34: 7(fvec4) Load 9(color) + Store 33(gl_FragColor) 34 + Return + 16: Label + 25: 24(ptr) AccessChain 9(color) 23 + 26: 6(float) Load 25 + 29: 6(float) Load 28(d) + 31: 30(bool) FOrdLessThan 26 29 + BranchConditional 31 13 15 FunctionEnd diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out index df2acab4..139d6274 100755 --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -51,46 +51,46 @@ Linked vertex stage: 38(F): 7(ptr) Variable Function 42(G): 7(ptr) Variable Function Store 8(i) 9 - Branch 13 + Branch 10 10: Label - Store 18(A) 19 - 20: 6(int) Load 8(i) - 22: 6(int) SMod 20 21 - 23: 16(bool) IEqual 22 9 - SelectionMerge 25 None - BranchConditional 23 24 25 + 14: 6(int) Load 8(i) + 17: 16(bool) SLessThan 14 15 + LoopMerge 12 13 None + BranchConditional 17 11 12 11: Label - Store 42(G) 43 - Return - 12: Label - 40: 6(int) Load 8(i) - 41: 6(int) IAdd 40 19 - Store 8(i) 41 - Branch 13 - 13: Label - 14: 6(int) Load 8(i) - 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 + Store 18(A) 19 + 20: 6(int) Load 8(i) + 22: 6(int) SMod 20 21 + 23: 16(bool) IEqual 22 9 + SelectionMerge 25 None + BranchConditional 23 24 25 + 12: Label + Store 42(G) 43 + Return + 13: Label + 40: 6(int) Load 8(i) + 41: 6(int) IAdd 40 19 + Store 8(i) 41 + Branch 10 24: Label Store 26(B) 19 - Branch 12 + Branch 13 27: Label Store 28(C) 19 Branch 25 - 25: Label - 29: 6(int) Load 8(i) - 31: 6(int) SMod 29 30 - 32: 16(bool) IEqual 31 9 - SelectionMerge 34 None - BranchConditional 32 33 34 - 33: Label - Store 35(D) 19 - Branch 11 - 36: Label - Store 37(E) 19 - Branch 34 - 34: Label - Store 38(F) 39 + 25: Label + 29: 6(int) Load 8(i) + 31: 6(int) SMod 29 30 + 32: 16(bool) IEqual 31 9 + SelectionMerge 34 None + BranchConditional 32 33 34 + 33: Label + Store 35(D) 19 Branch 12 - FunctionEnd + 36: Label + Store 37(E) 19 + Branch 34 + 34: Label + Store 38(F) 39 + Branch 13 + FunctionEnd diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out index 1645c66a..3db2af64 100644 --- a/Test/baseResults/spv.for-nobody.vert.out +++ b/Test/baseResults/spv.for-nobody.vert.out @@ -1,59 +1,59 @@ -spv.for-nobody.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - - -Linked vertex stage: - - -// Module Version 10000 -// Generated by (magic number): 80001 -// Id's are bound by 27 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 22 25 26 - Source GLSL 450 - Name 4 "main" - Name 8 "i" - Name 22 "r" - Name 25 "gl_VertexID" - Name 26 "gl_InstanceID" - Decorate 22(r) Location 0 - Decorate 25(gl_VertexID) BuiltIn VertexId - Decorate 26(gl_InstanceID) BuiltIn InstanceId - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypePointer Function 6(int) - 9: 6(int) Constant 0 - 15: 6(int) Constant 10 - 16: TypeBool - 19: 6(int) Constant 1 - 21: TypePointer Output 6(int) - 22(r): 21(ptr) Variable Output - 24: TypePointer Input 6(int) - 25(gl_VertexID): 24(ptr) Variable Input -26(gl_InstanceID): 24(ptr) Variable Input - 4(main): 2 Function None 3 - 5: Label - 8(i): 7(ptr) Variable Function - Store 8(i) 9 - Branch 13 - 10: Label - Branch 12 - 11: Label - 23: 6(int) Load 8(i) - Store 22(r) 23 - Return - 12: Label - 18: 6(int) Load 8(i) - 20: 6(int) IAdd 18 19 - Store 8(i) 20 - Branch 13 - 13: Label - 14: 6(int) Load 8(i) - 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 - FunctionEnd +spv.for-nobody.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 27 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 22 25 26 + Source GLSL 450 + Name 4 "main" + Name 8 "i" + Name 22 "r" + Name 25 "gl_VertexID" + Name 26 "gl_InstanceID" + Decorate 22(r) Location 0 + Decorate 25(gl_VertexID) BuiltIn VertexId + Decorate 26(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 15: 6(int) Constant 10 + 16: TypeBool + 19: 6(int) Constant 1 + 21: TypePointer Output 6(int) + 22(r): 21(ptr) Variable Output + 24: TypePointer Input 6(int) + 25(gl_VertexID): 24(ptr) Variable Input +26(gl_InstanceID): 24(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Branch 10 + 10: Label + 14: 6(int) Load 8(i) + 17: 16(bool) SLessThan 14 15 + LoopMerge 12 13 None + BranchConditional 17 11 12 + 11: Label + Branch 13 + 12: Label + 23: 6(int) Load 8(i) + Store 22(r) 23 + Return + 13: Label + 18: 6(int) Load 8(i) + 20: 6(int) IAdd 18 19 + Store 8(i) 20 + Branch 10 + FunctionEnd diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out index e55ef9b6..0b77cb11 100644 --- a/Test/baseResults/spv.for-notest.vert.out +++ b/Test/baseResults/spv.for-notest.vert.out @@ -1,50 +1,53 @@ -spv.for-notest.vert -Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. - - -Linked vertex stage: - - -// Module Version 10000 -// Generated by (magic number): 80001 -// Id's are bound by 22 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 14 20 21 - Source GLSL 450 - Name 4 "main" - Name 8 "i" - Name 14 "r" - Name 20 "gl_VertexID" - Name 21 "gl_InstanceID" - Decorate 14(r) Location 0 - Decorate 20(gl_VertexID) BuiltIn VertexId - Decorate 21(gl_InstanceID) BuiltIn InstanceId - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypePointer Function 6(int) - 9: 6(int) Constant 0 - 13: TypePointer Output 6(int) - 14(r): 13(ptr) Variable Output - 17: 6(int) Constant 1 - 19: TypePointer Input 6(int) - 20(gl_VertexID): 19(ptr) Variable Input -21(gl_InstanceID): 19(ptr) Variable Input - 4(main): 2 Function None 3 - 5: Label - 8(i): 7(ptr) Variable Function - Store 8(i) 9 - Branch 10 - 10: Label - 15: 6(int) Load 8(i) - Store 14(r) 15 - Branch 12 - 12: Label - 16: 6(int) Load 8(i) - 18: 6(int) IAdd 16 17 - Store 8(i) 18 - Branch 10 - FunctionEnd +spv.for-notest.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 23 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 15 21 22 + Source GLSL 450 + Name 4 "main" + Name 8 "i" + Name 15 "r" + Name 21 "gl_VertexID" + Name 22 "gl_InstanceID" + Decorate 15(r) Location 0 + Decorate 21(gl_VertexID) BuiltIn VertexId + Decorate 22(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 14: TypePointer Output 6(int) + 15(r): 14(ptr) Variable Output + 18: 6(int) Constant 1 + 20: TypePointer Input 6(int) + 21(gl_VertexID): 20(ptr) Variable Input +22(gl_InstanceID): 20(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Branch 10 + 10: Label + LoopMerge 12 13 None + Branch 11 + 11: Label + 16: 6(int) Load 8(i) + Store 15(r) 16 + Branch 13 + 13: Label + 17: 6(int) Load 8(i) + 19: 6(int) IAdd 17 18 + Store 8(i) 19 + Branch 10 + FunctionEnd diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out index 3dd4fc36..9f17ac1e 100755 --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -1,55 +1,55 @@ -spv.for-simple.vert - -Linked vertex stage: - - -// Module Version 10000 -// Generated by (magic number): 80001 -// Id's are bound by 26 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 24 25 - Source ESSL 300 - Name 4 "main" - Name 8 "i" - Name 18 "j" - Name 24 "gl_VertexID" - Name 25 "gl_InstanceID" - Decorate 24(gl_VertexID) BuiltIn VertexId - Decorate 25(gl_InstanceID) BuiltIn InstanceId - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypePointer Function 6(int) - 9: 6(int) Constant 0 - 15: 6(int) Constant 10 - 16: TypeBool - 19: 6(int) Constant 12 - 21: 6(int) Constant 1 - 23: TypePointer Input 6(int) - 24(gl_VertexID): 23(ptr) Variable Input -25(gl_InstanceID): 23(ptr) Variable Input - 4(main): 2 Function None 3 - 5: Label - 8(i): 7(ptr) Variable Function - 18(j): 7(ptr) Variable Function - Store 8(i) 9 - Branch 13 - 10: Label - Store 18(j) 19 - Branch 12 - 11: Label - Return - 12: Label - 20: 6(int) Load 8(i) - 22: 6(int) IAdd 20 21 - Store 8(i) 22 - Branch 13 - 13: Label - 14: 6(int) Load 8(i) - 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 - FunctionEnd +spv.for-simple.vert + +Linked vertex stage: + + +// Module Version 10000 +// Generated by (magic number): 80001 +// Id's are bound by 26 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 24 25 + Source ESSL 300 + Name 4 "main" + Name 8 "i" + Name 18 "j" + Name 24 "gl_VertexID" + Name 25 "gl_InstanceID" + Decorate 24(gl_VertexID) BuiltIn VertexId + Decorate 25(gl_InstanceID) BuiltIn InstanceId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 15: 6(int) Constant 10 + 16: TypeBool + 19: 6(int) Constant 12 + 21: 6(int) Constant 1 + 23: TypePointer Input 6(int) + 24(gl_VertexID): 23(ptr) Variable Input +25(gl_InstanceID): 23(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + 18(j): 7(ptr) Variable Function + Store 8(i) 9 + Branch 10 + 10: Label + 14: 6(int) Load 8(i) + 17: 16(bool) SLessThan 14 15 + LoopMerge 12 13 None + BranchConditional 17 11 12 + 11: Label + Store 18(j) 19 + Branch 13 + 12: Label + Return + 13: Label + 20: 6(int) Load 8(i) + 22: 6(int) IAdd 20 21 + Store 8(i) 22 + Branch 10 + FunctionEnd diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index 3e4cb28a..bba5fe0c 100755 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -75,31 +75,36 @@ Linked fragment stage: 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Store 15(i) 16 - Branch 20 + Branch 17 17: Label - 29: 7(fvec4) Load 28(bigColor) - 30: 7(fvec4) Load 9(color) - 31: 7(fvec4) FAdd 30 29 - Store 9(color) 31 - Branch 19 - 18: Label + 21: 13(int) Load 15(i) + 24: 13(int) Load 23(Count) + 26: 25(bool) SLessThan 21 24 + LoopMerge 19 20 None + BranchConditional 26 18 19 + 18: Label + 29: 7(fvec4) Load 28(bigColor) + 30: 7(fvec4) Load 9(color) + 31: 7(fvec4) FAdd 30 29 + Store 9(color) 31 + Branch 20 + 19: Label 37: 7(fvec4) Load 9(color) Store 36(gl_FragColor) 37 Store 39(sum) 40 Store 41(i) 16 - Branch 45 - 19: Label + Branch 42 + 20: Label 32: 13(int) Load 15(i) 34: 13(int) IAdd 32 33 Store 15(i) 34 - Branch 20 - 20: Label - 21: 13(int) Load 15(i) - 24: 13(int) Load 23(Count) - 26: 25(bool) SLessThan 21 24 - LoopMerge 18 19 None - BranchConditional 26 17 18 - 42: Label + Branch 17 + 42: Label + 46: 13(int) Load 41(i) + 48: 25(bool) SLessThan 46 47 + LoopMerge 44 45 None + BranchConditional 48 43 44 + 43: Label 53: 13(int) Load 41(i) 55: 54(ptr) AccessChain 52(v4) 53 56: 49(int) Load 55 @@ -107,98 +112,93 @@ Linked fragment stage: 58: 6(float) Load 39(sum) 59: 6(float) FAdd 58 57 Store 39(sum) 59 - Branch 44 - 43: Label - Store 62(i) 16 - Branch 66 - 44: Label - 60: 13(int) Load 41(i) - 61: 13(int) IAdd 60 33 - Store 41(i) 61 Branch 45 - 45: Label - 46: 13(int) Load 41(i) - 48: 25(bool) SLessThan 46 47 - LoopMerge 43 44 None - BranchConditional 48 42 43 - 63: Label - 70: 13(int) Load 62(i) - 71: 13(int) Load 62(i) - 72: 54(ptr) AccessChain 52(v4) 71 - 73: 49(int) Load 72 - 75: 49(int) IMul 73 74 - 76: 6(float) ConvertUToF 75 - 77: 38(ptr) AccessChain 69(tv4) 70 - Store 77 76 - Branch 65 - 64: Label - 80: 6(float) Load 39(sum) - 81: 7(fvec4) CompositeConstruct 80 80 80 80 - 82: 7(fvec4) Load 69(tv4) - 83: 7(fvec4) FAdd 81 82 - 84: 7(fvec4) Load 36(gl_FragColor) - 85: 7(fvec4) FAdd 84 83 - Store 36(gl_FragColor) 85 - 88: 7(fvec4) Load 11(BaseColor) - 89: 87(fvec3) VectorShuffle 88 88 0 1 2 - 90: 7(fvec4) Load 86(r) - 91: 7(fvec4) VectorShuffle 90 89 4 5 6 3 - Store 86(r) 91 - Store 92(i) 16 - Branch 96 - 65: Label - 78: 13(int) Load 62(i) - 79: 13(int) IAdd 78 33 - Store 62(i) 79 - Branch 66 - 66: Label - 67: 13(int) Load 62(i) - 68: 25(bool) SLessThan 67 47 - LoopMerge 64 65 None - BranchConditional 68 63 64 - 93: Label - 102: 6(float) Load 101(f) - 104: 38(ptr) AccessChain 86(r) 103 - Store 104 102 - Branch 95 - 94: Label - 107: 7(fvec4) Load 86(r) - 108: 87(fvec3) VectorShuffle 107 107 0 1 2 - 109: 7(fvec4) Load 36(gl_FragColor) - 110: 87(fvec3) VectorShuffle 109 109 0 1 2 - 111: 87(fvec3) FAdd 110 108 - 112: 7(fvec4) Load 36(gl_FragColor) - 113: 7(fvec4) VectorShuffle 112 111 4 5 6 3 - Store 36(gl_FragColor) 113 - Store 114(i) 16 - Branch 118 - 95: Label - 105: 13(int) Load 92(i) - 106: 13(int) IAdd 105 33 - Store 92(i) 106 - Branch 96 - 96: Label - 97: 13(int) Load 92(i) - 98: 13(int) Load 23(Count) - 99: 25(bool) SLessThan 97 98 - LoopMerge 94 95 None - BranchConditional 99 93 94 - 115: Label - 122: 6(float) Load 101(f) - 123: 7(fvec4) Load 36(gl_FragColor) - 124: 7(fvec4) VectorTimesScalar 123 122 - Store 36(gl_FragColor) 124 - Branch 117 - 116: Label - Return - 117: Label - 125: 13(int) Load 114(i) - 126: 13(int) IAdd 125 47 - Store 114(i) 126 - Branch 118 - 118: Label - 119: 13(int) Load 114(i) - 121: 25(bool) SLessThan 119 120 - LoopMerge 116 117 None - BranchConditional 121 115 116 - FunctionEnd + 44: Label + Store 62(i) 16 + Branch 63 + 45: Label + 60: 13(int) Load 41(i) + 61: 13(int) IAdd 60 33 + Store 41(i) 61 + Branch 42 + 63: Label + 67: 13(int) Load 62(i) + 68: 25(bool) SLessThan 67 47 + LoopMerge 65 66 None + BranchConditional 68 64 65 + 64: Label + 70: 13(int) Load 62(i) + 71: 13(int) Load 62(i) + 72: 54(ptr) AccessChain 52(v4) 71 + 73: 49(int) Load 72 + 75: 49(int) IMul 73 74 + 76: 6(float) ConvertUToF 75 + 77: 38(ptr) AccessChain 69(tv4) 70 + Store 77 76 + Branch 66 + 65: Label + 80: 6(float) Load 39(sum) + 81: 7(fvec4) CompositeConstruct 80 80 80 80 + 82: 7(fvec4) Load 69(tv4) + 83: 7(fvec4) FAdd 81 82 + 84: 7(fvec4) Load 36(gl_FragColor) + 85: 7(fvec4) FAdd 84 83 + Store 36(gl_FragColor) 85 + 88: 7(fvec4) Load 11(BaseColor) + 89: 87(fvec3) VectorShuffle 88 88 0 1 2 + 90: 7(fvec4) Load 86(r) + 91: 7(fvec4) VectorShuffle 90 89 4 5 6 3 + Store 86(r) 91 + Store 92(i) 16 + Branch 93 + 66: Label + 78: 13(int) Load 62(i) + 79: 13(int) IAdd 78 33 + Store 62(i) 79 + Branch 63 + 93: Label + 97: 13(int) Load 92(i) + 98: 13(int) Load 23(Count) + 99: 25(bool) SLessThan 97 98 + LoopMerge 95 96 None + BranchConditional 99 94 95 + 94: Label + 102: 6(float) Load 101(f) + 104: 38(ptr) AccessChain 86(r) 103 + Store 104 102 + Branch 96 + 95: Label + 107: 7(fvec4) Load 86(r) + 108: 87(fvec3) VectorShuffle 107 107 0 1 2 + 109: 7(fvec4) Load 36(gl_FragColor) + 110: 87(fvec3) VectorShuffle 109 109 0 1 2 + 111: 87(fvec3) FAdd 110 108 + 112: 7(fvec4) Load 36(gl_FragColor) + 113: 7(fvec4) VectorShuffle 112 111 4 5 6 3 + Store 36(gl_FragColor) 113 + Store 114(i) 16 + Branch 115 + 96: Label + 105: 13(int) Load 92(i) + 106: 13(int) IAdd 105 33 + Store 92(i) 106 + Branch 93 + 115: Label + 119: 13(int) Load 114(i) + 121: 25(bool) SLessThan 119 120 + LoopMerge 117 118 None + BranchConditional 121 116 117 + 116: Label + 122: 6(float) Load 101(f) + 123: 7(fvec4) Load 36(gl_FragColor) + 124: 7(fvec4) VectorTimesScalar 123 122 + Store 36(gl_FragColor) 124 + Branch 118 + 117: Label + Return + 118: Label + 125: 13(int) Load 114(i) + 126: 13(int) IAdd 125 47 + Store 114(i) 126 + Branch 115 + FunctionEnd diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index 1f9cbce6..5e71aa2e 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -159,59 +159,59 @@ Linked fragment stage: 74: 30(ptr) AccessChain 70(localArray) 71 Store 74 73 Store 75(i) 16 - Branch 79 + Branch 76 76: Label - 84: 6(int) Load 75(i) - 86: 30(ptr) AccessChain 83(a) 84 - Store 86 85 - Branch 78 - 77: Label + 80: 6(int) Load 75(i) + 82: 23(bool) SLessThan 80 81 + LoopMerge 78 79 None + BranchConditional 82 77 78 + 77: Label + 84: 6(int) Load 75(i) + 86: 30(ptr) AccessChain 83(a) 84 + Store 86 85 + Branch 79 + 78: Label 90: 6(int) Load 89(condition) 91: 23(bool) IEqual 90 28 SelectionMerge 93 None BranchConditional 91 92 93 - 78: Label + 79: Label 87: 6(int) Load 75(i) 88: 6(int) IAdd 87 28 Store 75(i) 88 - Branch 79 - 79: Label - 80: 6(int) Load 75(i) - 82: 23(bool) SLessThan 80 81 - LoopMerge 77 78 None - BranchConditional 82 76 77 - 92: Label - 94: 34 Load 70(localArray) - Store 83(a) 94 - Branch 93 - 93: Label - 98: 9(fvec4) Load 97(color) - 100: 99(ptr) AccessChain 12(locals2) 95 - Store 100 98 - 102: 42(ptr) AccessChain 40(coord) 101 - 103: 7(float) Load 102 - 105: 30(ptr) AccessChain 12(locals2) 95 104 - Store 105 103 - 108: 99(ptr) AccessChain 12(locals2) 95 - 109: 9(fvec4) Load 108 - 110: 30(ptr) AccessChain 36(localFArray) 37 - 111: 7(float) Load 110 - 112: 30(ptr) AccessChain 12(locals2) 27 28 - 113: 7(float) Load 112 - 114: 7(float) FAdd 111 113 - 115: 6(int) Load 68(x) - 116: 30(ptr) AccessChain 70(localArray) 115 - 117: 7(float) Load 116 - 118: 7(float) FAdd 114 117 - 119: 6(int) Load 68(x) - 120: 30(ptr) AccessChain 83(a) 119 - 121: 7(float) Load 120 - 122: 7(float) FAdd 118 121 - 123: 9(fvec4) VectorTimesScalar 109 122 - 128: 125 Load 127(samp2D) - 129: 38(fvec2) Load 40(coord) - 130: 9(fvec4) ImageSampleImplicitLod 128 129 - 131: 9(fvec4) FMul 123 130 - Store 107(gl_FragColor) 131 - Return - FunctionEnd + Branch 76 + 92: Label + 94: 34 Load 70(localArray) + Store 83(a) 94 + Branch 93 + 93: Label + 98: 9(fvec4) Load 97(color) + 100: 99(ptr) AccessChain 12(locals2) 95 + Store 100 98 + 102: 42(ptr) AccessChain 40(coord) 101 + 103: 7(float) Load 102 + 105: 30(ptr) AccessChain 12(locals2) 95 104 + Store 105 103 + 108: 99(ptr) AccessChain 12(locals2) 95 + 109: 9(fvec4) Load 108 + 110: 30(ptr) AccessChain 36(localFArray) 37 + 111: 7(float) Load 110 + 112: 30(ptr) AccessChain 12(locals2) 27 28 + 113: 7(float) Load 112 + 114: 7(float) FAdd 111 113 + 115: 6(int) Load 68(x) + 116: 30(ptr) AccessChain 70(localArray) 115 + 117: 7(float) Load 116 + 118: 7(float) FAdd 114 117 + 119: 6(int) Load 68(x) + 120: 30(ptr) AccessChain 83(a) 119 + 121: 7(float) Load 120 + 122: 7(float) FAdd 118 121 + 123: 9(fvec4) VectorTimesScalar 109 122 + 128: 125 Load 127(samp2D) + 129: 38(fvec2) Load 40(coord) + 130: 9(fvec4) ImageSampleImplicitLod 128 129 + 131: 9(fvec4) FMul 123 130 + Store 107(gl_FragColor) 131 + Return + FunctionEnd diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index d6ec0a99..5a8a7c2f 100755 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 714 +// Id's are bound by 720 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -29,48 +29,48 @@ Linked fragment stage: Name 143 "i" Name 151 "Count" Name 154 "bigColor2" - Name 164 "bigColor3" - Name 172 "i" - Name 187 "i" - Name 222 "i" - Name 244 "i" - Name 268 "i" - Name 295 "bigColor4" - Name 330 "bigColor5" - Name 336 "d5" - Name 352 "d6" - Name 365 "bigColor6" - Name 401 "d7" - Name 431 "bigColor7" - Name 449 "d8" - Name 491 "d9" - Name 522 "d10" - Name 530 "d11" - Name 540 "d12" - Name 565 "bigColor8" - Name 592 "gl_FragColor" - Name 600 "d14" - Name 605 "d15" - Name 624 "d16" - Name 660 "d18" - Name 671 "d17" - Name 697 "d13" - Name 698 "d19" - Name 699 "d20" - Name 700 "d21" - Name 701 "d22" - Name 702 "d23" - Name 703 "d24" - Name 704 "d25" - Name 705 "d26" - Name 706 "d27" - Name 707 "d28" - Name 708 "d29" - Name 709 "d30" - Name 710 "d31" - Name 711 "d32" - Name 712 "d33" - Name 713 "d34" + Name 165 "bigColor3" + Name 173 "i" + Name 188 "i" + Name 223 "i" + Name 245 "i" + Name 269 "i" + Name 297 "bigColor4" + Name 333 "bigColor5" + Name 339 "d5" + Name 355 "d6" + Name 368 "bigColor6" + Name 404 "d7" + Name 435 "bigColor7" + Name 454 "d8" + Name 496 "d9" + Name 527 "d10" + Name 535 "d11" + Name 545 "d12" + Name 570 "bigColor8" + Name 597 "gl_FragColor" + Name 605 "d14" + Name 610 "d15" + Name 629 "d16" + Name 666 "d18" + Name 677 "d17" + Name 703 "d13" + Name 704 "d19" + Name 705 "d20" + Name 706 "d21" + Name 707 "d22" + Name 708 "d23" + Name 709 "d24" + Name 710 "d25" + Name 711 "d26" + Name 712 "d27" + Name 713 "d28" + Name 714 "d29" + Name 715 "d30" + Name 716 "d31" + Name 717 "d32" + Name 718 "d33" + Name 719 "d34" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -109,978 +109,990 @@ Linked fragment stage: 151(Count): 150(ptr) Variable UniformConstant 154(bigColor2): 55(ptr) Variable UniformConstant 159: 141(int) Constant 1 - 164(bigColor3): 55(ptr) Variable UniformConstant - 178: 141(int) Constant 42 - 193: 141(int) Constant 100 - 197: 6(float) Constant 1101004800 - 228: 141(int) Constant 120 - 295(bigColor4): 55(ptr) Variable UniformConstant - 330(bigColor5): 55(ptr) Variable UniformConstant - 336(d5): 51(ptr) Variable UniformConstant - 352(d6): 51(ptr) Variable UniformConstant - 365(bigColor6): 55(ptr) Variable UniformConstant - 401(d7): 51(ptr) Variable UniformConstant - 426: 6(float) Constant 0 - 431(bigColor7): 55(ptr) Variable UniformConstant - 449(d8): 51(ptr) Variable UniformConstant - 466: 6(float) Constant 1073741824 - 491(d9): 51(ptr) Variable UniformConstant - 507: 6(float) Constant 1084227584 - 522(d10): 51(ptr) Variable UniformConstant - 530(d11): 51(ptr) Variable UniformConstant - 540(d12): 51(ptr) Variable UniformConstant - 563: 6(float) Constant 1092616192 - 565(bigColor8): 55(ptr) Variable UniformConstant - 591: TypePointer Output 7(fvec4) -592(gl_FragColor): 591(ptr) Variable Output - 600(d14): 51(ptr) Variable UniformConstant - 605(d15): 51(ptr) Variable UniformConstant - 624(d16): 51(ptr) Variable UniformConstant - 660(d18): 51(ptr) Variable UniformConstant - 671(d17): 51(ptr) Variable UniformConstant - 697(d13): 51(ptr) Variable UniformConstant - 698(d19): 51(ptr) Variable UniformConstant - 699(d20): 51(ptr) Variable UniformConstant - 700(d21): 51(ptr) Variable UniformConstant - 701(d22): 51(ptr) Variable UniformConstant - 702(d23): 51(ptr) Variable UniformConstant - 703(d24): 51(ptr) Variable UniformConstant - 704(d25): 51(ptr) Variable UniformConstant - 705(d26): 51(ptr) Variable UniformConstant - 706(d27): 51(ptr) Variable UniformConstant - 707(d28): 51(ptr) Variable UniformConstant - 708(d29): 51(ptr) Variable UniformConstant - 709(d30): 51(ptr) Variable UniformConstant - 710(d31): 51(ptr) Variable UniformConstant - 711(d32): 51(ptr) Variable UniformConstant - 712(d33): 51(ptr) Variable UniformConstant - 713(d34): 51(ptr) Variable UniformConstant + 165(bigColor3): 55(ptr) Variable UniformConstant + 179: 141(int) Constant 42 + 194: 141(int) Constant 100 + 198: 6(float) Constant 1101004800 + 229: 141(int) Constant 120 + 297(bigColor4): 55(ptr) Variable UniformConstant + 333(bigColor5): 55(ptr) Variable UniformConstant + 339(d5): 51(ptr) Variable UniformConstant + 355(d6): 51(ptr) Variable UniformConstant + 368(bigColor6): 55(ptr) Variable UniformConstant + 404(d7): 51(ptr) Variable UniformConstant + 430: 6(float) Constant 0 + 435(bigColor7): 55(ptr) Variable UniformConstant + 454(d8): 51(ptr) Variable UniformConstant + 471: 6(float) Constant 1073741824 + 496(d9): 51(ptr) Variable UniformConstant + 512: 6(float) Constant 1084227584 + 527(d10): 51(ptr) Variable UniformConstant + 535(d11): 51(ptr) Variable UniformConstant + 545(d12): 51(ptr) Variable UniformConstant + 568: 6(float) Constant 1092616192 + 570(bigColor8): 55(ptr) Variable UniformConstant + 596: TypePointer Output 7(fvec4) +597(gl_FragColor): 596(ptr) Variable Output + 605(d14): 51(ptr) Variable UniformConstant + 610(d15): 51(ptr) Variable UniformConstant + 629(d16): 51(ptr) Variable UniformConstant + 666(d18): 51(ptr) Variable UniformConstant + 677(d17): 51(ptr) Variable UniformConstant + 703(d13): 51(ptr) Variable UniformConstant + 704(d19): 51(ptr) Variable UniformConstant + 705(d20): 51(ptr) Variable UniformConstant + 706(d21): 51(ptr) Variable UniformConstant + 707(d22): 51(ptr) Variable UniformConstant + 708(d23): 51(ptr) Variable UniformConstant + 709(d24): 51(ptr) Variable UniformConstant + 710(d25): 51(ptr) Variable UniformConstant + 711(d26): 51(ptr) Variable UniformConstant + 712(d27): 51(ptr) Variable UniformConstant + 713(d28): 51(ptr) Variable UniformConstant + 714(d29): 51(ptr) Variable UniformConstant + 715(d30): 51(ptr) Variable UniformConstant + 716(d31): 51(ptr) Variable UniformConstant + 717(d32): 51(ptr) Variable UniformConstant + 718(d33): 51(ptr) Variable UniformConstant + 719(d34): 51(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 143(i): 142(ptr) Variable Function - 172(i): 142(ptr) Variable Function - 187(i): 142(ptr) Variable Function - 222(i): 142(ptr) Variable Function - 244(i): 142(ptr) Variable Function - 268(i): 142(ptr) Variable Function + 173(i): 142(ptr) Variable Function + 188(i): 142(ptr) Variable Function + 223(i): 142(ptr) Variable Function + 245(i): 142(ptr) Variable Function + 269(i): 142(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 - Branch 16 + Branch 13 13: Label - 22: 21(ptr) AccessChain 9(color) 20 - 23: 6(float) Load 22 - 25: 17(bool) FOrdLessThan 23 24 - SelectionMerge 27 None - BranchConditional 25 26 27 + LoopMerge 15 16 None + BranchConditional 18 14 15 14: Label - Branch 48 - 15: Label - Branch 16 - 16: Label - LoopMerge 14 15 None - BranchConditional 18 13 14 + 22: 21(ptr) AccessChain 9(color) 20 + 23: 6(float) Load 22 + 25: 17(bool) FOrdLessThan 23 24 + SelectionMerge 27 None + BranchConditional 25 26 27 + 15: Label + Branch 45 + 16: Label + Branch 13 26: Label 29: 7(fvec4) Load 9(color) 30: 7(fvec4) FAdd 29 28 Store 9(color) 30 - Branch 14 - 27: Label - 32: 21(ptr) AccessChain 9(color) 20 - 33: 6(float) Load 32 - 35: 17(bool) FOrdLessThan 33 34 - SelectionMerge 37 None - BranchConditional 35 36 37 - 36: Label - 39: 7(fvec4) Load 9(color) - 40: 7(fvec4) FAdd 39 38 - Store 9(color) 40 - Branch 14 - 37: Label - 42: 7(fvec4) Load 9(color) - 43: 7(fvec4) FAdd 42 28 - Store 9(color) 43 - Branch 14 - 45: Label + Branch 15 + 27: Label + 32: 21(ptr) AccessChain 9(color) 20 + 33: 6(float) Load 32 + 35: 17(bool) FOrdLessThan 33 34 + SelectionMerge 37 None + BranchConditional 35 36 37 + 36: Label + 39: 7(fvec4) Load 9(color) + 40: 7(fvec4) FAdd 39 38 + Store 9(color) 40 + Branch 15 + 37: Label + 42: 7(fvec4) Load 9(color) + 43: 7(fvec4) FAdd 42 28 + Store 9(color) 43 + Branch 15 + 45: Label + 49: 21(ptr) AccessChain 9(color) 20 + 50: 6(float) Load 49 + 53: 6(float) Load 52(d) + 54: 17(bool) FOrdLessThan 50 53 + LoopMerge 47 48 None + BranchConditional 54 46 47 + 46: Label 57: 7(fvec4) Load 56(bigColor) 58: 7(fvec4) Load 9(color) 59: 7(fvec4) FAdd 58 57 Store 9(color) 59 - Branch 47 - 46: Label - Branch 63 - 47: Label Branch 48 - 48: Label - 49: 21(ptr) AccessChain 9(color) 20 - 50: 6(float) Load 49 - 53: 6(float) Load 52(d) - 54: 17(bool) FOrdLessThan 50 53 - LoopMerge 46 47 None - BranchConditional 54 45 46 - 60: Label - 70: 7(fvec4) Load 69(bigColor1_1) - 71: 7(fvec4) Load 9(color) - 72: 7(fvec4) FAdd 71 70 - Store 9(color) 72 - 74: 21(ptr) AccessChain 9(color) 73 - 75: 6(float) Load 74 - 76: 6(float) Load 52(d) - 77: 17(bool) FOrdLessThan 75 76 - SelectionMerge 79 None - BranchConditional 77 78 79 - 61: Label - Branch 87 - 62: Label - Branch 63 - 63: Label - 65: 21(ptr) AccessChain 9(color) 64 - 66: 6(float) Load 65 - 67: 6(float) Load 52(d) - 68: 17(bool) FOrdLessThan 66 67 - LoopMerge 61 62 None - BranchConditional 68 60 61 - 78: Label - Branch 62 - 79: Label - 81: 7(fvec4) Load 69(bigColor1_1) - 82: 7(fvec4) Load 9(color) - 83: 7(fvec4) FAdd 82 81 - Store 9(color) 83 - Branch 62 - 84: Label - 92: 7(fvec4) Load 9(color) - 94: 7(fvec4) CompositeConstruct 93 93 93 93 - 95: 7(fvec4) FAdd 92 94 - Store 9(color) 95 - Branch 86 - 85: Label - Branch 99 - 86: Label - Branch 87 - 87: Label - 88: 21(ptr) AccessChain 9(color) 20 - 89: 6(float) Load 88 - 91: 17(bool) FOrdLessThan 89 90 - LoopMerge 85 86 None - BranchConditional 91 84 85 - 96: Label - 115: 7(fvec4) Load 114(bigColor1_2) - 116: 7(fvec4) Load 9(color) - 117: 7(fvec4) FAdd 116 115 - Store 9(color) 117 - Branch 98 - 97: Label - Branch 121 - 98: Label - Branch 99 - 99: Label - 100: 21(ptr) AccessChain 9(color) 73 - 101: 6(float) Load 100 - 103: 6(float) Load 102(d2) - 104: 17(bool) FOrdLessThan 101 103 - SelectionMerge 106 None - BranchConditional 104 105 106 - 105: Label - 108: 21(ptr) AccessChain 9(color) 107 - 109: 6(float) Load 108 - 111: 6(float) Load 110(d3) - 112: 17(bool) FOrdLessThan 109 111 - Branch 106 - 106: Label - 113: 17(bool) Phi 104 99 112 105 - LoopMerge 97 98 None - BranchConditional 113 96 97 - 118: Label - 127: 7(fvec4) Load 126(bigColor1_3) - 128: 7(fvec4) Load 9(color) - 129: 7(fvec4) FAdd 128 127 - Store 9(color) 129 - 130: 21(ptr) AccessChain 9(color) 107 - 131: 6(float) Load 130 - 133: 6(float) Load 132(d4) - 134: 17(bool) FOrdLessThan 131 133 - SelectionMerge 136 None - BranchConditional 134 135 136 - 119: Label - Store 143(i) 144 - Branch 148 - 120: Label - Branch 121 - 121: Label - 122: 21(ptr) AccessChain 9(color) 64 - 123: 6(float) Load 122 - 124: 6(float) Load 110(d3) - 125: 17(bool) FOrdLessThan 123 124 - LoopMerge 119 120 None - BranchConditional 125 118 119 - 135: Label - Branch 119 - 136: Label - 138: 7(fvec4) Load 126(bigColor1_3) - 139: 7(fvec4) Load 9(color) - 140: 7(fvec4) FAdd 139 138 - Store 9(color) 140 - Branch 120 - 145: Label - 155: 7(fvec4) Load 154(bigColor2) - 156: 7(fvec4) Load 9(color) - 157: 7(fvec4) FAdd 156 155 - Store 9(color) 157 - Branch 147 - 146: Label - Branch 161 - 147: Label - 158: 141(int) Load 143(i) - 160: 141(int) IAdd 158 159 - Store 143(i) 160 - Branch 148 - 148: Label - 149: 141(int) Load 143(i) - 152: 141(int) Load 151(Count) - 153: 17(bool) SLessThan 149 152 - LoopMerge 146 147 None - BranchConditional 153 145 146 - 161: Label - 165: 7(fvec4) Load 164(bigColor3) - 166: 7(fvec4) Load 9(color) - 167: 7(fvec4) FAdd 166 165 - Store 9(color) 167 - Branch 163 - 162: Label - Store 172(i) 144 - Branch 176 - 163: Label - 168: 21(ptr) AccessChain 9(color) 20 - 169: 6(float) Load 168 - 170: 6(float) Load 102(d2) - 171: 17(bool) FOrdLessThan 169 170 - LoopMerge 162 163 None - BranchConditional 171 161 162 - 173: Label - 180: 6(float) Load 110(d3) - 181: 21(ptr) AccessChain 9(color) 64 - 182: 6(float) Load 181 - 183: 6(float) FAdd 182 180 - 184: 21(ptr) AccessChain 9(color) 64 - Store 184 183 - Branch 175 - 174: Label - Store 187(i) 144 - Branch 191 - 175: Label - 185: 141(int) Load 172(i) - 186: 141(int) IAdd 185 159 - Store 172(i) 186 - Branch 176 - 176: Label - 177: 141(int) Load 172(i) - 179: 17(bool) SLessThan 177 178 - LoopMerge 174 175 None - BranchConditional 179 173 174 - 188: Label - 195: 21(ptr) AccessChain 9(color) 64 - 196: 6(float) Load 195 - 198: 17(bool) FOrdLessThan 196 197 - SelectionMerge 200 None - BranchConditional 198 199 204 - 189: Label - Store 222(i) 144 - Branch 226 - 190: Label - 220: 141(int) Load 187(i) - 221: 141(int) IAdd 220 159 - Store 187(i) 221 - Branch 191 - 191: Label - 192: 141(int) Load 187(i) - 194: 17(bool) SLessThan 192 193 - LoopMerge 189 190 None - BranchConditional 194 188 189 - 199: Label - 201: 21(ptr) AccessChain 9(color) 20 - 202: 6(float) Load 201 - 203: 6(float) FAdd 202 93 - Store 201 203 - Branch 200 - 204: Label - 205: 21(ptr) AccessChain 9(color) 107 - 206: 6(float) Load 205 - 207: 6(float) FAdd 206 93 - Store 205 207 - Branch 200 - 200: Label - 208: 21(ptr) AccessChain 9(color) 73 - 209: 6(float) Load 208 - 210: 17(bool) FOrdLessThan 209 197 - SelectionMerge 212 None - BranchConditional 210 211 212 - 211: Label - 213: 21(ptr) AccessChain 9(color) 64 - 214: 6(float) Load 213 - 215: 21(ptr) AccessChain 9(color) 107 - 216: 6(float) Load 215 - 217: 17(bool) FOrdGreaterThan 214 216 - SelectionMerge 219 None - BranchConditional 217 218 219 - 218: Label - Branch 219 - 219: Label - Branch 212 - 212: Label - Branch 190 - 223: Label - 230: 21(ptr) AccessChain 9(color) 64 - 231: 6(float) Load 230 - 232: 17(bool) FOrdLessThan 231 197 - SelectionMerge 234 None - BranchConditional 232 233 238 - 224: Label - Store 244(i) 144 - Branch 248 - 225: Label - 242: 141(int) Load 222(i) - 243: 141(int) IAdd 242 159 - Store 222(i) 243 - Branch 226 - 226: Label - 227: 141(int) Load 222(i) - 229: 17(bool) SLessThan 227 228 - LoopMerge 224 225 None - BranchConditional 229 223 224 - 233: Label - 235: 21(ptr) AccessChain 9(color) 20 - 236: 6(float) Load 235 - 237: 6(float) FAdd 236 93 - Store 235 237 - Branch 234 - 238: Label - 239: 21(ptr) AccessChain 9(color) 107 - 240: 6(float) Load 239 - 241: 6(float) FAdd 240 93 - Store 239 241 - Branch 234 - 234: Label - Branch 225 - 245: Label - 251: 6(float) Load 110(d3) - 252: 21(ptr) AccessChain 9(color) 64 - 253: 6(float) Load 252 - 254: 6(float) FAdd 253 251 - 255: 21(ptr) AccessChain 9(color) 64 - Store 255 254 - 256: 21(ptr) AccessChain 9(color) 20 - 257: 6(float) Load 256 - 258: 6(float) Load 132(d4) - 259: 17(bool) FOrdLessThan 257 258 - SelectionMerge 261 None - BranchConditional 259 260 261 - 246: Label - Store 268(i) 144 - Branch 272 - 247: Label - 266: 141(int) Load 244(i) - 267: 141(int) IAdd 266 159 - Store 244(i) 267 - Branch 248 - 248: Label - 249: 141(int) Load 244(i) - 250: 17(bool) SLessThan 249 178 - LoopMerge 246 247 None - BranchConditional 250 245 246 - 260: Label - Branch 247 - 261: Label - 263: 21(ptr) AccessChain 9(color) 73 - 264: 6(float) Load 263 - 265: 6(float) FAdd 264 93 - Store 263 265 - Branch 247 - 269: Label - 275: 6(float) Load 110(d3) - 276: 21(ptr) AccessChain 9(color) 64 - 277: 6(float) Load 276 - 278: 6(float) FAdd 277 275 - 279: 21(ptr) AccessChain 9(color) 64 - Store 279 278 - 280: 21(ptr) AccessChain 9(color) 20 - 281: 6(float) Load 280 - 282: 6(float) Load 132(d4) - 283: 17(bool) FOrdLessThan 281 282 - SelectionMerge 285 None - BranchConditional 283 284 285 - 270: Label - Branch 292 - 271: Label - 290: 141(int) Load 268(i) - 291: 141(int) IAdd 290 159 - Store 268(i) 291 - Branch 272 - 272: Label - 273: 141(int) Load 268(i) - 274: 17(bool) SLessThan 273 178 - LoopMerge 270 271 None - BranchConditional 274 269 270 - 284: Label - Branch 270 - 285: Label - 287: 21(ptr) AccessChain 9(color) 73 - 288: 6(float) Load 287 - 289: 6(float) FAdd 288 93 - Store 287 289 - Branch 271 - 292: Label - 296: 7(fvec4) Load 295(bigColor4) - 297: 7(fvec4) Load 9(color) - 298: 7(fvec4) FAdd 297 296 - Store 9(color) 298 - 299: 21(ptr) AccessChain 9(color) 20 - 300: 6(float) Load 299 - 301: 6(float) Load 132(d4) - 302: 17(bool) FOrdLessThan 300 301 - SelectionMerge 304 None - BranchConditional 302 303 304 - 293: Label - Branch 327 - 294: Label - 323: 21(ptr) AccessChain 9(color) 64 - 324: 6(float) Load 323 - 325: 6(float) Load 132(d4) - 326: 17(bool) FOrdLessThan 324 325 - LoopMerge 293 294 None - BranchConditional 326 292 293 - 303: Label - Branch 294 - 304: Label - 306: 21(ptr) AccessChain 9(color) 107 - 307: 6(float) Load 306 - 308: 6(float) Load 132(d4) - 309: 17(bool) FOrdLessThan 307 308 - SelectionMerge 311 None - BranchConditional 309 310 317 - 310: Label - 312: 6(float) Load 132(d4) - 313: 21(ptr) AccessChain 9(color) 107 - 314: 6(float) Load 313 - 315: 6(float) FAdd 314 312 - 316: 21(ptr) AccessChain 9(color) 107 - Store 316 315 - Branch 311 - 317: Label - 318: 6(float) Load 132(d4) - 319: 21(ptr) AccessChain 9(color) 20 - 320: 6(float) Load 319 - 321: 6(float) FAdd 320 318 - 322: 21(ptr) AccessChain 9(color) 20 - Store 322 321 - Branch 311 - 311: Label - Branch 294 - 327: Label - 331: 7(fvec4) Load 330(bigColor5) - 332: 7(fvec4) Load 9(color) - 333: 7(fvec4) FAdd 332 331 - Store 9(color) 333 - 334: 21(ptr) AccessChain 9(color) 107 - 335: 6(float) Load 334 - 337: 6(float) Load 336(d5) - 338: 17(bool) FOrdLessThan 335 337 - SelectionMerge 340 None - BranchConditional 338 339 340 - 328: Label - 350: 21(ptr) AccessChain 9(color) 20 - 351: 6(float) Load 350 - 353: 6(float) Load 352(d6) - 354: 17(bool) FOrdLessThan 351 353 - SelectionMerge 356 None - BranchConditional 354 355 369 - 329: Label - 346: 21(ptr) AccessChain 9(color) 20 - 347: 6(float) Load 346 - 348: 6(float) Load 336(d5) - 349: 17(bool) FOrdLessThan 347 348 - LoopMerge 328 329 None - BranchConditional 349 327 328 - 339: Label - 341: 6(float) Load 336(d5) - 342: 21(ptr) AccessChain 9(color) 107 - 343: 6(float) Load 342 - 344: 6(float) FAdd 343 341 - 345: 21(ptr) AccessChain 9(color) 107 - Store 345 344 - Branch 340 - 340: Label - Branch 329 - 355: Label - Branch 360 - 357: Label - 366: 7(fvec4) Load 365(bigColor6) - 367: 7(fvec4) Load 9(color) - 368: 7(fvec4) FAdd 367 366 - Store 9(color) 368 - Branch 359 - 358: Label - Branch 356 - 359: Label - Branch 360 - 360: Label - 361: 21(ptr) AccessChain 9(color) 107 - 362: 6(float) Load 361 - 363: 6(float) Load 352(d6) - 364: 17(bool) FOrdLessThan 362 363 - LoopMerge 358 359 None - BranchConditional 364 357 358 - 369: Label - Branch 373 - 370: Label - 378: 51(ptr) AccessChain 365(bigColor6) 64 - 379: 6(float) Load 378 - 380: 21(ptr) AccessChain 9(color) 64 - 381: 6(float) Load 380 - 382: 6(float) FAdd 381 379 - 383: 21(ptr) AccessChain 9(color) 64 - Store 383 382 - Branch 372 - 371: Label - Branch 356 - 372: Label - Branch 373 - 373: Label - 374: 21(ptr) AccessChain 9(color) 64 - 375: 6(float) Load 374 - 376: 6(float) Load 352(d6) - 377: 17(bool) FOrdLessThan 375 376 - LoopMerge 371 372 None - BranchConditional 377 370 371 - 356: Label - 384: 21(ptr) AccessChain 9(color) 20 - 385: 6(float) Load 384 - 386: 6(float) Load 352(d6) - 387: 17(bool) FOrdLessThan 385 386 - SelectionMerge 389 None - BranchConditional 387 388 407 - 388: Label - Branch 393 - 390: Label - 398: 7(fvec4) Load 365(bigColor6) - 399: 7(fvec4) Load 9(color) - 400: 7(fvec4) FAdd 399 398 - Store 9(color) 400 - 402: 6(float) Load 401(d7) - 403: 17(bool) FOrdLessThan 402 93 - SelectionMerge 405 None - BranchConditional 403 404 405 - 391: Label - Branch 389 - 392: Label - Branch 393 - 393: Label - 394: 21(ptr) AccessChain 9(color) 107 - 395: 6(float) Load 394 - 396: 6(float) Load 352(d6) - 397: 17(bool) FOrdLessThan 395 396 - LoopMerge 391 392 None - BranchConditional 397 390 391 - 404: Label - Branch 391 - 405: Label - Branch 392 - 407: Label - Branch 411 - 408: Label - 416: 51(ptr) AccessChain 365(bigColor6) 64 - 417: 6(float) Load 416 - 418: 21(ptr) AccessChain 9(color) 64 - 419: 6(float) Load 418 - 420: 6(float) FAdd 419 417 - 421: 21(ptr) AccessChain 9(color) 64 - Store 421 420 - Branch 410 - 409: Label - Branch 389 - 410: Label - Branch 411 - 411: Label - 412: 21(ptr) AccessChain 9(color) 64 - 413: 6(float) Load 412 - 414: 6(float) Load 352(d6) - 415: 17(bool) FOrdLessThan 413 414 - LoopMerge 409 410 None - BranchConditional 415 408 409 - 389: Label - Branch 422 - 422: Label - 425: 6(float) Load 401(d7) - 427: 17(bool) FOrdLessThan 425 426 - SelectionMerge 429 None - BranchConditional 427 428 429 - 423: Label - Branch 446 - 424: Label - LoopMerge 423 424 None - BranchConditional 18 422 423 - 428: Label - Branch 423 - 429: Label - 432: 7(fvec4) Load 431(bigColor7) - 433: 7(fvec4) Load 9(color) - 434: 7(fvec4) FAdd 433 432 - Store 9(color) 434 - 435: 6(float) Load 401(d7) - 436: 17(bool) FOrdLessThan 435 93 - SelectionMerge 438 None - BranchConditional 436 437 438 - 437: Label - 439: 21(ptr) AccessChain 9(color) 64 - 440: 6(float) Load 439 - 441: 6(float) FAdd 440 93 - Store 439 441 - Branch 423 - 438: Label - 443: 7(fvec4) Load 11(BaseColor) - 444: 7(fvec4) Load 9(color) - 445: 7(fvec4) FAdd 444 443 - Store 9(color) 445 - Branch 424 - 446: Label - 450: 6(float) Load 449(d8) - 451: 17(bool) FOrdLessThan 450 426 - SelectionMerge 453 None - BranchConditional 451 452 453 - 447: Label - Branch 488 - 448: Label - 481: 21(ptr) AccessChain 9(color) 64 - 482: 6(float) Load 481 - 483: 6(float) Load 449(d8) - 484: 17(bool) FOrdLessThan 482 483 - LoopMerge 447 448 None - BranchConditional 484 446 447 - 452: Label - Branch 447 - 453: Label - 455: 7(fvec4) Load 431(bigColor7) - 456: 7(fvec4) Load 9(color) - 457: 7(fvec4) FAdd 456 455 - Store 9(color) 457 - 458: 6(float) Load 449(d8) - 459: 17(bool) FOrdLessThan 458 93 - SelectionMerge 461 None - BranchConditional 459 460 461 - 460: Label - 462: 21(ptr) AccessChain 9(color) 64 - 463: 6(float) Load 462 - 464: 6(float) FAdd 463 93 - Store 462 464 - 465: 6(float) Load 449(d8) - 467: 17(bool) FOrdLessThan 465 466 - SelectionMerge 469 None - BranchConditional 467 468 473 - 468: Label - 470: 21(ptr) AccessChain 9(color) 107 - 471: 6(float) Load 470 - 472: 6(float) FAdd 471 93 - Store 470 472 - Branch 469 - 473: Label - 474: 21(ptr) AccessChain 9(color) 20 - 475: 6(float) Load 474 - 476: 6(float) FAdd 475 93 - Store 474 476 - Branch 469 - 469: Label - Branch 447 - 461: Label - 478: 7(fvec4) Load 11(BaseColor) - 479: 7(fvec4) Load 9(color) - 480: 7(fvec4) FAdd 479 478 - Store 9(color) 480 - Branch 448 - 485: Label - 494: 6(float) Load 491(d9) - 495: 6(float) Load 449(d8) - 496: 17(bool) FOrdGreaterThan 494 495 - SelectionMerge 498 None - BranchConditional 496 497 498 - 486: Label - Branch 519 - 487: Label - Branch 488 - 488: Label - 489: 21(ptr) AccessChain 9(color) 73 - 490: 6(float) Load 489 - 492: 6(float) Load 491(d9) - 493: 17(bool) FOrdLessThan 490 492 - LoopMerge 486 487 None - BranchConditional 493 485 486 - 497: Label - 499: 21(ptr) AccessChain 9(color) 20 - 500: 6(float) Load 499 - 501: 6(float) Load 401(d7) - 502: 17(bool) FOrdLessThanEqual 500 501 - SelectionMerge 504 None - BranchConditional 502 503 504 - 503: Label - 505: 21(ptr) AccessChain 9(color) 64 - 506: 6(float) Load 505 - 508: 17(bool) FOrdEqual 506 507 - SelectionMerge 510 None - BranchConditional 508 509 514 - 509: Label - 511: 21(ptr) AccessChain 9(color) 73 - 512: 6(float) Load 511 - 513: 6(float) FAdd 512 93 - Store 511 513 - Branch 510 - 514: Label - Branch 486 - 510: Label - Branch 504 - 504: Label - Branch 498 - 498: Label - Branch 487 - 516: Label - 525: 21(ptr) AccessChain 9(color) 107 - 526: 6(float) Load 525 - 527: 6(float) FAdd 526 93 - Store 525 527 - 528: 21(ptr) AccessChain 9(color) 107 - 529: 6(float) Load 528 - 531: 6(float) Load 530(d11) - 532: 17(bool) FOrdLessThan 529 531 - SelectionMerge 534 None - BranchConditional 532 533 534 - 517: Label - Branch 560 - 518: Label - Branch 519 - 519: Label - 520: 21(ptr) AccessChain 9(color) 64 - 521: 6(float) Load 520 - 523: 6(float) Load 522(d10) - 524: 17(bool) FOrdLessThan 521 523 - LoopMerge 517 518 None - BranchConditional 524 516 517 - 533: Label - 535: 21(ptr) AccessChain 9(color) 64 - 536: 6(float) Load 535 - 537: 6(float) FAdd 536 93 - Store 535 537 - 538: 21(ptr) AccessChain 9(color) 73 - 539: 6(float) Load 538 - 541: 6(float) Load 540(d12) - 542: 17(bool) FOrdLessThan 539 541 - SelectionMerge 544 None - BranchConditional 542 543 548 - 543: Label - 545: 21(ptr) AccessChain 9(color) 73 - 546: 6(float) Load 545 - 547: 6(float) FAdd 546 93 - Store 545 547 - Branch 544 - 548: Label - 549: 21(ptr) AccessChain 9(color) 20 - 550: 6(float) Load 549 - 551: 6(float) FAdd 550 93 - Store 549 551 - Branch 544 - 544: Label - Branch 518 - 534: Label - 553: 7(fvec4) Load 9(color) - 554: 7(fvec4) CompositeConstruct 93 93 93 93 - 555: 7(fvec4) FAdd 553 554 - Store 9(color) 555 - Branch 517 - 557: Label - 566: 7(fvec4) Load 565(bigColor8) - 567: 7(fvec4) Load 9(color) - 568: 7(fvec4) FAdd 567 566 - Store 9(color) 568 - 569: 21(ptr) AccessChain 9(color) 64 - 570: 6(float) Load 569 - 571: 6(float) Load 449(d8) - 572: 17(bool) FOrdLessThan 570 571 - SelectionMerge 574 None - BranchConditional 572 573 574 - 558: Label - 588: 7(fvec4) Load 9(color) - 589: 7(fvec4) CompositeConstruct 93 93 93 93 - 590: 7(fvec4) FAdd 588 589 - Store 9(color) 590 - 593: 7(fvec4) Load 9(color) - Store 592(gl_FragColor) 593 - Branch 597 - 559: Label - Branch 560 - 560: Label - 561: 21(ptr) AccessChain 9(color) 20 - 562: 6(float) Load 561 - 564: 17(bool) FOrdLessThan 562 563 - LoopMerge 558 559 None - BranchConditional 564 557 558 - 573: Label - 575: 21(ptr) AccessChain 9(color) 73 - 576: 6(float) Load 575 - 577: 6(float) Load 352(d6) - 578: 17(bool) FOrdLessThan 576 577 - SelectionMerge 580 None - BranchConditional 578 579 580 - 579: Label - Branch 559 - 580: Label - Branch 574 - 574: Label - 582: 51(ptr) AccessChain 565(bigColor8) 20 - 583: 6(float) Load 582 - 584: 21(ptr) AccessChain 9(color) 107 - 585: 6(float) Load 584 - 586: 6(float) FAdd 585 583 - 587: 21(ptr) AccessChain 9(color) 107 - Store 587 586 - Branch 559 - 594: Label - 603: 21(ptr) AccessChain 9(color) 107 - 604: 6(float) Load 603 - 606: 6(float) Load 605(d15) - 607: 17(bool) FOrdLessThan 604 606 - SelectionMerge 609 None - BranchConditional 607 608 611 - 595: Label - 615: 7(fvec4) Load 9(color) - 616: 7(fvec4) CompositeConstruct 93 93 93 93 - 617: 7(fvec4) FAdd 615 616 - Store 9(color) 617 - Branch 621 - 596: Label - Branch 597 - 597: Label - 598: 21(ptr) AccessChain 9(color) 20 - 599: 6(float) Load 598 - 601: 6(float) Load 600(d14) - 602: 17(bool) FOrdLessThan 599 601 - LoopMerge 595 596 None - BranchConditional 602 594 595 - 608: Label - Return - 611: Label - 612: 7(fvec4) Load 9(color) - 613: 7(fvec4) CompositeConstruct 93 93 93 93 - 614: 7(fvec4) FAdd 612 613 - Store 9(color) 614 - Branch 609 - 609: Label - Branch 596 - 618: Label - 627: 21(ptr) AccessChain 9(color) 73 - 628: 6(float) Load 627 - 629: 6(float) FAdd 628 93 - Store 627 629 - Branch 620 - 619: Label - Branch 633 - 620: Label - Branch 621 - 621: Label - 622: 21(ptr) AccessChain 9(color) 73 - 623: 6(float) Load 622 - 625: 6(float) Load 624(d16) - 626: 17(bool) FOrdLessThan 623 625 - LoopMerge 619 620 None - BranchConditional 626 618 619 - 630: Label - 645: 7(fvec4) Load 114(bigColor1_2) - 646: 7(fvec4) Load 9(color) - 647: 7(fvec4) FAdd 646 645 - Store 9(color) 647 - 648: 21(ptr) AccessChain 9(color) 64 - 649: 6(float) Load 648 - 650: 6(float) Load 110(d3) - 651: 17(bool) FOrdLessThan 649 650 - SelectionMerge 653 None - BranchConditional 651 652 653 - 631: Label - Branch 655 - 632: Label - Branch 633 - 633: Label - 634: 21(ptr) AccessChain 9(color) 73 - 635: 6(float) Load 634 - 636: 6(float) Load 102(d2) - 637: 17(bool) FOrdLessThan 635 636 - SelectionMerge 639 None - BranchConditional 637 638 639 - 638: Label - 640: 21(ptr) AccessChain 9(color) 107 - 641: 6(float) Load 640 - 642: 6(float) Load 110(d3) - 643: 17(bool) FOrdLessThan 641 642 - Branch 639 - 639: Label - 644: 17(bool) Phi 637 633 643 638 - LoopMerge 631 632 None - BranchConditional 644 630 631 - 652: Label - Return - 653: Label - Branch 632 - 655: Label - 658: 21(ptr) AccessChain 9(color) 107 - 659: 6(float) Load 658 - 661: 6(float) Load 660(d18) - 662: 17(bool) FOrdLessThan 659 661 - SelectionMerge 664 None - BranchConditional 662 663 664 - 656: Label - Branch 677 - 657: Label - 669: 21(ptr) AccessChain 9(color) 20 - 670: 6(float) Load 669 - 672: 6(float) Load 671(d17) - 673: 17(bool) FOrdLessThan 670 672 - LoopMerge 656 657 None - BranchConditional 673 655 656 - 663: Label - Return - 664: Label - 666: 7(fvec4) Load 9(color) - 667: 7(fvec4) CompositeConstruct 93 93 93 93 - 668: 7(fvec4) FAdd 666 667 - Store 9(color) 668 - Branch 657 - 674: Label - 682: 21(ptr) AccessChain 9(color) 73 - 683: 6(float) Load 682 - 684: 6(float) Load 624(d16) - 685: 17(bool) FOrdLessThan 683 684 - SelectionMerge 687 None - BranchConditional 685 686 689 - 675: Label - 693: 7(fvec4) Load 9(color) - 694: 7(fvec4) CompositeConstruct 93 93 93 93 - 695: 7(fvec4) FAdd 693 694 - Store 9(color) 695 - 696: 7(fvec4) Load 9(color) - Store 592(gl_FragColor) 696 - Return - 676: Label - Branch 677 - 677: Label - 678: 21(ptr) AccessChain 9(color) 107 - 679: 6(float) Load 678 - 680: 6(float) Load 624(d16) - 681: 17(bool) FOrdLessThan 679 680 - LoopMerge 675 676 None - BranchConditional 681 674 675 - 686: Label - Kill - 689: Label - 690: 7(fvec4) Load 9(color) - 691: 7(fvec4) CompositeConstruct 93 93 93 93 - 692: 7(fvec4) FAdd 690 691 - Store 9(color) 692 - Branch 687 - 687: Label - Branch 676 - FunctionEnd + 47: Label + Branch 60 + 48: Label + Branch 45 + 60: Label + 65: 21(ptr) AccessChain 9(color) 64 + 66: 6(float) Load 65 + 67: 6(float) Load 52(d) + 68: 17(bool) FOrdLessThan 66 67 + LoopMerge 62 63 None + BranchConditional 68 61 62 + 61: Label + 70: 7(fvec4) Load 69(bigColor1_1) + 71: 7(fvec4) Load 9(color) + 72: 7(fvec4) FAdd 71 70 + Store 9(color) 72 + 74: 21(ptr) AccessChain 9(color) 73 + 75: 6(float) Load 74 + 76: 6(float) Load 52(d) + 77: 17(bool) FOrdLessThan 75 76 + SelectionMerge 79 None + BranchConditional 77 78 79 + 62: Label + Branch 84 + 63: Label + Branch 60 + 78: Label + Branch 63 + 79: Label + 81: 7(fvec4) Load 69(bigColor1_1) + 82: 7(fvec4) Load 9(color) + 83: 7(fvec4) FAdd 82 81 + Store 9(color) 83 + Branch 63 + 84: Label + 88: 21(ptr) AccessChain 9(color) 20 + 89: 6(float) Load 88 + 91: 17(bool) FOrdLessThan 89 90 + LoopMerge 86 87 None + BranchConditional 91 85 86 + 85: Label + 92: 7(fvec4) Load 9(color) + 94: 7(fvec4) CompositeConstruct 93 93 93 93 + 95: 7(fvec4) FAdd 92 94 + Store 9(color) 95 + Branch 87 + 86: Label + Branch 96 + 87: Label + Branch 84 + 96: Label + 100: 21(ptr) AccessChain 9(color) 73 + 101: 6(float) Load 100 + 103: 6(float) Load 102(d2) + 104: 17(bool) FOrdLessThan 101 103 + SelectionMerge 106 None + BranchConditional 104 105 106 + 97: Label + 115: 7(fvec4) Load 114(bigColor1_2) + 116: 7(fvec4) Load 9(color) + 117: 7(fvec4) FAdd 116 115 + Store 9(color) 117 + Branch 99 + 98: Label + Branch 118 + 99: Label + Branch 96 + 105: Label + 108: 21(ptr) AccessChain 9(color) 107 + 109: 6(float) Load 108 + 111: 6(float) Load 110(d3) + 112: 17(bool) FOrdLessThan 109 111 + Branch 106 + 106: Label + 113: 17(bool) Phi 104 96 112 105 + LoopMerge 98 99 None + BranchConditional 113 97 98 + 118: Label + 122: 21(ptr) AccessChain 9(color) 64 + 123: 6(float) Load 122 + 124: 6(float) Load 110(d3) + 125: 17(bool) FOrdLessThan 123 124 + LoopMerge 120 121 None + BranchConditional 125 119 120 + 119: Label + 127: 7(fvec4) Load 126(bigColor1_3) + 128: 7(fvec4) Load 9(color) + 129: 7(fvec4) FAdd 128 127 + Store 9(color) 129 + 130: 21(ptr) AccessChain 9(color) 107 + 131: 6(float) Load 130 + 133: 6(float) Load 132(d4) + 134: 17(bool) FOrdLessThan 131 133 + SelectionMerge 136 None + BranchConditional 134 135 136 + 120: Label + Store 143(i) 144 + Branch 145 + 121: Label + Branch 118 + 135: Label + Branch 120 + 136: Label + 138: 7(fvec4) Load 126(bigColor1_3) + 139: 7(fvec4) Load 9(color) + 140: 7(fvec4) FAdd 139 138 + Store 9(color) 140 + Branch 121 + 145: Label + 149: 141(int) Load 143(i) + 152: 141(int) Load 151(Count) + 153: 17(bool) SLessThan 149 152 + LoopMerge 147 148 None + BranchConditional 153 146 147 + 146: Label + 155: 7(fvec4) Load 154(bigColor2) + 156: 7(fvec4) Load 9(color) + 157: 7(fvec4) FAdd 156 155 + Store 9(color) 157 + Branch 148 + 147: Label + Branch 161 + 148: Label + 158: 141(int) Load 143(i) + 160: 141(int) IAdd 158 159 + Store 143(i) 160 + Branch 145 + 161: Label + LoopMerge 163 164 None + Branch 162 + 162: Label + 166: 7(fvec4) Load 165(bigColor3) + 167: 7(fvec4) Load 9(color) + 168: 7(fvec4) FAdd 167 166 + Store 9(color) 168 + Branch 164 + 163: Label + Store 173(i) 144 + Branch 174 + 164: Label + 169: 21(ptr) AccessChain 9(color) 20 + 170: 6(float) Load 169 + 171: 6(float) Load 102(d2) + 172: 17(bool) FOrdLessThan 170 171 + BranchConditional 172 161 163 + 174: Label + 178: 141(int) Load 173(i) + 180: 17(bool) SLessThan 178 179 + LoopMerge 176 177 None + BranchConditional 180 175 176 + 175: Label + 181: 6(float) Load 110(d3) + 182: 21(ptr) AccessChain 9(color) 64 + 183: 6(float) Load 182 + 184: 6(float) FAdd 183 181 + 185: 21(ptr) AccessChain 9(color) 64 + Store 185 184 + Branch 177 + 176: Label + Store 188(i) 144 + Branch 189 + 177: Label + 186: 141(int) Load 173(i) + 187: 141(int) IAdd 186 159 + Store 173(i) 187 + Branch 174 + 189: Label + 193: 141(int) Load 188(i) + 195: 17(bool) SLessThan 193 194 + LoopMerge 191 192 None + BranchConditional 195 190 191 + 190: Label + 196: 21(ptr) AccessChain 9(color) 64 + 197: 6(float) Load 196 + 199: 17(bool) FOrdLessThan 197 198 + SelectionMerge 201 None + BranchConditional 199 200 205 + 191: Label + Store 223(i) 144 + Branch 224 + 192: Label + 221: 141(int) Load 188(i) + 222: 141(int) IAdd 221 159 + Store 188(i) 222 + Branch 189 + 200: Label + 202: 21(ptr) AccessChain 9(color) 20 + 203: 6(float) Load 202 + 204: 6(float) FAdd 203 93 + Store 202 204 + Branch 201 + 205: Label + 206: 21(ptr) AccessChain 9(color) 107 + 207: 6(float) Load 206 + 208: 6(float) FAdd 207 93 + Store 206 208 + Branch 201 + 201: Label + 209: 21(ptr) AccessChain 9(color) 73 + 210: 6(float) Load 209 + 211: 17(bool) FOrdLessThan 210 198 + SelectionMerge 213 None + BranchConditional 211 212 213 + 212: Label + 214: 21(ptr) AccessChain 9(color) 64 + 215: 6(float) Load 214 + 216: 21(ptr) AccessChain 9(color) 107 + 217: 6(float) Load 216 + 218: 17(bool) FOrdGreaterThan 215 217 + SelectionMerge 220 None + BranchConditional 218 219 220 + 219: Label + Branch 220 + 220: Label + Branch 213 + 213: Label + Branch 192 + 224: Label + 228: 141(int) Load 223(i) + 230: 17(bool) SLessThan 228 229 + LoopMerge 226 227 None + BranchConditional 230 225 226 + 225: Label + 231: 21(ptr) AccessChain 9(color) 64 + 232: 6(float) Load 231 + 233: 17(bool) FOrdLessThan 232 198 + SelectionMerge 235 None + BranchConditional 233 234 239 + 226: Label + Store 245(i) 144 + Branch 246 + 227: Label + 243: 141(int) Load 223(i) + 244: 141(int) IAdd 243 159 + Store 223(i) 244 + Branch 224 + 234: Label + 236: 21(ptr) AccessChain 9(color) 20 + 237: 6(float) Load 236 + 238: 6(float) FAdd 237 93 + Store 236 238 + Branch 235 + 239: Label + 240: 21(ptr) AccessChain 9(color) 107 + 241: 6(float) Load 240 + 242: 6(float) FAdd 241 93 + Store 240 242 + Branch 235 + 235: Label + Branch 227 + 246: Label + 250: 141(int) Load 245(i) + 251: 17(bool) SLessThan 250 179 + LoopMerge 248 249 None + BranchConditional 251 247 248 + 247: Label + 252: 6(float) Load 110(d3) + 253: 21(ptr) AccessChain 9(color) 64 + 254: 6(float) Load 253 + 255: 6(float) FAdd 254 252 + 256: 21(ptr) AccessChain 9(color) 64 + Store 256 255 + 257: 21(ptr) AccessChain 9(color) 20 + 258: 6(float) Load 257 + 259: 6(float) Load 132(d4) + 260: 17(bool) FOrdLessThan 258 259 + SelectionMerge 262 None + BranchConditional 260 261 262 + 248: Label + Store 269(i) 144 + Branch 270 + 249: Label + 267: 141(int) Load 245(i) + 268: 141(int) IAdd 267 159 + Store 245(i) 268 + Branch 246 + 261: Label + Branch 249 + 262: Label + 264: 21(ptr) AccessChain 9(color) 73 + 265: 6(float) Load 264 + 266: 6(float) FAdd 265 93 + Store 264 266 + Branch 249 + 270: Label + 274: 141(int) Load 269(i) + 275: 17(bool) SLessThan 274 179 + LoopMerge 272 273 None + BranchConditional 275 271 272 + 271: Label + 276: 6(float) Load 110(d3) + 277: 21(ptr) AccessChain 9(color) 64 + 278: 6(float) Load 277 + 279: 6(float) FAdd 278 276 + 280: 21(ptr) AccessChain 9(color) 64 + Store 280 279 + 281: 21(ptr) AccessChain 9(color) 20 + 282: 6(float) Load 281 + 283: 6(float) Load 132(d4) + 284: 17(bool) FOrdLessThan 282 283 + SelectionMerge 286 None + BranchConditional 284 285 286 + 272: Label + Branch 293 + 273: Label + 291: 141(int) Load 269(i) + 292: 141(int) IAdd 291 159 + Store 269(i) 292 + Branch 270 + 285: Label + Branch 272 + 286: Label + 288: 21(ptr) AccessChain 9(color) 73 + 289: 6(float) Load 288 + 290: 6(float) FAdd 289 93 + Store 288 290 + Branch 273 + 293: Label + LoopMerge 295 296 None + Branch 294 + 294: Label + 298: 7(fvec4) Load 297(bigColor4) + 299: 7(fvec4) Load 9(color) + 300: 7(fvec4) FAdd 299 298 + Store 9(color) 300 + 301: 21(ptr) AccessChain 9(color) 20 + 302: 6(float) Load 301 + 303: 6(float) Load 132(d4) + 304: 17(bool) FOrdLessThan 302 303 + SelectionMerge 306 None + BranchConditional 304 305 306 + 295: Label + Branch 329 + 296: Label + 325: 21(ptr) AccessChain 9(color) 64 + 326: 6(float) Load 325 + 327: 6(float) Load 132(d4) + 328: 17(bool) FOrdLessThan 326 327 + BranchConditional 328 293 295 + 305: Label + Branch 296 + 306: Label + 308: 21(ptr) AccessChain 9(color) 107 + 309: 6(float) Load 308 + 310: 6(float) Load 132(d4) + 311: 17(bool) FOrdLessThan 309 310 + SelectionMerge 313 None + BranchConditional 311 312 319 + 312: Label + 314: 6(float) Load 132(d4) + 315: 21(ptr) AccessChain 9(color) 107 + 316: 6(float) Load 315 + 317: 6(float) FAdd 316 314 + 318: 21(ptr) AccessChain 9(color) 107 + Store 318 317 + Branch 313 + 319: Label + 320: 6(float) Load 132(d4) + 321: 21(ptr) AccessChain 9(color) 20 + 322: 6(float) Load 321 + 323: 6(float) FAdd 322 320 + 324: 21(ptr) AccessChain 9(color) 20 + Store 324 323 + Branch 313 + 313: Label + Branch 296 + 329: Label + LoopMerge 331 332 None + Branch 330 + 330: Label + 334: 7(fvec4) Load 333(bigColor5) + 335: 7(fvec4) Load 9(color) + 336: 7(fvec4) FAdd 335 334 + Store 9(color) 336 + 337: 21(ptr) AccessChain 9(color) 107 + 338: 6(float) Load 337 + 340: 6(float) Load 339(d5) + 341: 17(bool) FOrdLessThan 338 340 + SelectionMerge 343 None + BranchConditional 341 342 343 + 331: Label + 353: 21(ptr) AccessChain 9(color) 20 + 354: 6(float) Load 353 + 356: 6(float) Load 355(d6) + 357: 17(bool) FOrdLessThan 354 356 + SelectionMerge 359 None + BranchConditional 357 358 372 + 332: Label + 349: 21(ptr) AccessChain 9(color) 20 + 350: 6(float) Load 349 + 351: 6(float) Load 339(d5) + 352: 17(bool) FOrdLessThan 350 351 + BranchConditional 352 329 331 + 342: Label + 344: 6(float) Load 339(d5) + 345: 21(ptr) AccessChain 9(color) 107 + 346: 6(float) Load 345 + 347: 6(float) FAdd 346 344 + 348: 21(ptr) AccessChain 9(color) 107 + Store 348 347 + Branch 343 + 343: Label + Branch 332 + 358: Label + Branch 360 + 360: Label + 364: 21(ptr) AccessChain 9(color) 107 + 365: 6(float) Load 364 + 366: 6(float) Load 355(d6) + 367: 17(bool) FOrdLessThan 365 366 + LoopMerge 362 363 None + BranchConditional 367 361 362 + 361: Label + 369: 7(fvec4) Load 368(bigColor6) + 370: 7(fvec4) Load 9(color) + 371: 7(fvec4) FAdd 370 369 + Store 9(color) 371 + Branch 363 + 362: Label + Branch 359 + 363: Label + Branch 360 + 372: Label + Branch 373 + 373: Label + 377: 21(ptr) AccessChain 9(color) 64 + 378: 6(float) Load 377 + 379: 6(float) Load 355(d6) + 380: 17(bool) FOrdLessThan 378 379 + LoopMerge 375 376 None + BranchConditional 380 374 375 + 374: Label + 381: 51(ptr) AccessChain 368(bigColor6) 64 + 382: 6(float) Load 381 + 383: 21(ptr) AccessChain 9(color) 64 + 384: 6(float) Load 383 + 385: 6(float) FAdd 384 382 + 386: 21(ptr) AccessChain 9(color) 64 + Store 386 385 + Branch 376 + 375: Label + Branch 359 + 376: Label + Branch 373 + 359: Label + 387: 21(ptr) AccessChain 9(color) 20 + 388: 6(float) Load 387 + 389: 6(float) Load 355(d6) + 390: 17(bool) FOrdLessThan 388 389 + SelectionMerge 392 None + BranchConditional 390 391 410 + 391: Label + Branch 393 + 393: Label + 397: 21(ptr) AccessChain 9(color) 107 + 398: 6(float) Load 397 + 399: 6(float) Load 355(d6) + 400: 17(bool) FOrdLessThan 398 399 + LoopMerge 395 396 None + BranchConditional 400 394 395 + 394: Label + 401: 7(fvec4) Load 368(bigColor6) + 402: 7(fvec4) Load 9(color) + 403: 7(fvec4) FAdd 402 401 + Store 9(color) 403 + 405: 6(float) Load 404(d7) + 406: 17(bool) FOrdLessThan 405 93 + SelectionMerge 408 None + BranchConditional 406 407 408 + 395: Label + Branch 392 + 396: Label + Branch 393 + 407: Label + Branch 395 + 408: Label + Branch 396 + 410: Label + Branch 411 + 411: Label + 415: 21(ptr) AccessChain 9(color) 64 + 416: 6(float) Load 415 + 417: 6(float) Load 355(d6) + 418: 17(bool) FOrdLessThan 416 417 + LoopMerge 413 414 None + BranchConditional 418 412 413 + 412: Label + 419: 51(ptr) AccessChain 368(bigColor6) 64 + 420: 6(float) Load 419 + 421: 21(ptr) AccessChain 9(color) 64 + 422: 6(float) Load 421 + 423: 6(float) FAdd 422 420 + 424: 21(ptr) AccessChain 9(color) 64 + Store 424 423 + Branch 414 + 413: Label + Branch 392 + 414: Label + Branch 411 + 392: Label + Branch 425 + 425: Label + LoopMerge 427 428 None + Branch 426 + 426: Label + 429: 6(float) Load 404(d7) + 431: 17(bool) FOrdLessThan 429 430 + SelectionMerge 433 None + BranchConditional 431 432 433 + 427: Label + Branch 450 + 428: Label + BranchConditional 18 425 427 + 432: Label + Branch 427 + 433: Label + 436: 7(fvec4) Load 435(bigColor7) + 437: 7(fvec4) Load 9(color) + 438: 7(fvec4) FAdd 437 436 + Store 9(color) 438 + 439: 6(float) Load 404(d7) + 440: 17(bool) FOrdLessThan 439 93 + SelectionMerge 442 None + BranchConditional 440 441 442 + 441: Label + 443: 21(ptr) AccessChain 9(color) 64 + 444: 6(float) Load 443 + 445: 6(float) FAdd 444 93 + Store 443 445 + Branch 427 + 442: Label + 447: 7(fvec4) Load 11(BaseColor) + 448: 7(fvec4) Load 9(color) + 449: 7(fvec4) FAdd 448 447 + Store 9(color) 449 + Branch 428 + 450: Label + LoopMerge 452 453 None + Branch 451 + 451: Label + 455: 6(float) Load 454(d8) + 456: 17(bool) FOrdLessThan 455 430 + SelectionMerge 458 None + BranchConditional 456 457 458 + 452: Label + Branch 490 + 453: Label + 486: 21(ptr) AccessChain 9(color) 64 + 487: 6(float) Load 486 + 488: 6(float) Load 454(d8) + 489: 17(bool) FOrdLessThan 487 488 + BranchConditional 489 450 452 + 457: Label + Branch 452 + 458: Label + 460: 7(fvec4) Load 435(bigColor7) + 461: 7(fvec4) Load 9(color) + 462: 7(fvec4) FAdd 461 460 + Store 9(color) 462 + 463: 6(float) Load 454(d8) + 464: 17(bool) FOrdLessThan 463 93 + SelectionMerge 466 None + BranchConditional 464 465 466 + 465: Label + 467: 21(ptr) AccessChain 9(color) 64 + 468: 6(float) Load 467 + 469: 6(float) FAdd 468 93 + Store 467 469 + 470: 6(float) Load 454(d8) + 472: 17(bool) FOrdLessThan 470 471 + SelectionMerge 474 None + BranchConditional 472 473 478 + 473: Label + 475: 21(ptr) AccessChain 9(color) 107 + 476: 6(float) Load 475 + 477: 6(float) FAdd 476 93 + Store 475 477 + Branch 474 + 478: Label + 479: 21(ptr) AccessChain 9(color) 20 + 480: 6(float) Load 479 + 481: 6(float) FAdd 480 93 + Store 479 481 + Branch 474 + 474: Label + Branch 452 + 466: Label + 483: 7(fvec4) Load 11(BaseColor) + 484: 7(fvec4) Load 9(color) + 485: 7(fvec4) FAdd 484 483 + Store 9(color) 485 + Branch 453 + 490: Label + 494: 21(ptr) AccessChain 9(color) 73 + 495: 6(float) Load 494 + 497: 6(float) Load 496(d9) + 498: 17(bool) FOrdLessThan 495 497 + LoopMerge 492 493 None + BranchConditional 498 491 492 + 491: Label + 499: 6(float) Load 496(d9) + 500: 6(float) Load 454(d8) + 501: 17(bool) FOrdGreaterThan 499 500 + SelectionMerge 503 None + BranchConditional 501 502 503 + 492: Label + Branch 521 + 493: Label + Branch 490 + 502: Label + 504: 21(ptr) AccessChain 9(color) 20 + 505: 6(float) Load 504 + 506: 6(float) Load 404(d7) + 507: 17(bool) FOrdLessThanEqual 505 506 + SelectionMerge 509 None + BranchConditional 507 508 509 + 508: Label + 510: 21(ptr) AccessChain 9(color) 64 + 511: 6(float) Load 510 + 513: 17(bool) FOrdEqual 511 512 + SelectionMerge 515 None + BranchConditional 513 514 519 + 514: Label + 516: 21(ptr) AccessChain 9(color) 73 + 517: 6(float) Load 516 + 518: 6(float) FAdd 517 93 + Store 516 518 + Branch 515 + 519: Label + Branch 492 + 515: Label + Branch 509 + 509: Label + Branch 503 + 503: Label + Branch 493 + 521: Label + 525: 21(ptr) AccessChain 9(color) 64 + 526: 6(float) Load 525 + 528: 6(float) Load 527(d10) + 529: 17(bool) FOrdLessThan 526 528 + LoopMerge 523 524 None + BranchConditional 529 522 523 + 522: Label + 530: 21(ptr) AccessChain 9(color) 107 + 531: 6(float) Load 530 + 532: 6(float) FAdd 531 93 + Store 530 532 + 533: 21(ptr) AccessChain 9(color) 107 + 534: 6(float) Load 533 + 536: 6(float) Load 535(d11) + 537: 17(bool) FOrdLessThan 534 536 + SelectionMerge 539 None + BranchConditional 537 538 539 + 523: Label + Branch 562 + 524: Label + Branch 521 + 538: Label + 540: 21(ptr) AccessChain 9(color) 64 + 541: 6(float) Load 540 + 542: 6(float) FAdd 541 93 + Store 540 542 + 543: 21(ptr) AccessChain 9(color) 73 + 544: 6(float) Load 543 + 546: 6(float) Load 545(d12) + 547: 17(bool) FOrdLessThan 544 546 + SelectionMerge 549 None + BranchConditional 547 548 553 + 548: Label + 550: 21(ptr) AccessChain 9(color) 73 + 551: 6(float) Load 550 + 552: 6(float) FAdd 551 93 + Store 550 552 + Branch 549 + 553: Label + 554: 21(ptr) AccessChain 9(color) 20 + 555: 6(float) Load 554 + 556: 6(float) FAdd 555 93 + Store 554 556 + Branch 549 + 549: Label + Branch 524 + 539: Label + 558: 7(fvec4) Load 9(color) + 559: 7(fvec4) CompositeConstruct 93 93 93 93 + 560: 7(fvec4) FAdd 558 559 + Store 9(color) 560 + Branch 523 + 562: Label + 566: 21(ptr) AccessChain 9(color) 20 + 567: 6(float) Load 566 + 569: 17(bool) FOrdLessThan 567 568 + LoopMerge 564 565 None + BranchConditional 569 563 564 + 563: Label + 571: 7(fvec4) Load 570(bigColor8) + 572: 7(fvec4) Load 9(color) + 573: 7(fvec4) FAdd 572 571 + Store 9(color) 573 + 574: 21(ptr) AccessChain 9(color) 64 + 575: 6(float) Load 574 + 576: 6(float) Load 454(d8) + 577: 17(bool) FOrdLessThan 575 576 + SelectionMerge 579 None + BranchConditional 577 578 579 + 564: Label + 593: 7(fvec4) Load 9(color) + 594: 7(fvec4) CompositeConstruct 93 93 93 93 + 595: 7(fvec4) FAdd 593 594 + Store 9(color) 595 + 598: 7(fvec4) Load 9(color) + Store 597(gl_FragColor) 598 + Branch 599 + 565: Label + Branch 562 + 578: Label + 580: 21(ptr) AccessChain 9(color) 73 + 581: 6(float) Load 580 + 582: 6(float) Load 355(d6) + 583: 17(bool) FOrdLessThan 581 582 + SelectionMerge 585 None + BranchConditional 583 584 585 + 584: Label + Branch 565 + 585: Label + Branch 579 + 579: Label + 587: 51(ptr) AccessChain 570(bigColor8) 20 + 588: 6(float) Load 587 + 589: 21(ptr) AccessChain 9(color) 107 + 590: 6(float) Load 589 + 591: 6(float) FAdd 590 588 + 592: 21(ptr) AccessChain 9(color) 107 + Store 592 591 + Branch 565 + 599: Label + 603: 21(ptr) AccessChain 9(color) 20 + 604: 6(float) Load 603 + 606: 6(float) Load 605(d14) + 607: 17(bool) FOrdLessThan 604 606 + LoopMerge 601 602 None + BranchConditional 607 600 601 + 600: Label + 608: 21(ptr) AccessChain 9(color) 107 + 609: 6(float) Load 608 + 611: 6(float) Load 610(d15) + 612: 17(bool) FOrdLessThan 609 611 + SelectionMerge 614 None + BranchConditional 612 613 616 + 601: Label + 620: 7(fvec4) Load 9(color) + 621: 7(fvec4) CompositeConstruct 93 93 93 93 + 622: 7(fvec4) FAdd 620 621 + Store 9(color) 622 + Branch 623 + 602: Label + Branch 599 + 613: Label + Return + 616: Label + 617: 7(fvec4) Load 9(color) + 618: 7(fvec4) CompositeConstruct 93 93 93 93 + 619: 7(fvec4) FAdd 617 618 + Store 9(color) 619 + Branch 614 + 614: Label + Branch 602 + 623: Label + 627: 21(ptr) AccessChain 9(color) 73 + 628: 6(float) Load 627 + 630: 6(float) Load 629(d16) + 631: 17(bool) FOrdLessThan 628 630 + LoopMerge 625 626 None + BranchConditional 631 624 625 + 624: Label + 632: 21(ptr) AccessChain 9(color) 73 + 633: 6(float) Load 632 + 634: 6(float) FAdd 633 93 + Store 632 634 + Branch 626 + 625: Label + Branch 635 + 626: Label + Branch 623 + 635: Label + 639: 21(ptr) AccessChain 9(color) 73 + 640: 6(float) Load 639 + 641: 6(float) Load 102(d2) + 642: 17(bool) FOrdLessThan 640 641 + SelectionMerge 644 None + BranchConditional 642 643 644 + 636: Label + 650: 7(fvec4) Load 114(bigColor1_2) + 651: 7(fvec4) Load 9(color) + 652: 7(fvec4) FAdd 651 650 + Store 9(color) 652 + 653: 21(ptr) AccessChain 9(color) 64 + 654: 6(float) Load 653 + 655: 6(float) Load 110(d3) + 656: 17(bool) FOrdLessThan 654 655 + SelectionMerge 658 None + BranchConditional 656 657 658 + 637: Label + Branch 660 + 638: Label + Branch 635 + 643: Label + 645: 21(ptr) AccessChain 9(color) 107 + 646: 6(float) Load 645 + 647: 6(float) Load 110(d3) + 648: 17(bool) FOrdLessThan 646 647 + Branch 644 + 644: Label + 649: 17(bool) Phi 642 635 648 643 + LoopMerge 637 638 None + BranchConditional 649 636 637 + 657: Label + Return + 658: Label + Branch 638 + 660: Label + LoopMerge 662 663 None + Branch 661 + 661: Label + 664: 21(ptr) AccessChain 9(color) 107 + 665: 6(float) Load 664 + 667: 6(float) Load 666(d18) + 668: 17(bool) FOrdLessThan 665 667 + SelectionMerge 670 None + BranchConditional 668 669 670 + 662: Label + Branch 680 + 663: Label + 675: 21(ptr) AccessChain 9(color) 20 + 676: 6(float) Load 675 + 678: 6(float) Load 677(d17) + 679: 17(bool) FOrdLessThan 676 678 + BranchConditional 679 660 662 + 669: Label + Return + 670: Label + 672: 7(fvec4) Load 9(color) + 673: 7(fvec4) CompositeConstruct 93 93 93 93 + 674: 7(fvec4) FAdd 672 673 + Store 9(color) 674 + Branch 663 + 680: Label + 684: 21(ptr) AccessChain 9(color) 107 + 685: 6(float) Load 684 + 686: 6(float) Load 629(d16) + 687: 17(bool) FOrdLessThan 685 686 + LoopMerge 682 683 None + BranchConditional 687 681 682 + 681: Label + 688: 21(ptr) AccessChain 9(color) 73 + 689: 6(float) Load 688 + 690: 6(float) Load 629(d16) + 691: 17(bool) FOrdLessThan 689 690 + SelectionMerge 693 None + BranchConditional 691 692 695 + 682: Label + 699: 7(fvec4) Load 9(color) + 700: 7(fvec4) CompositeConstruct 93 93 93 93 + 701: 7(fvec4) FAdd 699 700 + Store 9(color) 701 + 702: 7(fvec4) Load 9(color) + Store 597(gl_FragColor) 702 + Return + 683: Label + Branch 680 + 692: Label + Kill + 695: Label + 696: 7(fvec4) Load 9(color) + 697: 7(fvec4) CompositeConstruct 93 93 93 93 + 698: 7(fvec4) FAdd 696 697 + Store 9(color) 698 + Branch 693 + 693: Label + Branch 683 + FunctionEnd diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index ff7a8f2f..fa7313e7 100755 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -7,7 +7,7 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 186 +// Id's are bound by 187 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -18,53 +18,53 @@ Linked fragment stage: Name 4 "main" Name 9 "color" Name 11 "BaseColor" - Name 17 "bigColor4" - Name 27 "d4" - Name 79 "d13" - Name 139 "gl_FragColor" - Name 141 "bigColor" - Name 142 "bigColor1_1" - Name 143 "bigColor1_2" - Name 144 "bigColor1_3" - Name 145 "bigColor2" - Name 146 "bigColor3" - Name 147 "bigColor5" - Name 148 "bigColor6" - Name 149 "bigColor7" - Name 150 "bigColor8" - Name 151 "d" - Name 152 "d2" - Name 153 "d3" - Name 154 "d5" - Name 155 "d6" - Name 156 "d7" - Name 157 "d8" - Name 158 "d9" - Name 159 "d10" - Name 160 "d11" - Name 161 "d12" - Name 162 "d14" - Name 163 "d15" - Name 164 "d16" - Name 165 "d17" - Name 166 "d18" - Name 167 "d19" - Name 168 "d20" - Name 169 "d21" - Name 170 "d22" - Name 171 "d23" - Name 172 "d24" - Name 173 "d25" - Name 174 "d26" - Name 175 "d27" - Name 176 "d28" - Name 177 "d29" - Name 178 "d30" - Name 179 "d31" - Name 180 "d32" - Name 181 "d33" - Name 182 "d34" - Name 185 "Count" + Name 18 "bigColor4" + Name 28 "d4" + Name 80 "d13" + Name 140 "gl_FragColor" + Name 142 "bigColor" + Name 143 "bigColor1_1" + Name 144 "bigColor1_2" + Name 145 "bigColor1_3" + Name 146 "bigColor2" + Name 147 "bigColor3" + Name 148 "bigColor5" + Name 149 "bigColor6" + Name 150 "bigColor7" + Name 151 "bigColor8" + Name 152 "d" + Name 153 "d2" + Name 154 "d3" + Name 155 "d5" + Name 156 "d6" + Name 157 "d7" + Name 158 "d8" + Name 159 "d9" + Name 160 "d10" + Name 161 "d11" + Name 162 "d12" + Name 163 "d14" + Name 164 "d15" + Name 165 "d16" + Name 166 "d17" + Name 167 "d18" + Name 168 "d19" + Name 169 "d20" + Name 170 "d21" + Name 171 "d22" + Name 172 "d23" + Name 173 "d24" + Name 174 "d25" + Name 175 "d26" + Name 176 "d27" + Name 177 "d28" + Name 178 "d29" + Name 179 "d30" + Name 180 "d31" + Name 181 "d32" + Name 182 "d33" + Name 183 "d34" + Name 186 "Count" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -72,67 +72,67 @@ Linked fragment stage: 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input - 16: TypePointer UniformConstant 7(fvec4) - 17(bigColor4): 16(ptr) Variable UniformConstant - 21: TypeInt 32 0 - 22: 21(int) Constant 0 - 23: TypePointer Function 6(float) - 26: TypePointer UniformConstant 6(float) - 27(d4): 26(ptr) Variable UniformConstant - 29: TypeBool - 33: 6(float) Constant 1073741824 - 34: 21(int) Constant 2 - 47: 6(float) Constant 1065353216 - 50: 21(int) Constant 1 - 76: 21(int) Constant 3 - 79(d13): 26(ptr) Variable UniformConstant - 138: TypePointer Output 7(fvec4) -139(gl_FragColor): 138(ptr) Variable Output - 141(bigColor): 16(ptr) Variable UniformConstant -142(bigColor1_1): 16(ptr) Variable UniformConstant -143(bigColor1_2): 16(ptr) Variable UniformConstant -144(bigColor1_3): 16(ptr) Variable UniformConstant - 145(bigColor2): 16(ptr) Variable UniformConstant - 146(bigColor3): 16(ptr) Variable UniformConstant - 147(bigColor5): 16(ptr) Variable UniformConstant - 148(bigColor6): 16(ptr) Variable UniformConstant - 149(bigColor7): 16(ptr) Variable UniformConstant - 150(bigColor8): 16(ptr) Variable UniformConstant - 151(d): 26(ptr) Variable UniformConstant - 152(d2): 26(ptr) Variable UniformConstant - 153(d3): 26(ptr) Variable UniformConstant - 154(d5): 26(ptr) Variable UniformConstant - 155(d6): 26(ptr) Variable UniformConstant - 156(d7): 26(ptr) Variable UniformConstant - 157(d8): 26(ptr) Variable UniformConstant - 158(d9): 26(ptr) Variable UniformConstant - 159(d10): 26(ptr) Variable UniformConstant - 160(d11): 26(ptr) Variable UniformConstant - 161(d12): 26(ptr) Variable UniformConstant - 162(d14): 26(ptr) Variable UniformConstant - 163(d15): 26(ptr) Variable UniformConstant - 164(d16): 26(ptr) Variable UniformConstant - 165(d17): 26(ptr) Variable UniformConstant - 166(d18): 26(ptr) Variable UniformConstant - 167(d19): 26(ptr) Variable UniformConstant - 168(d20): 26(ptr) Variable UniformConstant - 169(d21): 26(ptr) Variable UniformConstant - 170(d22): 26(ptr) Variable UniformConstant - 171(d23): 26(ptr) Variable UniformConstant - 172(d24): 26(ptr) Variable UniformConstant - 173(d25): 26(ptr) Variable UniformConstant - 174(d26): 26(ptr) Variable UniformConstant - 175(d27): 26(ptr) Variable UniformConstant - 176(d28): 26(ptr) Variable UniformConstant - 177(d29): 26(ptr) Variable UniformConstant - 178(d30): 26(ptr) Variable UniformConstant - 179(d31): 26(ptr) Variable UniformConstant - 180(d32): 26(ptr) Variable UniformConstant - 181(d33): 26(ptr) Variable UniformConstant - 182(d34): 26(ptr) Variable UniformConstant - 183: TypeInt 32 1 - 184: TypePointer UniformConstant 183(int) - 185(Count): 184(ptr) Variable UniformConstant + 17: TypePointer UniformConstant 7(fvec4) + 18(bigColor4): 17(ptr) Variable UniformConstant + 22: TypeInt 32 0 + 23: 22(int) Constant 0 + 24: TypePointer Function 6(float) + 27: TypePointer UniformConstant 6(float) + 28(d4): 27(ptr) Variable UniformConstant + 30: TypeBool + 34: 6(float) Constant 1073741824 + 35: 22(int) Constant 2 + 48: 6(float) Constant 1065353216 + 51: 22(int) Constant 1 + 77: 22(int) Constant 3 + 80(d13): 27(ptr) Variable UniformConstant + 139: TypePointer Output 7(fvec4) +140(gl_FragColor): 139(ptr) Variable Output + 142(bigColor): 17(ptr) Variable UniformConstant +143(bigColor1_1): 17(ptr) Variable UniformConstant +144(bigColor1_2): 17(ptr) Variable UniformConstant +145(bigColor1_3): 17(ptr) Variable UniformConstant + 146(bigColor2): 17(ptr) Variable UniformConstant + 147(bigColor3): 17(ptr) Variable UniformConstant + 148(bigColor5): 17(ptr) Variable UniformConstant + 149(bigColor6): 17(ptr) Variable UniformConstant + 150(bigColor7): 17(ptr) Variable UniformConstant + 151(bigColor8): 17(ptr) Variable UniformConstant + 152(d): 27(ptr) Variable UniformConstant + 153(d2): 27(ptr) Variable UniformConstant + 154(d3): 27(ptr) Variable UniformConstant + 155(d5): 27(ptr) Variable UniformConstant + 156(d6): 27(ptr) Variable UniformConstant + 157(d7): 27(ptr) Variable UniformConstant + 158(d8): 27(ptr) Variable UniformConstant + 159(d9): 27(ptr) Variable UniformConstant + 160(d10): 27(ptr) Variable UniformConstant + 161(d11): 27(ptr) Variable UniformConstant + 162(d12): 27(ptr) Variable UniformConstant + 163(d14): 27(ptr) Variable UniformConstant + 164(d15): 27(ptr) Variable UniformConstant + 165(d16): 27(ptr) Variable UniformConstant + 166(d17): 27(ptr) Variable UniformConstant + 167(d18): 27(ptr) Variable UniformConstant + 168(d19): 27(ptr) Variable UniformConstant + 169(d20): 27(ptr) Variable UniformConstant + 170(d21): 27(ptr) Variable UniformConstant + 171(d22): 27(ptr) Variable UniformConstant + 172(d23): 27(ptr) Variable UniformConstant + 173(d24): 27(ptr) Variable UniformConstant + 174(d25): 27(ptr) Variable UniformConstant + 175(d26): 27(ptr) Variable UniformConstant + 176(d27): 27(ptr) Variable UniformConstant + 177(d28): 27(ptr) Variable UniformConstant + 178(d29): 27(ptr) Variable UniformConstant + 179(d30): 27(ptr) Variable UniformConstant + 180(d31): 27(ptr) Variable UniformConstant + 181(d32): 27(ptr) Variable UniformConstant + 182(d33): 27(ptr) Variable UniformConstant + 183(d34): 27(ptr) Variable UniformConstant + 184: TypeInt 32 1 + 185: TypePointer UniformConstant 184(int) + 186(Count): 185(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function @@ -140,160 +140,162 @@ Linked fragment stage: Store 9(color) 12 Branch 13 13: Label - 18: 7(fvec4) Load 17(bigColor4) - 19: 7(fvec4) Load 9(color) - 20: 7(fvec4) FAdd 19 18 - Store 9(color) 20 - 24: 23(ptr) AccessChain 9(color) 22 - 25: 6(float) Load 24 - 28: 6(float) Load 27(d4) - 30: 29(bool) FOrdLessThan 25 28 - SelectionMerge 32 None - BranchConditional 30 31 32 - 14: Label - Branch 75 + LoopMerge 15 16 None + Branch 14 + 14: Label + 19: 7(fvec4) Load 18(bigColor4) + 20: 7(fvec4) Load 9(color) + 21: 7(fvec4) FAdd 20 19 + Store 9(color) 21 + 25: 24(ptr) AccessChain 9(color) 23 + 26: 6(float) Load 25 + 29: 6(float) Load 28(d4) + 31: 30(bool) FOrdLessThan 26 29 + SelectionMerge 33 None + BranchConditional 31 32 33 15: Label - 68: 23(ptr) AccessChain 9(color) 34 - 69: 6(float) Load 68 - 70: 6(float) Load 27(d4) - 71: 29(bool) FOrdLessThan 69 70 - LoopMerge 14 15 None - BranchConditional 71 13 14 - 31: Label - 35: 23(ptr) AccessChain 9(color) 34 - 36: 6(float) Load 35 - 37: 6(float) FAdd 36 33 - 38: 23(ptr) AccessChain 9(color) 34 - Store 38 37 - 39: 23(ptr) AccessChain 9(color) 34 - 40: 6(float) Load 39 - 41: 6(float) Load 27(d4) - 42: 29(bool) FOrdLessThan 40 41 - SelectionMerge 44 None - BranchConditional 42 43 44 - 43: Label - 45: 23(ptr) AccessChain 9(color) 22 - 46: 6(float) Load 45 - 48: 6(float) FAdd 46 47 - Store 45 48 - Branch 15 + Branch 73 + 16: Label + 69: 24(ptr) AccessChain 9(color) 35 + 70: 6(float) Load 69 + 71: 6(float) Load 28(d4) + 72: 30(bool) FOrdLessThan 70 71 + BranchConditional 72 13 15 + 32: Label + 36: 24(ptr) AccessChain 9(color) 35 + 37: 6(float) Load 36 + 38: 6(float) FAdd 37 34 + 39: 24(ptr) AccessChain 9(color) 35 + Store 39 38 + 40: 24(ptr) AccessChain 9(color) 35 + 41: 6(float) Load 40 + 42: 6(float) Load 28(d4) + 43: 30(bool) FOrdLessThan 41 42 + SelectionMerge 45 None + BranchConditional 43 44 45 44: Label - Branch 32 - 32: Label - 51: 23(ptr) AccessChain 9(color) 50 - 52: 6(float) Load 51 - 53: 6(float) Load 27(d4) - 54: 29(bool) FOrdLessThan 52 53 - SelectionMerge 56 None - BranchConditional 54 55 62 - 55: Label - 57: 6(float) Load 27(d4) - 58: 23(ptr) AccessChain 9(color) 50 - 59: 6(float) Load 58 - 60: 6(float) FAdd 59 57 - 61: 23(ptr) AccessChain 9(color) 50 - Store 61 60 - Branch 56 - 62: Label - 63: 6(float) Load 27(d4) - 64: 23(ptr) AccessChain 9(color) 22 - 65: 6(float) Load 64 - 66: 6(float) FAdd 65 63 - 67: 23(ptr) AccessChain 9(color) 22 - Store 67 66 - Branch 56 - 56: Label - Branch 15 - 72: Label - 82: 23(ptr) AccessChain 9(color) 34 - 83: 6(float) Load 82 - 84: 6(float) Load 79(d13) - 85: 29(bool) FOrdLessThan 83 84 - SelectionMerge 87 None - BranchConditional 85 86 91 - 73: Label - 135: 7(fvec4) Load 9(color) - 136: 7(fvec4) CompositeConstruct 47 47 47 47 - 137: 7(fvec4) FAdd 135 136 - Store 9(color) 137 - 140: 7(fvec4) Load 9(color) - Store 139(gl_FragColor) 140 - Return - 74: Label - Branch 75 - 75: Label - 77: 23(ptr) AccessChain 9(color) 76 - 78: 6(float) Load 77 - 80: 6(float) Load 79(d13) - 81: 29(bool) FOrdLessThan 78 80 - LoopMerge 73 74 None - BranchConditional 81 72 73 - 86: Label - 88: 7(fvec4) Load 9(color) - 89: 7(fvec4) CompositeConstruct 47 47 47 47 - 90: 7(fvec4) FAdd 88 89 - Store 9(color) 90 - Branch 87 - 91: Label - 92: 7(fvec4) Load 9(color) - 93: 7(fvec4) CompositeConstruct 47 47 47 47 - 94: 7(fvec4) FSub 92 93 - Store 9(color) 94 - Branch 87 - 87: Label - 95: 7(fvec4) Load 17(bigColor4) - 96: 7(fvec4) Load 9(color) - 97: 7(fvec4) FAdd 96 95 - Store 9(color) 97 - 98: 23(ptr) AccessChain 9(color) 22 - 99: 6(float) Load 98 - 100: 6(float) Load 27(d4) - 101: 29(bool) FOrdLessThan 99 100 - SelectionMerge 103 None - BranchConditional 101 102 103 - 102: Label - 104: 23(ptr) AccessChain 9(color) 34 - 105: 6(float) Load 104 - 106: 6(float) FAdd 105 33 - 107: 23(ptr) AccessChain 9(color) 34 - Store 107 106 - 108: 23(ptr) AccessChain 9(color) 34 - 109: 6(float) Load 108 - 110: 6(float) Load 27(d4) - 111: 29(bool) FOrdLessThan 109 110 - SelectionMerge 113 None - BranchConditional 111 112 113 - 112: Label - 114: 23(ptr) AccessChain 9(color) 22 - 115: 6(float) Load 114 - 116: 6(float) FAdd 115 47 - Store 114 116 - Branch 74 - 113: Label - Branch 103 - 103: Label - 118: 23(ptr) AccessChain 9(color) 50 - 119: 6(float) Load 118 - 120: 6(float) Load 27(d4) - 121: 29(bool) FOrdLessThan 119 120 - SelectionMerge 123 None - BranchConditional 121 122 129 - 122: Label - 124: 6(float) Load 27(d4) - 125: 23(ptr) AccessChain 9(color) 50 - 126: 6(float) Load 125 - 127: 6(float) FAdd 126 124 - 128: 23(ptr) AccessChain 9(color) 50 - Store 128 127 - Branch 123 - 129: Label - 130: 6(float) Load 27(d4) - 131: 23(ptr) AccessChain 9(color) 22 - 132: 6(float) Load 131 - 133: 6(float) FAdd 132 130 - 134: 23(ptr) AccessChain 9(color) 22 - Store 134 133 - Branch 123 - 123: Label - Branch 74 - FunctionEnd + 46: 24(ptr) AccessChain 9(color) 23 + 47: 6(float) Load 46 + 49: 6(float) FAdd 47 48 + Store 46 49 + Branch 16 + 45: Label + Branch 33 + 33: Label + 52: 24(ptr) AccessChain 9(color) 51 + 53: 6(float) Load 52 + 54: 6(float) Load 28(d4) + 55: 30(bool) FOrdLessThan 53 54 + SelectionMerge 57 None + BranchConditional 55 56 63 + 56: Label + 58: 6(float) Load 28(d4) + 59: 24(ptr) AccessChain 9(color) 51 + 60: 6(float) Load 59 + 61: 6(float) FAdd 60 58 + 62: 24(ptr) AccessChain 9(color) 51 + Store 62 61 + Branch 57 + 63: Label + 64: 6(float) Load 28(d4) + 65: 24(ptr) AccessChain 9(color) 23 + 66: 6(float) Load 65 + 67: 6(float) FAdd 66 64 + 68: 24(ptr) AccessChain 9(color) 23 + Store 68 67 + Branch 57 + 57: Label + Branch 16 + 73: Label + 78: 24(ptr) AccessChain 9(color) 77 + 79: 6(float) Load 78 + 81: 6(float) Load 80(d13) + 82: 30(bool) FOrdLessThan 79 81 + LoopMerge 75 76 None + BranchConditional 82 74 75 + 74: Label + 83: 24(ptr) AccessChain 9(color) 35 + 84: 6(float) Load 83 + 85: 6(float) Load 80(d13) + 86: 30(bool) FOrdLessThan 84 85 + SelectionMerge 88 None + BranchConditional 86 87 92 + 75: Label + 136: 7(fvec4) Load 9(color) + 137: 7(fvec4) CompositeConstruct 48 48 48 48 + 138: 7(fvec4) FAdd 136 137 + Store 9(color) 138 + 141: 7(fvec4) Load 9(color) + Store 140(gl_FragColor) 141 + Return + 76: Label + Branch 73 + 87: Label + 89: 7(fvec4) Load 9(color) + 90: 7(fvec4) CompositeConstruct 48 48 48 48 + 91: 7(fvec4) FAdd 89 90 + Store 9(color) 91 + Branch 88 + 92: Label + 93: 7(fvec4) Load 9(color) + 94: 7(fvec4) CompositeConstruct 48 48 48 48 + 95: 7(fvec4) FSub 93 94 + Store 9(color) 95 + Branch 88 + 88: Label + 96: 7(fvec4) Load 18(bigColor4) + 97: 7(fvec4) Load 9(color) + 98: 7(fvec4) FAdd 97 96 + Store 9(color) 98 + 99: 24(ptr) AccessChain 9(color) 23 + 100: 6(float) Load 99 + 101: 6(float) Load 28(d4) + 102: 30(bool) FOrdLessThan 100 101 + SelectionMerge 104 None + BranchConditional 102 103 104 + 103: Label + 105: 24(ptr) AccessChain 9(color) 35 + 106: 6(float) Load 105 + 107: 6(float) FAdd 106 34 + 108: 24(ptr) AccessChain 9(color) 35 + Store 108 107 + 109: 24(ptr) AccessChain 9(color) 35 + 110: 6(float) Load 109 + 111: 6(float) Load 28(d4) + 112: 30(bool) FOrdLessThan 110 111 + SelectionMerge 114 None + BranchConditional 112 113 114 + 113: Label + 115: 24(ptr) AccessChain 9(color) 23 + 116: 6(float) Load 115 + 117: 6(float) FAdd 116 48 + Store 115 117 + Branch 76 + 114: Label + Branch 104 + 104: Label + 119: 24(ptr) AccessChain 9(color) 51 + 120: 6(float) Load 119 + 121: 6(float) Load 28(d4) + 122: 30(bool) FOrdLessThan 120 121 + SelectionMerge 124 None + BranchConditional 122 123 130 + 123: Label + 125: 6(float) Load 28(d4) + 126: 24(ptr) AccessChain 9(color) 51 + 127: 6(float) Load 126 + 128: 6(float) FAdd 127 125 + 129: 24(ptr) AccessChain 9(color) 51 + Store 129 128 + Branch 124 + 130: Label + 131: 6(float) Load 28(d4) + 132: 24(ptr) AccessChain 9(color) 23 + 133: 6(float) Load 132 + 134: 6(float) FAdd 133 131 + 135: 24(ptr) AccessChain 9(color) 23 + Store 135 134 + Branch 124 + 124: Label + Branch 76 + FunctionEnd diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index bc91acc5..fa7d6a54 100755 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -216,29 +216,29 @@ Linked fragment stage: Branch 121 121: Label Store 153(i) 154 - Branch 158 + Branch 155 155: Label - 163: 9(int) Load 60(c) - SelectionMerge 167 None - Switch 163 166 - case 1: 164 - case 2: 165 + 159: 9(int) Load 153(i) + 162: 161(bool) SLessThan 159 160 + LoopMerge 157 158 None + BranchConditional 162 156 157 156: Label - 211: 9(int) Load 60(c) - SelectionMerge 214 None - Switch 211 214 - case 1: 212 - case 2: 213 + 163: 9(int) Load 60(c) + SelectionMerge 167 None + Switch 163 166 + case 1: 164 + case 2: 165 157: Label - 209: 9(int) Load 153(i) - 210: 9(int) IAdd 209 63 - Store 153(i) 210 - Branch 158 - 158: Label - 159: 9(int) Load 153(i) - 162: 161(bool) SLessThan 159 160 - LoopMerge 156 157 None - BranchConditional 162 155 156 + 211: 9(int) Load 60(c) + SelectionMerge 214 None + Switch 211 214 + case 1: 212 + case 2: 213 + 158: Label + 209: 9(int) Load 153(i) + 210: 9(int) IAdd 209 63 + Store 153(i) 210 + Branch 155 164: Label 168: 6(float) Load 73(x) 169: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 168 @@ -246,159 +246,159 @@ Linked fragment stage: 171: 6(float) FAdd 170 169 Store 71(f) 171 Store 172(j) 173 - Branch 177 + Branch 174 174: Label - 181: 6(float) Load 71(f) - 182: 6(float) FAdd 181 47 - Store 71(f) 182 - 183: 6(float) Load 71(f) - 185: 161(bool) FOrdLessThan 183 184 - SelectionMerge 187 None - BranchConditional 185 186 187 + 178: 9(int) Load 172(j) + 180: 161(bool) SLessThan 178 179 + LoopMerge 176 177 None + BranchConditional 180 175 176 175: Label - Branch 167 - 176: Label - 189: 9(int) Load 172(j) - 190: 9(int) IAdd 189 63 - Store 172(j) 190 - Branch 177 - 177: Label - 178: 9(int) Load 172(j) - 180: 161(bool) SLessThan 178 179 - LoopMerge 175 176 None - BranchConditional 180 174 175 + 181: 6(float) Load 71(f) + 182: 6(float) FAdd 181 47 + Store 71(f) 182 + 183: 6(float) Load 71(f) + 185: 161(bool) FOrdLessThan 183 184 + SelectionMerge 187 None + BranchConditional 185 186 187 + 176: Label + Branch 167 + 177: Label + 189: 9(int) Load 172(j) + 190: 9(int) IAdd 189 63 + Store 172(j) 190 + Branch 174 186: Label - Branch 175 - 187: Label Branch 176 - 165: Label - 192: 6(float) Load 73(x) - 193: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 192 - 194: 6(float) Load 71(f) - 195: 6(float) FAdd 194 193 - Store 71(f) 195 - Branch 167 - 166: Label - 198: 6(float) Load 73(x) - 199: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 198 - 200: 6(float) Load 71(f) - 201: 6(float) FAdd 200 199 - Store 71(f) 201 - Branch 167 - 167: Label - 203: 6(float) Load 71(f) - 205: 161(bool) FOrdLessThan 203 204 - SelectionMerge 207 None - BranchConditional 205 206 207 - 206: Label - Branch 156 - 207: Label + 187: Label + Branch 177 + 165: Label + 192: 6(float) Load 73(x) + 193: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 192 + 194: 6(float) Load 71(f) + 195: 6(float) FAdd 194 193 + Store 71(f) 195 + Branch 167 + 166: Label + 198: 6(float) Load 73(x) + 199: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 198 + 200: 6(float) Load 71(f) + 201: 6(float) FAdd 200 199 + Store 71(f) 201 + Branch 167 + 167: Label + 203: 6(float) Load 71(f) + 205: 161(bool) FOrdLessThan 203 204 + SelectionMerge 207 None + BranchConditional 205 206 207 + 206: Label Branch 157 - 212: Label - 215: 6(float) Load 73(x) - 216: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 215 - 217: 6(float) Load 71(f) - 218: 6(float) FAdd 217 216 - Store 71(f) 218 - Branch 214 - 213: Label - Branch 214 - 214: Label - 224: 6(float) Load 71(f) - 225: 9(int) Load 58(local) - 226: 6(float) ConvertSToF 225 - 227: 6(float) FAdd 224 226 - Store 223(color) 227 - 231: 7(fvec4) Load 229(v) - Store 230(param) 231 - 233: 7(fvec4) Load 229(v) - Store 232(param) 233 - 235: 9(int) Load 60(c) - Store 234(param) 235 - 236: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 230(param) 232(param) 234(param) - 239: 6(float) CompositeExtract 236 1 - 240: 6(float) Load 223(color) - 241: 6(float) FAdd 240 239 - Store 223(color) 241 - 243: 7(fvec4) Load 229(v) - Store 242(param) 243 - 245: 7(fvec4) Load 229(v) - Store 244(param) 245 - 247: 9(int) Load 60(c) - Store 246(param) 247 - 248: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 242(param) 244(param) 246(param) - 250: 6(float) CompositeExtract 248 2 - 251: 6(float) Load 223(color) - 252: 6(float) FAdd 251 250 - Store 223(color) 252 - 253: 9(int) Load 60(c) - SelectionMerge 256 None - Switch 253 255 - case 0: 254 - 254: Label - Branch 256 - 255: Label - Branch 256 - 256: Label - 260: 9(int) Load 60(c) - SelectionMerge 262 None - Switch 260 261 - 261: Label - Branch 262 - 262: Label - Return - FunctionEnd -15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11 - 12(v1): 8(ptr) FunctionParameter - 13(v2): 8(ptr) FunctionParameter - 14(i1): 10(ptr) FunctionParameter - 16: Label - 22: 9(int) Load 14(i1) - SelectionMerge 26 None - Switch 22 26 - case 0: 23 - case 2: 24 - case 1: 24 - case 3: 25 - 23: Label - 27: 7(fvec4) Load 12(v1) - ReturnValue 27 - 24: Label - 29: 7(fvec4) Load 13(v2) - ReturnValue 29 - 25: Label - 31: 7(fvec4) Load 12(v1) - 32: 7(fvec4) Load 13(v2) - 33: 7(fvec4) FMul 31 32 - ReturnValue 33 - 26: Label - ReturnValue 37 - FunctionEnd -20(foo2(vf4;vf4;i1;): 7(fvec4) Function None 11 - 17(v1): 8(ptr) FunctionParameter - 18(v2): 8(ptr) FunctionParameter - 19(i1): 10(ptr) FunctionParameter - 21: Label - 39: 9(int) Load 19(i1) - SelectionMerge 44 None - Switch 39 44 - case 0: 40 - case 2: 41 - case 1: 42 - case 3: 43 - 40: Label - 45: 7(fvec4) Load 17(v1) - ReturnValue 45 - 41: Label - ReturnValue 48 - 42: Label - 50: 7(fvec4) Load 18(v2) - ReturnValue 50 - 43: Label - 52: 7(fvec4) Load 17(v1) - 53: 7(fvec4) Load 18(v2) - 54: 7(fvec4) FMul 52 53 - ReturnValue 54 - 44: Label - ReturnValue 37 - FunctionEnd + 207: Label + Branch 158 + 212: Label + 215: 6(float) Load 73(x) + 216: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 215 + 217: 6(float) Load 71(f) + 218: 6(float) FAdd 217 216 + Store 71(f) 218 + Branch 214 + 213: Label + Branch 214 + 214: Label + 224: 6(float) Load 71(f) + 225: 9(int) Load 58(local) + 226: 6(float) ConvertSToF 225 + 227: 6(float) FAdd 224 226 + Store 223(color) 227 + 231: 7(fvec4) Load 229(v) + Store 230(param) 231 + 233: 7(fvec4) Load 229(v) + Store 232(param) 233 + 235: 9(int) Load 60(c) + Store 234(param) 235 + 236: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 230(param) 232(param) 234(param) + 239: 6(float) CompositeExtract 236 1 + 240: 6(float) Load 223(color) + 241: 6(float) FAdd 240 239 + Store 223(color) 241 + 243: 7(fvec4) Load 229(v) + Store 242(param) 243 + 245: 7(fvec4) Load 229(v) + Store 244(param) 245 + 247: 9(int) Load 60(c) + Store 246(param) 247 + 248: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 242(param) 244(param) 246(param) + 250: 6(float) CompositeExtract 248 2 + 251: 6(float) Load 223(color) + 252: 6(float) FAdd 251 250 + Store 223(color) 252 + 253: 9(int) Load 60(c) + SelectionMerge 256 None + Switch 253 255 + case 0: 254 + 254: Label + Branch 256 + 255: Label + Branch 256 + 256: Label + 260: 9(int) Load 60(c) + SelectionMerge 262 None + Switch 260 261 + 261: Label + Branch 262 + 262: Label + Return + FunctionEnd +15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11 + 12(v1): 8(ptr) FunctionParameter + 13(v2): 8(ptr) FunctionParameter + 14(i1): 10(ptr) FunctionParameter + 16: Label + 22: 9(int) Load 14(i1) + SelectionMerge 26 None + Switch 22 26 + case 0: 23 + case 2: 24 + case 1: 24 + case 3: 25 + 23: Label + 27: 7(fvec4) Load 12(v1) + ReturnValue 27 + 24: Label + 29: 7(fvec4) Load 13(v2) + ReturnValue 29 + 25: Label + 31: 7(fvec4) Load 12(v1) + 32: 7(fvec4) Load 13(v2) + 33: 7(fvec4) FMul 31 32 + ReturnValue 33 + 26: Label + ReturnValue 37 + FunctionEnd +20(foo2(vf4;vf4;i1;): 7(fvec4) Function None 11 + 17(v1): 8(ptr) FunctionParameter + 18(v2): 8(ptr) FunctionParameter + 19(i1): 10(ptr) FunctionParameter + 21: Label + 39: 9(int) Load 19(i1) + SelectionMerge 44 None + Switch 39 44 + case 0: 40 + case 2: 41 + case 1: 42 + case 3: 43 + 40: Label + 45: 7(fvec4) Load 17(v1) + ReturnValue 45 + 41: Label + ReturnValue 48 + 42: Label + 50: 7(fvec4) Load 18(v2) + ReturnValue 50 + 43: Label + 52: 7(fvec4) Load 17(v1) + 53: 7(fvec4) Load 18(v2) + 54: 7(fvec4) FMul 52 53 + ReturnValue 54 + 44: Label + ReturnValue 37 + FunctionEnd diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out index 0938db43..684f4526 100755 --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -44,45 +44,45 @@ Linked vertex stage: 28(C): 7(ptr) Variable Function 38(D): 7(ptr) Variable Function Store 8(i) 9 - Branch 13 + Branch 10 10: Label - Store 18(A) 19 - 20: 6(int) Load 8(i) - 22: 6(int) SMod 20 21 - 23: 16(bool) IEqual 22 9 - SelectionMerge 25 None - BranchConditional 23 24 25 + 14: 6(int) Load 8(i) + 17: 16(bool) SLessThan 14 15 + LoopMerge 12 13 None + BranchConditional 17 11 12 11: Label - Store 38(D) 39 - Return - 12: Label - Branch 13 - 13: Label - 14: 6(int) Load 8(i) - 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 + Store 18(A) 19 + 20: 6(int) Load 8(i) + 22: 6(int) SMod 20 21 + 23: 16(bool) IEqual 22 9 + SelectionMerge 25 None + BranchConditional 23 24 25 + 12: Label + Store 38(D) 39 + Return + 13: Label + Branch 10 24: Label Store 26(B) 21 - Branch 12 + Branch 13 27: Label Store 28(C) 21 Branch 25 - 25: Label - 29: 6(int) Load 8(i) - 31: 6(int) SMod 29 30 - 32: 16(bool) IEqual 31 9 - SelectionMerge 34 None - BranchConditional 32 33 34 - 33: Label - Store 26(B) 21 - Branch 11 - 35: Label - Store 28(C) 21 - Branch 34 - 34: Label - 36: 6(int) Load 8(i) - 37: 6(int) IAdd 36 19 - Store 8(i) 37 + 25: Label + 29: 6(int) Load 8(i) + 31: 6(int) SMod 29 30 + 32: 16(bool) IEqual 31 9 + SelectionMerge 34 None + BranchConditional 32 33 34 + 33: Label + Store 26(B) 21 Branch 12 - FunctionEnd + 35: Label + Store 28(C) 21 + Branch 34 + 34: Label + 36: 6(int) Load 8(i) + 37: 6(int) IAdd 36 19 + Store 8(i) 37 + Branch 13 + FunctionEnd diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out index 3684101c..63656537 100755 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -33,19 +33,19 @@ Linked vertex stage: 5: Label 8(i): 7(ptr) Variable Function Store 8(i) 9 - Branch 13 + Branch 10 10: Label - 18: 6(int) Load 8(i) - 20: 6(int) IAdd 18 19 - Store 8(i) 20 - Branch 12 - 11: Label - Return - 12: Label - Branch 13 - 13: Label 14: 6(int) Load 8(i) 17: 16(bool) SLessThan 14 15 - LoopMerge 11 12 None - BranchConditional 17 10 11 - FunctionEnd + LoopMerge 12 13 None + BranchConditional 17 11 12 + 11: Label + 18: 6(int) Load 8(i) + 20: 6(int) IAdd 18 19 + Store 8(i) 20 + Branch 13 + 12: Label + Return + 13: Label + Branch 10 + FunctionEnd diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index 62279827..e5c9642e 100755 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -41,24 +41,24 @@ Linked fragment stage: 9(color): 8(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 - Branch 16 + Branch 13 13: Label - 29: 7(fvec4) Load 28(bigColor) - 30: 7(fvec4) Load 9(color) - 31: 7(fvec4) FAdd 30 29 - Store 9(color) 31 - Branch 15 - 14: Label - 34: 7(fvec4) Load 9(color) - Store 33(gl_FragColor) 34 - Return - 15: Label - Branch 16 - 16: Label 20: 19(ptr) AccessChain 9(color) 18 21: 6(float) Load 20 24: 6(float) Load 23(d) 26: 25(bool) FOrdLessThan 21 24 - LoopMerge 14 15 None - BranchConditional 26 13 14 - FunctionEnd + LoopMerge 15 16 None + BranchConditional 26 14 15 + 14: Label + 29: 7(fvec4) Load 28(bigColor) + 30: 7(fvec4) Load 9(color) + 31: 7(fvec4) FAdd 30 29 + Store 9(color) 31 + Branch 16 + 15: Label + 34: 7(fvec4) Load 9(color) + Store 33(gl_FragColor) 34 + Return + 16: Label + Branch 13 + FunctionEnd diff --git a/Test/spv.for-notest.vert b/Test/spv.for-notest.vert index f40e6664..7aff3b30 100644 --- a/Test/spv.for-notest.vert +++ b/Test/spv.for-notest.vert @@ -2,5 +2,8 @@ layout(location=0) out highp int r; void main() { int i; + // This infinite loop results in bad SPIR-V generated, since the merge block + // is dropped as unreachable. It is still useful for testing the rest of the + // code generation. for (i=0; ; i++) { r = i; } }