From 213bbbe4a77a8c9c9bb6f4f24be3fe3a2f764b17 Mon Sep 17 00:00:00 2001 From: Dejan Mircevski Date: Wed, 20 Jan 2016 11:51:43 -0500 Subject: [PATCH] Split loop header from condition testing for for/while loops. --- SPIRV/GlslangToSpv.cpp | 22 +- Test/baseResults/spv.dataOutIndirect.vert.out | 76 +- .../spv.for-continue-break.vert.out | 112 +- Test/baseResults/spv.for-nobody.vert.out | 50 +- Test/baseResults/spv.for-simple.vert.out | 46 +- Test/baseResults/spv.forLoop.frag.out | 326 +-- Test/baseResults/spv.localAggregates.frag.out | 156 +- Test/baseResults/spv.loops.frag.out | 2104 +++++++++-------- Test/baseResults/spv.loopsArtificial.frag.out | 358 +-- Test/baseResults/spv.switch.frag.out | 292 +-- .../spv.while-continue-break.vert.out | 96 +- Test/baseResults/spv.while-simple.vert.out | 38 +- Test/baseResults/spv.whileLoop.frag.out | 54 +- Test/spv.for-notest.vert | 3 - 14 files changed, 1905 insertions(+), 1828 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 71127c7e9..9d42e3cff 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1391,12 +1391,22 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn { auto blocks = builder.makeNewLoop(); builder.createBranch(&blocks.head); + // Spec requires back edges to target header blocks, and every header block + // must dominate its merge block. Make a header block first to ensure these + // conditions are met. By definition, it will contain OpLoopMerge, followed + // by a block-ending branch. But we don't want to put any other body/test + // instructions in it, since the body/test may have arbitrary instructions, + // including merges of its own. + builder.setBuildPoint(&blocks.head); + builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone); if (node->testFirst() && node->getTest()) { - builder.setBuildPoint(&blocks.head); + spv::Block& test = builder.makeNewBlock(); + builder.createBranch(&test); + + builder.setBuildPoint(&test); 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.setBuildPoint(&blocks.body); @@ -1411,14 +1421,6 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn node->getTerminal()->traverse(this); builder.createBranch(&blocks.head); } else { - // Spec requires back edges to target header blocks, and every header - // block must dominate its merge block. Make a header block first to - // ensure these conditions are met. By definition, it will contain - // OpLoopMerge, followed by a block-ending branch. But we don't want to - // put any other body instructions in it, since the body may have - // arbitrary instructions, including merges of its own. - builder.setBuildPoint(&blocks.head); - builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone); builder.createBranch(&blocks.body); breakForLoop.push(true); diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out index 08c07a9e4..62da85f35 100755 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -8,66 +8,68 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 39 +// Id's are bound by 40 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 24 27 33 38 + EntryPoint Vertex 4 "main" 25 28 34 39 Source GLSL 130 Name 4 "main" Name 8 "i" - Name 24 "colorOut" - Name 27 "color" - Name 33 "gl_Position" - Name 38 "gl_VertexID" - Decorate 33(gl_Position) BuiltIn Position - Decorate 38(gl_VertexID) BuiltIn VertexId + Name 25 "colorOut" + Name 28 "color" + Name 34 "gl_Position" + Name 39 "gl_VertexID" + Decorate 34(gl_Position) BuiltIn Position + Decorate 39(gl_VertexID) BuiltIn VertexId 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 9: 6(int) Constant 1 - 15: 6(int) Constant 5 - 16: TypeBool - 18: TypeFloat 32 - 19: TypeVector 18(float) 4 - 20: TypeInt 32 0 - 21: 20(int) Constant 6 - 22: TypeArray 19(fvec4) 21 - 23: TypePointer Output 22 - 24(colorOut): 23(ptr) Variable Output - 26: TypePointer Input 19(fvec4) - 27(color): 26(ptr) Variable Input - 29: TypePointer Output 19(fvec4) - 33(gl_Position): 29(ptr) Variable Output - 34: 6(int) Constant 2 - 37: TypePointer Input 6(int) - 38(gl_VertexID): 37(ptr) Variable Input + 16: 6(int) Constant 5 + 17: TypeBool + 19: TypeFloat 32 + 20: TypeVector 19(float) 4 + 21: TypeInt 32 0 + 22: 21(int) Constant 6 + 23: TypeArray 20(fvec4) 22 + 24: TypePointer Output 23 + 25(colorOut): 24(ptr) Variable Output + 27: TypePointer Input 20(fvec4) + 28(color): 27(ptr) Variable Input + 30: TypePointer Output 20(fvec4) + 34(gl_Position): 30(ptr) Variable Output + 35: 6(int) Constant 2 + 38: TypePointer Input 6(int) + 39(gl_VertexID): 38(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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 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 + 26: 6(int) Load 8(i) + 29: 20(fvec4) Load 28(color) + 31: 30(ptr) AccessChain 25(colorOut) 26 + Store 31 29 Branch 13 13: Label - 31: 6(int) Load 8(i) - 32: 6(int) IAdd 31 9 - Store 8(i) 32 + 32: 6(int) Load 8(i) + 33: 6(int) IAdd 32 9 + Store 8(i) 33 Branch 10 12: Label - 35: 29(ptr) AccessChain 24(colorOut) 34 - 36: 19(fvec4) Load 35 - Store 33(gl_Position) 36 + 36: 30(ptr) AccessChain 25(colorOut) 35 + 37: 20(fvec4) Load 36 + Store 34(gl_Position) 37 Return FunctionEnd diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out index 33c613867..608ec6616 100644 --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -5,86 +5,88 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 47 +// Id's are bound by 48 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 45 46 + EntryPoint Vertex 4 "main" 46 47 Source ESSL 300 Name 4 "main" Name 8 "i" - Name 18 "A" - Name 26 "B" - Name 28 "C" - Name 35 "D" - Name 37 "E" - Name 38 "F" - Name 42 "G" - Name 45 "gl_VertexID" - Name 46 "gl_InstanceID" - Decorate 45(gl_VertexID) BuiltIn VertexId - Decorate 46(gl_InstanceID) BuiltIn InstanceId + Name 19 "A" + Name 27 "B" + Name 29 "C" + Name 36 "D" + Name 38 "E" + Name 39 "F" + Name 43 "G" + Name 46 "gl_VertexID" + Name 47 "gl_InstanceID" + Decorate 46(gl_VertexID) BuiltIn VertexId + Decorate 47(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: 6(int) Constant 2 - 30: 6(int) Constant 3 - 39: 6(int) Constant 12 - 43: 6(int) Constant 99 - 44: TypePointer Input 6(int) - 45(gl_VertexID): 44(ptr) Variable Input -46(gl_InstanceID): 44(ptr) Variable Input + 16: 6(int) Constant 10 + 17: TypeBool + 20: 6(int) Constant 1 + 22: 6(int) Constant 2 + 31: 6(int) Constant 3 + 40: 6(int) Constant 12 + 44: 6(int) Constant 99 + 45: TypePointer Input 6(int) + 46(gl_VertexID): 45(ptr) Variable Input +47(gl_InstanceID): 45(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function - 18(A): 7(ptr) Variable Function - 26(B): 7(ptr) Variable Function - 28(C): 7(ptr) Variable Function - 35(D): 7(ptr) Variable Function - 37(E): 7(ptr) Variable Function - 38(F): 7(ptr) Variable Function - 42(G): 7(ptr) Variable Function + 19(A): 7(ptr) Variable Function + 27(B): 7(ptr) Variable Function + 29(C): 7(ptr) Variable Function + 36(D): 7(ptr) Variable Function + 38(E): 7(ptr) Variable Function + 39(F): 7(ptr) Variable Function + 43(G): 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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 11: 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 - 24: Label - Store 26(B) 19 + Store 19(A) 20 + 21: 6(int) Load 8(i) + 23: 6(int) SMod 21 22 + 24: 17(bool) IEqual 23 9 + SelectionMerge 26 None + BranchConditional 24 25 26 + 25: Label + Store 27(B) 20 Branch 13 - 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 + 26: Label + 30: 6(int) Load 8(i) + 32: 6(int) SMod 30 31 + 33: 17(bool) IEqual 32 9 + SelectionMerge 35 None + BranchConditional 33 34 35 + 34: Label + Store 36(D) 20 Branch 12 - 34: Label - Store 38(F) 39 + 35: Label + Store 39(F) 40 Branch 13 13: Label - 40: 6(int) Load 8(i) - 41: 6(int) IAdd 40 19 - Store 8(i) 41 + 41: 6(int) Load 8(i) + 42: 6(int) IAdd 41 20 + Store 8(i) 42 Branch 10 12: Label - Store 42(G) 43 + Store 43(G) 44 Return FunctionEnd diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out index 231e3ac10..820dd5ec4 100644 --- a/Test/baseResults/spv.for-nobody.vert.out +++ b/Test/baseResults/spv.for-nobody.vert.out @@ -7,53 +7,55 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 27 +// Id's are bound by 28 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 22 25 26 + EntryPoint Vertex 4 "main" 23 26 27 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 + Name 23 "r" + Name 26 "gl_VertexID" + Name 27 "gl_InstanceID" + Decorate 23(r) Location 0 + Decorate 26(gl_VertexID) BuiltIn VertexId + Decorate 27(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 + 16: 6(int) Constant 10 + 17: TypeBool + 20: 6(int) Constant 1 + 22: TypePointer Output 6(int) + 23(r): 22(ptr) Variable Output + 25: TypePointer Input 6(int) + 26(gl_VertexID): 25(ptr) Variable Input +27(gl_InstanceID): 25(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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 11: Label Branch 13 13: Label - 18: 6(int) Load 8(i) - 20: 6(int) IAdd 18 19 - Store 8(i) 20 + 19: 6(int) Load 8(i) + 21: 6(int) IAdd 19 20 + Store 8(i) 21 Branch 10 12: Label - 23: 6(int) Load 8(i) - Store 22(r) 23 + 24: 6(int) Load 8(i) + Store 23(r) 24 Return FunctionEnd diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out index 570ee5bbc..3d090e5bb 100755 --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -5,50 +5,52 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 26 +// Id's are bound by 27 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 24 25 + EntryPoint Vertex 4 "main" 25 26 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 + Name 19 "j" + Name 25 "gl_VertexID" + Name 26 "gl_InstanceID" + 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 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 + 16: 6(int) Constant 10 + 17: TypeBool + 20: 6(int) Constant 12 + 22: 6(int) Constant 1 + 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 - 18(j): 7(ptr) Variable Function + 19(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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 11: Label - Store 18(j) 19 + Store 19(j) 20 Branch 13 13: Label - 20: 6(int) Load 8(i) - 22: 6(int) IAdd 20 21 - Store 8(i) 22 + 21: 6(int) Load 8(i) + 23: 6(int) IAdd 21 22 + Store 8(i) 23 Branch 10 12: Label Return diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index 95a795aac..9e68e6b2c 100755 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -5,30 +5,30 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 127 +// Id's are bound by 132 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 11 36 101 + EntryPoint Fragment 4 "main" 11 37 105 ExecutionMode 4 OriginLowerLeft Source GLSL 130 Name 4 "main" Name 9 "color" Name 11 "BaseColor" Name 15 "i" - Name 23 "Count" - Name 28 "bigColor" - Name 36 "gl_FragColor" - Name 39 "sum" - Name 41 "i" - Name 52 "v4" - Name 62 "i" - Name 69 "tv4" - Name 86 "r" - Name 92 "i" - Name 101 "f" - Name 114 "i" + Name 24 "Count" + Name 29 "bigColor" + Name 37 "gl_FragColor" + Name 40 "sum" + Name 42 "i" + Name 54 "v4" + Name 64 "i" + Name 72 "tv4" + Name 89 "r" + Name 95 "i" + Name 105 "f" + Name 118 "i" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -39,166 +39,176 @@ Linked fragment stage: 13: TypeInt 32 1 14: TypePointer Function 13(int) 16: 13(int) Constant 0 - 22: TypePointer UniformConstant 13(int) - 23(Count): 22(ptr) Variable UniformConstant - 25: TypeBool - 27: TypePointer UniformConstant 7(fvec4) - 28(bigColor): 27(ptr) Variable UniformConstant - 33: 13(int) Constant 1 - 35: TypePointer Output 7(fvec4) -36(gl_FragColor): 35(ptr) Variable Output - 38: TypePointer Function 6(float) - 40: 6(float) Constant 0 - 47: 13(int) Constant 4 - 49: TypeInt 32 0 - 50: TypeVector 49(int) 4 - 51: TypePointer UniformConstant 50(ivec4) - 52(v4): 51(ptr) Variable UniformConstant - 54: TypePointer UniformConstant 49(int) - 74: 49(int) Constant 4 - 87: TypeVector 6(float) 3 - 100: TypePointer Input 6(float) - 101(f): 100(ptr) Variable Input - 103: 49(int) Constant 3 - 120: 13(int) Constant 16 + 23: TypePointer UniformConstant 13(int) + 24(Count): 23(ptr) Variable UniformConstant + 26: TypeBool + 28: TypePointer UniformConstant 7(fvec4) + 29(bigColor): 28(ptr) Variable UniformConstant + 34: 13(int) Constant 1 + 36: TypePointer Output 7(fvec4) +37(gl_FragColor): 36(ptr) Variable Output + 39: TypePointer Function 6(float) + 41: 6(float) Constant 0 + 49: 13(int) Constant 4 + 51: TypeInt 32 0 + 52: TypeVector 51(int) 4 + 53: TypePointer UniformConstant 52(ivec4) + 54(v4): 53(ptr) Variable UniformConstant + 56: TypePointer UniformConstant 51(int) + 77: 51(int) Constant 4 + 90: TypeVector 6(float) 3 + 104: TypePointer Input 6(float) + 105(f): 104(ptr) Variable Input + 107: 51(int) Constant 3 + 125: 13(int) Constant 16 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function 15(i): 14(ptr) Variable Function - 39(sum): 38(ptr) Variable Function - 41(i): 14(ptr) Variable Function - 62(i): 14(ptr) Variable Function - 69(tv4): 8(ptr) Variable Function - 86(r): 8(ptr) Variable Function - 92(i): 14(ptr) Variable Function - 114(i): 14(ptr) Variable Function + 40(sum): 39(ptr) Variable Function + 42(i): 14(ptr) Variable Function + 64(i): 14(ptr) Variable Function + 72(tv4): 8(ptr) Variable Function + 89(r): 8(ptr) Variable Function + 95(i): 14(ptr) Variable Function + 118(i): 14(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Store 15(i) 16 Branch 17 17: 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 + Branch 21 + 21: Label + 22: 13(int) Load 15(i) + 25: 13(int) Load 24(Count) + 27: 26(bool) SLessThan 22 25 + BranchConditional 27 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 + 30: 7(fvec4) Load 29(bigColor) + 31: 7(fvec4) Load 9(color) + 32: 7(fvec4) FAdd 31 30 + Store 9(color) 32 Branch 20 20: Label - 32: 13(int) Load 15(i) - 34: 13(int) IAdd 32 33 - Store 15(i) 34 + 33: 13(int) Load 15(i) + 35: 13(int) IAdd 33 34 + Store 15(i) 35 Branch 17 19: Label - 37: 7(fvec4) Load 9(color) - Store 36(gl_FragColor) 37 - Store 39(sum) 40 - Store 41(i) 16 - Branch 42 - 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 - 57: 6(float) ConvertUToF 56 - 58: 6(float) Load 39(sum) - 59: 6(float) FAdd 58 57 - Store 39(sum) 59 - Branch 45 - 45: Label - 60: 13(int) Load 41(i) - 61: 13(int) IAdd 60 33 - Store 41(i) 61 - Branch 42 - 44: Label - Store 62(i) 16 - Branch 63 - 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 - 66: Label - 78: 13(int) Load 62(i) - 79: 13(int) IAdd 78 33 - Store 62(i) 79 - Branch 63 + 38: 7(fvec4) Load 9(color) + Store 37(gl_FragColor) 38 + Store 40(sum) 41 + Store 42(i) 16 + Branch 43 + 43: Label + LoopMerge 45 46 None + Branch 47 + 47: Label + 48: 13(int) Load 42(i) + 50: 26(bool) SLessThan 48 49 + BranchConditional 50 44 45 + 44: Label + 55: 13(int) Load 42(i) + 57: 56(ptr) AccessChain 54(v4) 55 + 58: 51(int) Load 57 + 59: 6(float) ConvertUToF 58 + 60: 6(float) Load 40(sum) + 61: 6(float) FAdd 60 59 + Store 40(sum) 61 + Branch 46 + 46: Label + 62: 13(int) Load 42(i) + 63: 13(int) IAdd 62 34 + Store 42(i) 63 + Branch 43 + 45: Label + Store 64(i) 16 + Branch 65 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 - 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 + LoopMerge 67 68 None + Branch 69 + 69: Label + 70: 13(int) Load 64(i) + 71: 26(bool) SLessThan 70 49 + BranchConditional 71 66 67 + 66: Label + 73: 13(int) Load 64(i) + 74: 13(int) Load 64(i) + 75: 56(ptr) AccessChain 54(v4) 74 + 76: 51(int) Load 75 + 78: 51(int) IMul 76 77 + 79: 6(float) ConvertUToF 78 + 80: 39(ptr) AccessChain 72(tv4) 73 + Store 80 79 + Branch 68 + 68: Label + 81: 13(int) Load 64(i) + 82: 13(int) IAdd 81 34 + Store 64(i) 82 + Branch 65 + 67: Label + 83: 6(float) Load 40(sum) + 84: 7(fvec4) CompositeConstruct 83 83 83 83 + 85: 7(fvec4) Load 72(tv4) + 86: 7(fvec4) FAdd 84 85 + 87: 7(fvec4) Load 37(gl_FragColor) + 88: 7(fvec4) FAdd 87 86 + Store 37(gl_FragColor) 88 + 91: 7(fvec4) Load 11(BaseColor) + 92: 90(fvec3) VectorShuffle 91 91 0 1 2 + 93: 7(fvec4) Load 89(r) + 94: 7(fvec4) VectorShuffle 93 92 4 5 6 3 + Store 89(r) 94 + Store 95(i) 16 + Branch 96 + 96: Label + LoopMerge 98 99 None + Branch 100 + 100: Label + 101: 13(int) Load 95(i) + 102: 13(int) Load 24(Count) + 103: 26(bool) SLessThan 101 102 + BranchConditional 103 97 98 + 97: Label + 106: 6(float) Load 105(f) + 108: 39(ptr) AccessChain 89(r) 107 + Store 108 106 + Branch 99 + 99: Label + 109: 13(int) Load 95(i) + 110: 13(int) IAdd 109 34 + Store 95(i) 110 Branch 96 - 96: Label - 105: 13(int) Load 92(i) - 106: 13(int) IAdd 105 33 - Store 92(i) 106 - Branch 93 - 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 - 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 - 118: Label - 125: 13(int) Load 114(i) - 126: 13(int) IAdd 125 47 - Store 114(i) 126 - Branch 115 - 117: Label + 98: Label + 111: 7(fvec4) Load 89(r) + 112: 90(fvec3) VectorShuffle 111 111 0 1 2 + 113: 7(fvec4) Load 37(gl_FragColor) + 114: 90(fvec3) VectorShuffle 113 113 0 1 2 + 115: 90(fvec3) FAdd 114 112 + 116: 7(fvec4) Load 37(gl_FragColor) + 117: 7(fvec4) VectorShuffle 116 115 4 5 6 3 + Store 37(gl_FragColor) 117 + Store 118(i) 16 + Branch 119 + 119: Label + LoopMerge 121 122 None + Branch 123 + 123: Label + 124: 13(int) Load 118(i) + 126: 26(bool) SLessThan 124 125 + BranchConditional 126 120 121 + 120: Label + 127: 6(float) Load 105(f) + 128: 7(fvec4) Load 37(gl_FragColor) + 129: 7(fvec4) VectorTimesScalar 128 127 + Store 37(gl_FragColor) 129 + Branch 122 + 122: Label + 130: 13(int) Load 118(i) + 131: 13(int) IAdd 130 49 + Store 118(i) 131 + Branch 119 + 121: Label Return FunctionEnd diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index e419231e1..1b5ef9249 100755 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -8,12 +8,12 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 137 +// Id's are bound by 138 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 40 97 107 + EntryPoint Fragment 4 "main" 40 98 108 ExecutionMode 4 OriginLowerLeft Source GLSL 130 Name 4 "main" @@ -38,14 +38,14 @@ Linked fragment stage: Name 68 "x" Name 70 "localArray" Name 75 "i" - Name 83 "a" - Name 89 "condition" - Name 97 "color" - Name 107 "gl_FragColor" - Name 127 "samp2D" - Name 133 "foo" - Name 134 "foo2" - Name 136 "uFloatArray" + Name 84 "a" + Name 90 "condition" + Name 98 "color" + Name 108 "gl_FragColor" + Name 128 "samp2D" + Name 134 "foo" + Name 135 "foo2" + Name 137 "uFloatArray" 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -80,26 +80,26 @@ Linked fragment stage: 48: TypePointer Function 47 52: TypePointer Function 6(int) 69: 6(int) Constant 5 - 81: 6(int) Constant 16 - 85: 7(float) Constant 0 - 89(condition): 20(ptr) Variable UniformConstant - 95: 6(int) Constant 3 - 96: TypePointer Input 9(fvec4) - 97(color): 96(ptr) Variable Input - 99: TypePointer Function 9(fvec4) - 101: 32(int) Constant 1 - 104: 32(int) Constant 2 - 106: TypePointer Output 9(fvec4) -107(gl_FragColor): 106(ptr) Variable Output - 124: TypeImage 7(float) 2D sampled format:Unknown - 125: TypeSampledImage 124 - 126: TypePointer UniformConstant 125 - 127(samp2D): 126(ptr) Variable UniformConstant - 132: TypePointer UniformConstant 8(s1) - 133(foo): 132(ptr) Variable UniformConstant - 134(foo2): 17(ptr) Variable UniformConstant - 135: TypePointer UniformConstant 34 -136(uFloatArray): 135(ptr) Variable UniformConstant + 82: 6(int) Constant 16 + 86: 7(float) Constant 0 + 90(condition): 20(ptr) Variable UniformConstant + 96: 6(int) Constant 3 + 97: TypePointer Input 9(fvec4) + 98(color): 97(ptr) Variable Input + 100: TypePointer Function 9(fvec4) + 102: 32(int) Constant 1 + 105: 32(int) Constant 2 + 107: TypePointer Output 9(fvec4) +108(gl_FragColor): 107(ptr) Variable Output + 125: TypeImage 7(float) 2D sampled format:Unknown + 126: TypeSampledImage 125 + 127: TypePointer UniformConstant 126 + 128(samp2D): 127(ptr) Variable UniformConstant + 133: TypePointer UniformConstant 8(s1) + 134(foo): 133(ptr) Variable UniformConstant + 135(foo2): 17(ptr) Variable UniformConstant + 136: TypePointer UniformConstant 34 +137(uFloatArray): 136(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 12(locals2): 11(ptr) Variable Function @@ -108,7 +108,7 @@ Linked fragment stage: 68(x): 52(ptr) Variable Function 70(localArray): 35(ptr) Variable Function 75(i): 52(ptr) Variable Function - 83(a): 35(ptr) Variable Function + 84(a): 35(ptr) Variable Function 18: 17(ptr) AccessChain 15(foo3) 16 19: 10(s2) Load 18 Store 12(locals2) 19 @@ -161,57 +161,59 @@ Linked fragment stage: Store 75(i) 16 Branch 76 76: Label - 80: 6(int) Load 75(i) - 82: 23(bool) SLessThan 80 81 LoopMerge 78 79 None - BranchConditional 82 77 78 + Branch 80 + 80: Label + 81: 6(int) Load 75(i) + 83: 23(bool) SLessThan 81 82 + BranchConditional 83 77 78 77: Label - 84: 6(int) Load 75(i) - 86: 30(ptr) AccessChain 83(a) 84 - Store 86 85 + 85: 6(int) Load 75(i) + 87: 30(ptr) AccessChain 84(a) 85 + Store 87 86 Branch 79 79: Label - 87: 6(int) Load 75(i) - 88: 6(int) IAdd 87 28 - Store 75(i) 88 + 88: 6(int) Load 75(i) + 89: 6(int) IAdd 88 28 + Store 75(i) 89 Branch 76 78: Label - 90: 6(int) Load 89(condition) - 91: 23(bool) IEqual 90 28 - SelectionMerge 93 None - BranchConditional 91 92 93 - 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 + 91: 6(int) Load 90(condition) + 92: 23(bool) IEqual 91 28 + SelectionMerge 94 None + BranchConditional 92 93 94 + 93: Label + 95: 34 Load 70(localArray) + Store 84(a) 95 + Branch 94 + 94: Label + 99: 9(fvec4) Load 98(color) + 101: 100(ptr) AccessChain 12(locals2) 96 + Store 101 99 + 103: 42(ptr) AccessChain 40(coord) 102 + 104: 7(float) Load 103 + 106: 30(ptr) AccessChain 12(locals2) 96 105 + Store 106 104 + 109: 100(ptr) AccessChain 12(locals2) 96 + 110: 9(fvec4) Load 109 + 111: 30(ptr) AccessChain 36(localFArray) 37 + 112: 7(float) Load 111 + 113: 30(ptr) AccessChain 12(locals2) 27 28 + 114: 7(float) Load 113 + 115: 7(float) FAdd 112 114 + 116: 6(int) Load 68(x) + 117: 30(ptr) AccessChain 70(localArray) 116 + 118: 7(float) Load 117 + 119: 7(float) FAdd 115 118 + 120: 6(int) Load 68(x) + 121: 30(ptr) AccessChain 84(a) 120 + 122: 7(float) Load 121 + 123: 7(float) FAdd 119 122 + 124: 9(fvec4) VectorTimesScalar 110 123 + 129: 126 Load 128(samp2D) + 130: 38(fvec2) Load 40(coord) + 131: 9(fvec4) ImageSampleImplicitLod 129 130 + 132: 9(fvec4) FMul 124 131 + Store 108(gl_FragColor) 132 Return FunctionEnd diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index 98d2878bb..3cf68a06f 100755 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -7,70 +7,70 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 720 +// Id's are bound by 743 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 11 597 + EntryPoint Fragment 4 "main" 11 616 ExecutionMode 4 OriginLowerLeft Source GLSL 130 Name 4 "main" Name 9 "color" Name 11 "BaseColor" - Name 52 "d" - Name 56 "bigColor" - Name 69 "bigColor1_1" - Name 102 "d2" - Name 110 "d3" - Name 114 "bigColor1_2" - Name 126 "bigColor1_3" - Name 132 "d4" - Name 143 "i" - Name 151 "Count" - Name 154 "bigColor2" - 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" + Name 54 "d" + Name 58 "bigColor" + Name 72 "bigColor1_1" + Name 107 "d2" + Name 115 "d3" + Name 119 "bigColor1_2" + Name 132 "bigColor1_3" + Name 138 "d4" + Name 149 "i" + Name 158 "Count" + Name 161 "bigColor2" + Name 172 "bigColor3" + Name 180 "i" + Name 196 "i" + Name 232 "i" + Name 255 "i" + Name 280 "i" + Name 309 "bigColor4" + Name 345 "bigColor5" + Name 351 "d5" + Name 367 "d6" + Name 381 "bigColor6" + Name 419 "d7" + Name 451 "bigColor7" + Name 470 "d8" + Name 513 "d9" + Name 545 "d10" + Name 553 "d11" + Name 563 "d12" + Name 589 "bigColor8" + Name 616 "gl_FragColor" + Name 625 "d14" + Name 630 "d15" + Name 650 "d16" + Name 688 "d18" + Name 699 "d17" + Name 726 "d13" + Name 727 "d19" + Name 728 "d20" + Name 729 "d21" + Name 730 "d22" + Name 731 "d23" + Name 732 "d24" + Name 733 "d25" + Name 734 "d26" + Name 735 "d27" + Name 736 "d28" + Name 737 "d29" + Name 738 "d30" + Name 739 "d31" + Name 740 "d32" + Name 741 "d33" + Name 742 "d34" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -78,1021 +78,1067 @@ Linked fragment stage: 8: TypePointer Function 7(fvec4) 10: TypePointer Input 7(fvec4) 11(BaseColor): 10(ptr) Variable Input - 17: TypeBool - 18: 17(bool) ConstantTrue - 19: TypeInt 32 0 - 20: 19(int) Constant 0 - 21: TypePointer Function 6(float) - 24: 6(float) Constant 1051260355 - 28: 7(fvec4) ConstantComposite 24 24 24 24 - 34: 6(float) Constant 1059648963 - 38: 7(fvec4) ConstantComposite 34 34 34 34 - 51: TypePointer UniformConstant 6(float) - 52(d): 51(ptr) Variable UniformConstant - 55: TypePointer UniformConstant 7(fvec4) - 56(bigColor): 55(ptr) Variable UniformConstant - 64: 19(int) Constant 2 - 69(bigColor1_1): 55(ptr) Variable UniformConstant - 73: 19(int) Constant 3 - 90: 6(float) Constant 1109917696 - 93: 6(float) Constant 1065353216 - 102(d2): 51(ptr) Variable UniformConstant - 107: 19(int) Constant 1 - 110(d3): 51(ptr) Variable UniformConstant -114(bigColor1_2): 55(ptr) Variable UniformConstant -126(bigColor1_3): 55(ptr) Variable UniformConstant - 132(d4): 51(ptr) Variable UniformConstant - 141: TypeInt 32 1 - 142: TypePointer Function 141(int) - 144: 141(int) Constant 0 - 150: TypePointer UniformConstant 141(int) - 151(Count): 150(ptr) Variable UniformConstant - 154(bigColor2): 55(ptr) Variable UniformConstant - 159: 141(int) Constant 1 - 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 + 18: TypeBool + 19: 18(bool) ConstantTrue + 20: TypeInt 32 0 + 21: 20(int) Constant 0 + 22: TypePointer Function 6(float) + 25: 6(float) Constant 1051260355 + 29: 7(fvec4) ConstantComposite 25 25 25 25 + 35: 6(float) Constant 1059648963 + 39: 7(fvec4) ConstantComposite 35 35 35 35 + 53: TypePointer UniformConstant 6(float) + 54(d): 53(ptr) Variable UniformConstant + 57: TypePointer UniformConstant 7(fvec4) + 58(bigColor): 57(ptr) Variable UniformConstant + 67: 20(int) Constant 2 + 72(bigColor1_1): 57(ptr) Variable UniformConstant + 76: 20(int) Constant 3 + 94: 6(float) Constant 1109917696 + 97: 6(float) Constant 1065353216 + 107(d2): 53(ptr) Variable UniformConstant + 112: 20(int) Constant 1 + 115(d3): 53(ptr) Variable UniformConstant +119(bigColor1_2): 57(ptr) Variable UniformConstant +132(bigColor1_3): 57(ptr) Variable UniformConstant + 138(d4): 53(ptr) Variable UniformConstant + 147: TypeInt 32 1 + 148: TypePointer Function 147(int) + 150: 147(int) Constant 0 + 157: TypePointer UniformConstant 147(int) + 158(Count): 157(ptr) Variable UniformConstant + 161(bigColor2): 57(ptr) Variable UniformConstant + 166: 147(int) Constant 1 + 172(bigColor3): 57(ptr) Variable UniformConstant + 187: 147(int) Constant 42 + 203: 147(int) Constant 100 + 207: 6(float) Constant 1101004800 + 239: 147(int) Constant 120 + 309(bigColor4): 57(ptr) Variable UniformConstant + 345(bigColor5): 57(ptr) Variable UniformConstant + 351(d5): 53(ptr) Variable UniformConstant + 367(d6): 53(ptr) Variable UniformConstant + 381(bigColor6): 57(ptr) Variable UniformConstant + 419(d7): 53(ptr) Variable UniformConstant + 446: 6(float) Constant 0 + 451(bigColor7): 57(ptr) Variable UniformConstant + 470(d8): 53(ptr) Variable UniformConstant + 487: 6(float) Constant 1073741824 + 513(d9): 53(ptr) Variable UniformConstant + 529: 6(float) Constant 1084227584 + 545(d10): 53(ptr) Variable UniformConstant + 553(d11): 53(ptr) Variable UniformConstant + 563(d12): 53(ptr) Variable UniformConstant + 587: 6(float) Constant 1092616192 + 589(bigColor8): 57(ptr) Variable UniformConstant + 615: TypePointer Output 7(fvec4) +616(gl_FragColor): 615(ptr) Variable Output + 625(d14): 53(ptr) Variable UniformConstant + 630(d15): 53(ptr) Variable UniformConstant + 650(d16): 53(ptr) Variable UniformConstant + 688(d18): 53(ptr) Variable UniformConstant + 699(d17): 53(ptr) Variable UniformConstant + 726(d13): 53(ptr) Variable UniformConstant + 727(d19): 53(ptr) Variable UniformConstant + 728(d20): 53(ptr) Variable UniformConstant + 729(d21): 53(ptr) Variable UniformConstant + 730(d22): 53(ptr) Variable UniformConstant + 731(d23): 53(ptr) Variable UniformConstant + 732(d24): 53(ptr) Variable UniformConstant + 733(d25): 53(ptr) Variable UniformConstant + 734(d26): 53(ptr) Variable UniformConstant + 735(d27): 53(ptr) Variable UniformConstant + 736(d28): 53(ptr) Variable UniformConstant + 737(d29): 53(ptr) Variable UniformConstant + 738(d30): 53(ptr) Variable UniformConstant + 739(d31): 53(ptr) Variable UniformConstant + 740(d32): 53(ptr) Variable UniformConstant + 741(d33): 53(ptr) Variable UniformConstant + 742(d34): 53(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function - 143(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 + 149(i): 148(ptr) Variable Function + 180(i): 148(ptr) Variable Function + 196(i): 148(ptr) Variable Function + 232(i): 148(ptr) Variable Function + 255(i): 148(ptr) Variable Function + 280(i): 148(ptr) Variable Function 12: 7(fvec4) Load 11(BaseColor) Store 9(color) 12 Branch 13 13: Label LoopMerge 15 16 None - BranchConditional 18 14 15 + Branch 17 + 17: Label + BranchConditional 19 14 15 14: 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 - 26: Label - 29: 7(fvec4) Load 9(color) - 30: 7(fvec4) FAdd 29 28 - Store 9(color) 30 + 23: 22(ptr) AccessChain 9(color) 21 + 24: 6(float) Load 23 + 26: 18(bool) FOrdLessThan 24 25 + SelectionMerge 28 None + BranchConditional 26 27 28 + 27: Label + 30: 7(fvec4) Load 9(color) + 31: 7(fvec4) FAdd 30 29 + Store 9(color) 31 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 + 28: Label + 33: 22(ptr) AccessChain 9(color) 21 + 34: 6(float) Load 33 + 36: 18(bool) FOrdLessThan 34 35 + SelectionMerge 38 None + BranchConditional 36 37 38 + 37: Label + 40: 7(fvec4) Load 9(color) + 41: 7(fvec4) FAdd 40 39 + Store 9(color) 41 Branch 15 - 37: Label - 42: 7(fvec4) Load 9(color) - 43: 7(fvec4) FAdd 42 28 - Store 9(color) 43 + 38: Label + 43: 7(fvec4) Load 9(color) + 44: 7(fvec4) FAdd 43 29 + Store 9(color) 44 Branch 15 16: Label Branch 13 15: Label - Branch 45 - 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 48 - 48: Label - Branch 45 - 47: Label - Branch 60 - 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 - 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 - 63: Label - Branch 60 + Branch 46 + 46: Label + LoopMerge 48 49 None + Branch 50 + 50: Label + 51: 22(ptr) AccessChain 9(color) 21 + 52: 6(float) Load 51 + 55: 6(float) Load 54(d) + 56: 18(bool) FOrdLessThan 52 55 + BranchConditional 56 47 48 + 47: Label + 59: 7(fvec4) Load 58(bigColor) + 60: 7(fvec4) Load 9(color) + 61: 7(fvec4) FAdd 60 59 + Store 9(color) 61 + Branch 49 + 49: Label + Branch 46 + 48: Label + Branch 62 62: Label - Branch 84 - 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 + LoopMerge 64 65 None + Branch 66 + 66: Label + 68: 22(ptr) AccessChain 9(color) 67 + 69: 6(float) Load 68 + 70: 6(float) Load 54(d) + 71: 18(bool) FOrdLessThan 69 70 + BranchConditional 71 63 64 + 63: Label + 73: 7(fvec4) Load 72(bigColor1_1) + 74: 7(fvec4) Load 9(color) + 75: 7(fvec4) FAdd 74 73 + Store 9(color) 75 + 77: 22(ptr) AccessChain 9(color) 76 + 78: 6(float) Load 77 + 79: 6(float) Load 54(d) + 80: 18(bool) FOrdLessThan 78 79 + SelectionMerge 82 None + BranchConditional 80 81 82 + 81: Label + Branch 65 + 82: Label + 84: 7(fvec4) Load 72(bigColor1_1) + 85: 7(fvec4) Load 9(color) + 86: 7(fvec4) FAdd 85 84 + Store 9(color) 86 + Branch 65 + 65: Label + Branch 62 + 64: Label + Branch 87 + 87: Label + LoopMerge 89 90 None + Branch 91 + 91: Label + 92: 22(ptr) AccessChain 9(color) 21 + 93: 6(float) Load 92 + 95: 18(bool) FOrdLessThan 93 94 + BranchConditional 95 88 89 + 88: Label + 96: 7(fvec4) Load 9(color) + 98: 7(fvec4) CompositeConstruct 97 97 97 97 + 99: 7(fvec4) FAdd 96 98 + Store 9(color) 99 + Branch 90 + 90: Label Branch 87 - 87: Label - Branch 84 - 86: Label - Branch 96 - 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 - 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 - 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 - 99: Label - Branch 96 - 98: Label - Branch 118 - 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 - 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 - 121: Label - Branch 118 - 120: Label - Store 143(i) 144 - Branch 145 - 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 - 148: Label - 158: 141(int) Load 143(i) - 160: 141(int) IAdd 158 159 - Store 143(i) 160 - Branch 145 - 147: Label - Branch 161 - 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 - 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 - 163: Label - Store 173(i) 144 - Branch 174 - 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 - 177: Label - 186: 141(int) Load 173(i) - 187: 141(int) IAdd 186 159 - Store 173(i) 187 - Branch 174 - 176: Label - Store 188(i) 144 - Branch 189 - 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 - 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 - 192: Label - 221: 141(int) Load 188(i) - 222: 141(int) IAdd 221 159 - Store 188(i) 222 - Branch 189 - 191: Label - Store 223(i) 144 - Branch 224 - 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 - 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 - 227: Label - 243: 141(int) Load 223(i) - 244: 141(int) IAdd 243 159 - Store 223(i) 244 - Branch 224 - 226: Label - Store 245(i) 144 - Branch 246 - 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 - 261: Label - Branch 249 - 262: Label - 264: 21(ptr) AccessChain 9(color) 73 + 89: Label + Branch 100 + 100: Label + LoopMerge 102 103 None + Branch 104 + 104: Label + 105: 22(ptr) AccessChain 9(color) 76 + 106: 6(float) Load 105 + 108: 6(float) Load 107(d2) + 109: 18(bool) FOrdLessThan 106 108 + SelectionMerge 111 None + BranchConditional 109 110 111 + 110: Label + 113: 22(ptr) AccessChain 9(color) 112 + 114: 6(float) Load 113 + 116: 6(float) Load 115(d3) + 117: 18(bool) FOrdLessThan 114 116 + Branch 111 + 111: Label + 118: 18(bool) Phi 109 104 117 110 + BranchConditional 118 101 102 + 101: Label + 120: 7(fvec4) Load 119(bigColor1_2) + 121: 7(fvec4) Load 9(color) + 122: 7(fvec4) FAdd 121 120 + Store 9(color) 122 + Branch 103 + 103: Label + Branch 100 + 102: Label + Branch 123 + 123: Label + LoopMerge 125 126 None + Branch 127 + 127: Label + 128: 22(ptr) AccessChain 9(color) 67 + 129: 6(float) Load 128 + 130: 6(float) Load 115(d3) + 131: 18(bool) FOrdLessThan 129 130 + BranchConditional 131 124 125 + 124: Label + 133: 7(fvec4) Load 132(bigColor1_3) + 134: 7(fvec4) Load 9(color) + 135: 7(fvec4) FAdd 134 133 + Store 9(color) 135 + 136: 22(ptr) AccessChain 9(color) 112 + 137: 6(float) Load 136 + 139: 6(float) Load 138(d4) + 140: 18(bool) FOrdLessThan 137 139 + SelectionMerge 142 None + BranchConditional 140 141 142 + 141: Label + Branch 125 + 142: Label + 144: 7(fvec4) Load 132(bigColor1_3) + 145: 7(fvec4) Load 9(color) + 146: 7(fvec4) FAdd 145 144 + Store 9(color) 146 + Branch 126 + 126: Label + Branch 123 + 125: Label + Store 149(i) 150 + Branch 151 + 151: Label + LoopMerge 153 154 None + Branch 155 + 155: Label + 156: 147(int) Load 149(i) + 159: 147(int) Load 158(Count) + 160: 18(bool) SLessThan 156 159 + BranchConditional 160 152 153 + 152: Label + 162: 7(fvec4) Load 161(bigColor2) + 163: 7(fvec4) Load 9(color) + 164: 7(fvec4) FAdd 163 162 + Store 9(color) 164 + Branch 154 + 154: Label + 165: 147(int) Load 149(i) + 167: 147(int) IAdd 165 166 + Store 149(i) 167 + Branch 151 + 153: Label + Branch 168 + 168: Label + LoopMerge 170 171 None + Branch 169 + 169: Label + 173: 7(fvec4) Load 172(bigColor3) + 174: 7(fvec4) Load 9(color) + 175: 7(fvec4) FAdd 174 173 + Store 9(color) 175 + Branch 171 + 171: Label + 176: 22(ptr) AccessChain 9(color) 21 + 177: 6(float) Load 176 + 178: 6(float) Load 107(d2) + 179: 18(bool) FOrdLessThan 177 178 + BranchConditional 179 168 170 + 170: Label + Store 180(i) 150 + Branch 181 + 181: Label + LoopMerge 183 184 None + Branch 185 + 185: Label + 186: 147(int) Load 180(i) + 188: 18(bool) SLessThan 186 187 + BranchConditional 188 182 183 + 182: Label + 189: 6(float) Load 115(d3) + 190: 22(ptr) AccessChain 9(color) 67 + 191: 6(float) Load 190 + 192: 6(float) FAdd 191 189 + 193: 22(ptr) AccessChain 9(color) 67 + Store 193 192 + Branch 184 + 184: Label + 194: 147(int) Load 180(i) + 195: 147(int) IAdd 194 166 + Store 180(i) 195 + Branch 181 + 183: Label + Store 196(i) 150 + Branch 197 + 197: Label + LoopMerge 199 200 None + Branch 201 + 201: Label + 202: 147(int) Load 196(i) + 204: 18(bool) SLessThan 202 203 + BranchConditional 204 198 199 + 198: Label + 205: 22(ptr) AccessChain 9(color) 67 + 206: 6(float) Load 205 + 208: 18(bool) FOrdLessThan 206 207 + SelectionMerge 210 None + BranchConditional 208 209 214 + 209: Label + 211: 22(ptr) AccessChain 9(color) 21 + 212: 6(float) Load 211 + 213: 6(float) FAdd 212 97 + Store 211 213 + Branch 210 + 214: Label + 215: 22(ptr) AccessChain 9(color) 112 + 216: 6(float) Load 215 + 217: 6(float) FAdd 216 97 + Store 215 217 + Branch 210 + 210: Label + 218: 22(ptr) AccessChain 9(color) 76 + 219: 6(float) Load 218 + 220: 18(bool) FOrdLessThan 219 207 + SelectionMerge 222 None + BranchConditional 220 221 222 + 221: Label + 223: 22(ptr) AccessChain 9(color) 67 + 224: 6(float) Load 223 + 225: 22(ptr) AccessChain 9(color) 112 + 226: 6(float) Load 225 + 227: 18(bool) FOrdGreaterThan 224 226 + SelectionMerge 229 None + BranchConditional 227 228 229 + 228: Label + Branch 229 + 229: Label + Branch 222 + 222: Label + Branch 200 + 200: Label + 230: 147(int) Load 196(i) + 231: 147(int) IAdd 230 166 + Store 196(i) 231 + Branch 197 + 199: Label + Store 232(i) 150 + Branch 233 + 233: Label + LoopMerge 235 236 None + Branch 237 + 237: Label + 238: 147(int) Load 232(i) + 240: 18(bool) SLessThan 238 239 + BranchConditional 240 234 235 + 234: Label + 241: 22(ptr) AccessChain 9(color) 67 + 242: 6(float) Load 241 + 243: 18(bool) FOrdLessThan 242 207 + SelectionMerge 245 None + BranchConditional 243 244 249 + 244: Label + 246: 22(ptr) AccessChain 9(color) 21 + 247: 6(float) Load 246 + 248: 6(float) FAdd 247 97 + Store 246 248 + Branch 245 + 249: Label + 250: 22(ptr) AccessChain 9(color) 112 + 251: 6(float) Load 250 + 252: 6(float) FAdd 251 97 + Store 250 252 + Branch 245 + 245: Label + Branch 236 + 236: Label + 253: 147(int) Load 232(i) + 254: 147(int) IAdd 253 166 + Store 232(i) 254 + Branch 233 + 235: Label + Store 255(i) 150 + Branch 256 + 256: Label + LoopMerge 258 259 None + Branch 260 + 260: Label + 261: 147(int) Load 255(i) + 262: 18(bool) SLessThan 261 187 + BranchConditional 262 257 258 + 257: Label + 263: 6(float) Load 115(d3) + 264: 22(ptr) AccessChain 9(color) 67 265: 6(float) Load 264 - 266: 6(float) FAdd 265 93 - Store 264 266 - Branch 249 - 249: Label - 267: 141(int) Load 245(i) - 268: 141(int) IAdd 267 159 - Store 245(i) 268 - Branch 246 - 248: Label - Store 269(i) 144 - Branch 270 - 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 - 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 + 266: 6(float) FAdd 265 263 + 267: 22(ptr) AccessChain 9(color) 67 + Store 267 266 + 268: 22(ptr) AccessChain 9(color) 21 + 269: 6(float) Load 268 + 270: 6(float) Load 138(d4) + 271: 18(bool) FOrdLessThan 269 270 + SelectionMerge 273 None + BranchConditional 271 272 273 + 272: Label + Branch 259 273: Label - 291: 141(int) Load 269(i) - 292: 141(int) IAdd 291 159 - Store 269(i) 292 - Branch 270 - 272: Label - Branch 293 - 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 - 305: Label - Branch 296 + 275: 22(ptr) AccessChain 9(color) 76 + 276: 6(float) Load 275 + 277: 6(float) FAdd 276 97 + Store 275 277 + Branch 259 + 259: Label + 278: 147(int) Load 255(i) + 279: 147(int) IAdd 278 166 + Store 255(i) 279 + Branch 256 + 258: Label + Store 280(i) 150 + Branch 281 + 281: Label + LoopMerge 283 284 None + Branch 285 + 285: Label + 286: 147(int) Load 280(i) + 287: 18(bool) SLessThan 286 187 + BranchConditional 287 282 283 + 282: Label + 288: 6(float) Load 115(d3) + 289: 22(ptr) AccessChain 9(color) 67 + 290: 6(float) Load 289 + 291: 6(float) FAdd 290 288 + 292: 22(ptr) AccessChain 9(color) 67 + Store 292 291 + 293: 22(ptr) AccessChain 9(color) 21 + 294: 6(float) Load 293 + 295: 6(float) Load 138(d4) + 296: 18(bool) FOrdLessThan 294 295 + SelectionMerge 298 None + BranchConditional 296 297 298 + 297: Label + Branch 283 + 298: Label + 300: 22(ptr) AccessChain 9(color) 76 + 301: 6(float) Load 300 + 302: 6(float) FAdd 301 97 + Store 300 302 + Branch 284 + 284: Label + 303: 147(int) Load 280(i) + 304: 147(int) IAdd 303 166 + Store 280(i) 304 + Branch 281 + 283: Label + Branch 305 + 305: Label + LoopMerge 307 308 None + Branch 306 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 - 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 - 295: Label - Branch 329 - 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 + 310: 7(fvec4) Load 309(bigColor4) + 311: 7(fvec4) Load 9(color) + 312: 7(fvec4) FAdd 311 310 + Store 9(color) 312 + 313: 22(ptr) AccessChain 9(color) 21 + 314: 6(float) Load 313 + 315: 6(float) Load 138(d4) + 316: 18(bool) FOrdLessThan 314 315 + SelectionMerge 318 None + BranchConditional 316 317 318 + 317: Label + Branch 308 + 318: Label + 320: 22(ptr) AccessChain 9(color) 112 + 321: 6(float) Load 320 + 322: 6(float) Load 138(d4) + 323: 18(bool) FOrdLessThan 321 322 + SelectionMerge 325 None + BranchConditional 323 324 331 + 324: Label + 326: 6(float) Load 138(d4) + 327: 22(ptr) AccessChain 9(color) 112 + 328: 6(float) Load 327 + 329: 6(float) FAdd 328 326 + 330: 22(ptr) AccessChain 9(color) 112 + Store 330 329 + Branch 325 + 331: Label + 332: 6(float) Load 138(d4) + 333: 22(ptr) AccessChain 9(color) 21 + 334: 6(float) Load 333 + 335: 6(float) FAdd 334 332 + 336: 22(ptr) AccessChain 9(color) 21 + Store 336 335 + Branch 325 + 325: Label + Branch 308 + 308: Label + 337: 22(ptr) AccessChain 9(color) 67 338: 6(float) Load 337 - 340: 6(float) Load 339(d5) - 341: 17(bool) FOrdLessThan 338 340 - SelectionMerge 343 None - BranchConditional 341 342 343 - 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 - 332: Label - 349: 21(ptr) AccessChain 9(color) 20 + 339: 6(float) Load 138(d4) + 340: 18(bool) FOrdLessThan 338 339 + BranchConditional 340 305 307 + 307: Label + Branch 341 + 341: Label + LoopMerge 343 344 None + Branch 342 + 342: Label + 346: 7(fvec4) Load 345(bigColor5) + 347: 7(fvec4) Load 9(color) + 348: 7(fvec4) FAdd 347 346 + Store 9(color) 348 + 349: 22(ptr) AccessChain 9(color) 112 350: 6(float) Load 349 - 351: 6(float) Load 339(d5) - 352: 17(bool) FOrdLessThan 350 351 - BranchConditional 352 329 331 - 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 - 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 - 363: Label - Branch 360 - 362: Label - Branch 359 + 352: 6(float) Load 351(d5) + 353: 18(bool) FOrdLessThan 350 352 + SelectionMerge 355 None + BranchConditional 353 354 355 + 354: Label + 356: 6(float) Load 351(d5) + 357: 22(ptr) AccessChain 9(color) 112 + 358: 6(float) Load 357 + 359: 6(float) FAdd 358 356 + 360: 22(ptr) AccessChain 9(color) 112 + Store 360 359 + Branch 355 + 355: Label + Branch 344 + 344: Label + 361: 22(ptr) AccessChain 9(color) 21 + 362: 6(float) Load 361 + 363: 6(float) Load 351(d5) + 364: 18(bool) FOrdLessThan 362 363 + BranchConditional 364 341 343 + 343: Label + 365: 22(ptr) AccessChain 9(color) 21 + 366: 6(float) Load 365 + 368: 6(float) Load 367(d6) + 369: 18(bool) FOrdLessThan 366 368 + SelectionMerge 371 None + BranchConditional 369 370 385 + 370: Label + Branch 372 372: Label - Branch 373 - 373: Label - 377: 21(ptr) AccessChain 9(color) 64 + LoopMerge 374 375 None + Branch 376 + 376: Label + 377: 22(ptr) AccessChain 9(color) 112 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 - 376: Label - Branch 373 - 375: Label - Branch 359 - 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 - 407: Label - Branch 395 - 408: Label - Branch 396 - 396: Label - Branch 393 - 395: Label - Branch 392 - 410: Label + 379: 6(float) Load 367(d6) + 380: 18(bool) FOrdLessThan 378 379 + BranchConditional 380 373 374 + 373: Label + 382: 7(fvec4) Load 381(bigColor6) + 383: 7(fvec4) Load 9(color) + 384: 7(fvec4) FAdd 383 382 + Store 9(color) 384 + Branch 375 + 375: Label + Branch 372 + 374: Label + Branch 371 + 385: Label + Branch 386 + 386: Label + LoopMerge 388 389 None + Branch 390 + 390: Label + 391: 22(ptr) AccessChain 9(color) 67 + 392: 6(float) Load 391 + 393: 6(float) Load 367(d6) + 394: 18(bool) FOrdLessThan 392 393 + BranchConditional 394 387 388 + 387: Label + 395: 53(ptr) AccessChain 381(bigColor6) 67 + 396: 6(float) Load 395 + 397: 22(ptr) AccessChain 9(color) 67 + 398: 6(float) Load 397 + 399: 6(float) FAdd 398 396 + 400: 22(ptr) AccessChain 9(color) 67 + Store 400 399 + Branch 389 + 389: Label + Branch 386 + 388: Label + Branch 371 + 371: Label + 401: 22(ptr) AccessChain 9(color) 21 + 402: 6(float) Load 401 + 403: 6(float) Load 367(d6) + 404: 18(bool) FOrdLessThan 402 403 + SelectionMerge 406 None + BranchConditional 404 405 425 + 405: Label + Branch 407 + 407: Label + LoopMerge 409 410 None 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 - 414: Label - Branch 411 - 413: Label - Branch 392 - 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 - 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 + 412: 22(ptr) AccessChain 9(color) 112 + 413: 6(float) Load 412 + 414: 6(float) Load 367(d6) + 415: 18(bool) FOrdLessThan 413 414 + BranchConditional 415 408 409 + 408: Label + 416: 7(fvec4) Load 381(bigColor6) + 417: 7(fvec4) Load 9(color) + 418: 7(fvec4) FAdd 417 416 + Store 9(color) 418 + 420: 6(float) Load 419(d7) + 421: 18(bool) FOrdLessThan 420 97 + SelectionMerge 423 None + BranchConditional 421 422 423 + 422: Label + Branch 409 + 423: Label + Branch 410 + 410: Label + Branch 407 + 409: Label + Branch 406 + 425: Label + Branch 426 + 426: Label + LoopMerge 428 429 None + Branch 430 + 430: Label + 431: 22(ptr) AccessChain 9(color) 67 + 432: 6(float) Load 431 + 433: 6(float) Load 367(d6) + 434: 18(bool) FOrdLessThan 432 433 + BranchConditional 434 427 428 + 427: Label + 435: 53(ptr) AccessChain 381(bigColor6) 67 + 436: 6(float) Load 435 + 437: 22(ptr) AccessChain 9(color) 67 + 438: 6(float) Load 437 + 439: 6(float) FAdd 438 436 + 440: 22(ptr) AccessChain 9(color) 67 + Store 440 439 + Branch 429 + 429: Label + Branch 426 + 428: Label + Branch 406 + 406: Label + Branch 441 + 441: Label + LoopMerge 443 444 None + Branch 442 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 - 428: Label - BranchConditional 18 425 427 - 427: Label - Branch 450 - 450: Label - LoopMerge 452 453 None - Branch 451 - 451: Label - 455: 6(float) Load 454(d8) - 456: 17(bool) FOrdLessThan 455 430 + 445: 6(float) Load 419(d7) + 447: 18(bool) FOrdLessThan 445 446 + SelectionMerge 449 None + BranchConditional 447 448 449 + 448: Label + Branch 443 + 449: Label + 452: 7(fvec4) Load 451(bigColor7) + 453: 7(fvec4) Load 9(color) + 454: 7(fvec4) FAdd 453 452 + Store 9(color) 454 + 455: 6(float) Load 419(d7) + 456: 18(bool) FOrdLessThan 455 97 SelectionMerge 458 None BranchConditional 456 457 458 457: Label - Branch 452 + 459: 22(ptr) AccessChain 9(color) 67 + 460: 6(float) Load 459 + 461: 6(float) FAdd 460 97 + Store 459 461 + Branch 443 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 + 463: 7(fvec4) Load 11(BaseColor) + 464: 7(fvec4) Load 9(color) + 465: 7(fvec4) FAdd 464 463 + Store 9(color) 465 + Branch 444 + 444: Label + BranchConditional 19 441 443 + 443: Label + Branch 466 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 - 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 - 452: Label - Branch 490 - 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 - 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 - 493: Label - Branch 490 - 492: Label - Branch 521 - 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 - 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 + LoopMerge 468 469 None + Branch 467 + 467: Label + 471: 6(float) Load 470(d8) + 472: 18(bool) FOrdLessThan 471 446 + SelectionMerge 474 None + BranchConditional 472 473 474 + 473: Label + Branch 468 + 474: Label + 476: 7(fvec4) Load 451(bigColor7) + 477: 7(fvec4) Load 9(color) + 478: 7(fvec4) FAdd 477 476 + Store 9(color) 478 + 479: 6(float) Load 470(d8) + 480: 18(bool) FOrdLessThan 479 97 + SelectionMerge 482 None + BranchConditional 480 481 482 + 481: Label + 483: 22(ptr) AccessChain 9(color) 67 + 484: 6(float) Load 483 + 485: 6(float) FAdd 484 97 + Store 483 485 + 486: 6(float) Load 470(d8) + 488: 18(bool) FOrdLessThan 486 487 + SelectionMerge 490 None + BranchConditional 488 489 494 + 489: Label + 491: 22(ptr) AccessChain 9(color) 112 + 492: 6(float) Load 491 + 493: 6(float) FAdd 492 97 + Store 491 493 + Branch 490 + 494: Label + 495: 22(ptr) AccessChain 9(color) 21 + 496: 6(float) Load 495 + 497: 6(float) FAdd 496 97 + Store 495 497 + Branch 490 + 490: Label + Branch 468 + 482: Label + 499: 7(fvec4) Load 11(BaseColor) + 500: 7(fvec4) Load 9(color) + 501: 7(fvec4) FAdd 500 499 + Store 9(color) 501 + Branch 469 + 469: Label + 502: 22(ptr) AccessChain 9(color) 67 + 503: 6(float) Load 502 + 504: 6(float) Load 470(d8) + 505: 18(bool) FOrdLessThan 503 504 + BranchConditional 505 466 468 + 468: Label + Branch 506 + 506: Label + LoopMerge 508 509 None + Branch 510 + 510: Label + 511: 22(ptr) AccessChain 9(color) 76 + 512: 6(float) Load 511 + 514: 6(float) Load 513(d9) + 515: 18(bool) FOrdLessThan 512 514 + BranchConditional 515 507 508 + 507: Label + 516: 6(float) Load 513(d9) + 517: 6(float) Load 470(d8) + 518: 18(bool) FOrdGreaterThan 516 517 + SelectionMerge 520 None + BranchConditional 518 519 520 + 519: Label + 521: 22(ptr) AccessChain 9(color) 21 + 522: 6(float) Load 521 + 523: 6(float) Load 419(d7) + 524: 18(bool) FOrdLessThanEqual 522 523 + SelectionMerge 526 None + BranchConditional 524 525 526 + 525: Label + 527: 22(ptr) AccessChain 9(color) 67 + 528: 6(float) Load 527 + 530: 18(bool) FOrdEqual 528 529 + SelectionMerge 532 None + BranchConditional 530 531 536 + 531: Label + 533: 22(ptr) AccessChain 9(color) 76 + 534: 6(float) Load 533 + 535: 6(float) FAdd 534 97 + Store 533 535 + Branch 532 + 536: Label + Branch 508 + 532: Label + Branch 526 + 526: Label + Branch 520 + 520: Label + Branch 509 + 509: Label + Branch 506 + 508: Label + Branch 538 + 538: Label + LoopMerge 540 541 None + Branch 542 + 542: Label + 543: 22(ptr) AccessChain 9(color) 67 + 544: 6(float) Load 543 + 546: 6(float) Load 545(d10) + 547: 18(bool) FOrdLessThan 544 546 + BranchConditional 547 539 540 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 - 524: Label - Branch 521 - 523: Label - Branch 562 - 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 - 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 - 565: Label - Branch 562 - 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 - 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 + 548: 22(ptr) AccessChain 9(color) 112 + 549: 6(float) Load 548 + 550: 6(float) FAdd 549 97 + Store 548 550 + 551: 22(ptr) AccessChain 9(color) 112 + 552: 6(float) Load 551 + 554: 6(float) Load 553(d11) + 555: 18(bool) FOrdLessThan 552 554 + SelectionMerge 557 None + BranchConditional 555 556 557 + 556: Label + 558: 22(ptr) AccessChain 9(color) 67 + 559: 6(float) Load 558 + 560: 6(float) FAdd 559 97 + Store 558 560 + 561: 22(ptr) AccessChain 9(color) 76 + 562: 6(float) Load 561 + 564: 6(float) Load 563(d12) + 565: 18(bool) FOrdLessThan 562 564 + SelectionMerge 567 None + BranchConditional 565 566 571 + 566: Label + 568: 22(ptr) AccessChain 9(color) 76 + 569: 6(float) Load 568 + 570: 6(float) FAdd 569 97 + Store 568 570 + Branch 567 + 571: Label + 572: 22(ptr) AccessChain 9(color) 21 + 573: 6(float) Load 572 + 574: 6(float) FAdd 573 97 + Store 572 574 + Branch 567 + 567: Label + Branch 541 + 557: Label + 576: 7(fvec4) Load 9(color) + 577: 7(fvec4) CompositeConstruct 97 97 97 97 + 578: 7(fvec4) FAdd 576 577 + Store 9(color) 578 + Branch 540 + 541: Label + Branch 538 + 540: Label + Branch 580 + 580: Label + LoopMerge 582 583 None + Branch 584 + 584: Label + 585: 22(ptr) AccessChain 9(color) 21 + 586: 6(float) Load 585 + 588: 18(bool) FOrdLessThan 586 587 + BranchConditional 588 581 582 + 581: Label + 590: 7(fvec4) Load 589(bigColor8) + 591: 7(fvec4) Load 9(color) + 592: 7(fvec4) FAdd 591 590 + Store 9(color) 592 + 593: 22(ptr) AccessChain 9(color) 67 + 594: 6(float) Load 593 + 595: 6(float) Load 470(d8) + 596: 18(bool) FOrdLessThan 594 595 + SelectionMerge 598 None + BranchConditional 596 597 598 + 597: Label + 599: 22(ptr) AccessChain 9(color) 76 + 600: 6(float) Load 599 + 601: 6(float) Load 367(d6) + 602: 18(bool) FOrdLessThan 600 601 + SelectionMerge 604 None + BranchConditional 602 603 604 + 603: Label + Branch 583 + 604: Label + Branch 598 + 598: Label + 606: 53(ptr) AccessChain 589(bigColor8) 21 + 607: 6(float) Load 606 + 608: 22(ptr) AccessChain 9(color) 112 609: 6(float) Load 608 - 611: 6(float) Load 610(d15) - 612: 17(bool) FOrdLessThan 609 611 - SelectionMerge 614 None - BranchConditional 612 613 616 - 613: Label + 610: 6(float) FAdd 609 607 + 611: 22(ptr) AccessChain 9(color) 112 + Store 611 610 + Branch 583 + 583: Label + Branch 580 + 582: Label + 612: 7(fvec4) Load 9(color) + 613: 7(fvec4) CompositeConstruct 97 97 97 97 + 614: 7(fvec4) FAdd 612 613 + Store 9(color) 614 + 617: 7(fvec4) Load 9(color) + Store 616(gl_FragColor) 617 + Branch 618 + 618: Label + LoopMerge 620 621 None + Branch 622 + 622: Label + 623: 22(ptr) AccessChain 9(color) 21 + 624: 6(float) Load 623 + 626: 6(float) Load 625(d14) + 627: 18(bool) FOrdLessThan 624 626 + BranchConditional 627 619 620 + 619: Label + 628: 22(ptr) AccessChain 9(color) 112 + 629: 6(float) Load 628 + 631: 6(float) Load 630(d15) + 632: 18(bool) FOrdLessThan 629 631 + SelectionMerge 634 None + BranchConditional 632 633 636 + 633: 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 - 602: Label - Branch 599 - 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 - 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 - 626: Label - Branch 623 - 625: Label - Branch 635 - 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 - 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 - 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 + 636: Label + 637: 7(fvec4) Load 9(color) + 638: 7(fvec4) CompositeConstruct 97 97 97 97 + 639: 7(fvec4) FAdd 637 638 + Store 9(color) 639 + Branch 634 + 634: Label + Branch 621 + 621: Label + Branch 618 + 620: Label + 640: 7(fvec4) Load 9(color) + 641: 7(fvec4) CompositeConstruct 97 97 97 97 + 642: 7(fvec4) FAdd 640 641 + Store 9(color) 642 + Branch 643 + 643: Label + LoopMerge 645 646 None + Branch 647 + 647: Label + 648: 22(ptr) AccessChain 9(color) 76 + 649: 6(float) Load 648 + 651: 6(float) Load 650(d16) + 652: 18(bool) FOrdLessThan 649 651 + BranchConditional 652 644 645 + 644: Label + 653: 22(ptr) AccessChain 9(color) 76 654: 6(float) Load 653 - 655: 6(float) Load 110(d3) - 656: 17(bool) FOrdLessThan 654 655 - SelectionMerge 658 None - BranchConditional 656 657 658 - 657: Label - Return - 658: Label - Branch 638 - 638: Label - Branch 635 - 637: Label + 655: 6(float) FAdd 654 97 + Store 653 655 + Branch 646 + 646: Label + Branch 643 + 645: Label + Branch 656 + 656: Label + LoopMerge 658 659 None Branch 660 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 - 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 + 661: 22(ptr) AccessChain 9(color) 76 + 662: 6(float) Load 661 + 663: 6(float) Load 107(d2) + 664: 18(bool) FOrdLessThan 662 663 + SelectionMerge 666 None + BranchConditional 664 665 666 + 665: Label + 667: 22(ptr) AccessChain 9(color) 112 + 668: 6(float) Load 667 + 669: 6(float) Load 115(d3) + 670: 18(bool) FOrdLessThan 668 669 + Branch 666 + 666: Label + 671: 18(bool) Phi 664 660 670 665 + BranchConditional 671 657 658 + 657: Label + 672: 7(fvec4) Load 119(bigColor1_2) + 673: 7(fvec4) Load 9(color) + 674: 7(fvec4) FAdd 673 672 Store 9(color) 674 - Branch 663 - 663: Label - 675: 21(ptr) AccessChain 9(color) 20 + 675: 22(ptr) AccessChain 9(color) 67 676: 6(float) Load 675 - 678: 6(float) Load 677(d17) - 679: 17(bool) FOrdLessThan 676 678 - BranchConditional 679 660 662 - 662: Label - Branch 680 + 677: 6(float) Load 115(d3) + 678: 18(bool) FOrdLessThan 676 677 + SelectionMerge 680 None + BranchConditional 678 679 680 + 679: Label + Return 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 - 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 - 683: Label - Branch 680 + Branch 659 + 659: Label + Branch 656 + 658: Label + Branch 682 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 + LoopMerge 684 685 None + Branch 683 + 683: Label + 686: 22(ptr) AccessChain 9(color) 112 + 687: 6(float) Load 686 + 689: 6(float) Load 688(d18) + 690: 18(bool) FOrdLessThan 687 689 + SelectionMerge 692 None + BranchConditional 690 691 692 + 691: Label + Return + 692: Label + 694: 7(fvec4) Load 9(color) + 695: 7(fvec4) CompositeConstruct 97 97 97 97 + 696: 7(fvec4) FAdd 694 695 + Store 9(color) 696 + Branch 685 + 685: Label + 697: 22(ptr) AccessChain 9(color) 21 + 698: 6(float) Load 697 + 700: 6(float) Load 699(d17) + 701: 18(bool) FOrdLessThan 698 700 + BranchConditional 701 682 684 + 684: Label + Branch 702 + 702: Label + LoopMerge 704 705 None + Branch 706 + 706: Label + 707: 22(ptr) AccessChain 9(color) 112 + 708: 6(float) Load 707 + 709: 6(float) Load 650(d16) + 710: 18(bool) FOrdLessThan 708 709 + BranchConditional 710 703 704 + 703: Label + 711: 22(ptr) AccessChain 9(color) 76 + 712: 6(float) Load 711 + 713: 6(float) Load 650(d16) + 714: 18(bool) FOrdLessThan 712 713 + SelectionMerge 716 None + BranchConditional 714 715 718 + 715: Label + Kill + 718: Label + 719: 7(fvec4) Load 9(color) + 720: 7(fvec4) CompositeConstruct 97 97 97 97 + 721: 7(fvec4) FAdd 719 720 + Store 9(color) 721 + Branch 716 + 716: Label + Branch 705 + 705: Label + Branch 702 + 704: Label + 722: 7(fvec4) Load 9(color) + 723: 7(fvec4) CompositeConstruct 97 97 97 97 + 724: 7(fvec4) FAdd 722 723 + Store 9(color) 724 + 725: 7(fvec4) Load 9(color) + Store 616(gl_FragColor) 725 Return FunctionEnd diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index e1bf08596..7de618ff9 100755 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -7,12 +7,12 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 187 +// Id's are bound by 188 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 11 140 + EntryPoint Fragment 4 "main" 11 141 ExecutionMode 4 OriginLowerLeft Source GLSL 130 Name 4 "main" @@ -20,51 +20,51 @@ Linked fragment stage: Name 11 "BaseColor" 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" + Name 81 "d13" + Name 141 "gl_FragColor" + Name 143 "bigColor" + Name 144 "bigColor1_1" + Name 145 "bigColor1_2" + Name 146 "bigColor1_3" + Name 147 "bigColor2" + Name 148 "bigColor3" + Name 149 "bigColor5" + Name 150 "bigColor6" + Name 151 "bigColor7" + Name 152 "bigColor8" + Name 153 "d" + Name 154 "d2" + Name 155 "d3" + Name 156 "d5" + Name 157 "d6" + Name 158 "d7" + Name 159 "d8" + Name 160 "d9" + Name 161 "d10" + Name 162 "d11" + Name 163 "d12" + Name 164 "d14" + Name 165 "d15" + Name 166 "d16" + Name 167 "d17" + Name 168 "d18" + Name 169 "d19" + Name 170 "d20" + Name 171 "d21" + Name 172 "d22" + Name 173 "d23" + Name 174 "d24" + Name 175 "d25" + Name 176 "d26" + Name 177 "d27" + Name 178 "d28" + Name 179 "d29" + Name 180 "d30" + Name 181 "d31" + Name 182 "d32" + Name 183 "d33" + Name 184 "d34" + Name 187 "Count" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -84,55 +84,55 @@ Linked fragment stage: 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 + 78: 22(int) Constant 3 + 81(d13): 27(ptr) Variable UniformConstant + 140: TypePointer Output 7(fvec4) +141(gl_FragColor): 140(ptr) Variable Output + 143(bigColor): 17(ptr) Variable UniformConstant +144(bigColor1_1): 17(ptr) Variable UniformConstant +145(bigColor1_2): 17(ptr) Variable UniformConstant +146(bigColor1_3): 17(ptr) Variable UniformConstant + 147(bigColor2): 17(ptr) Variable UniformConstant + 148(bigColor3): 17(ptr) Variable UniformConstant + 149(bigColor5): 17(ptr) Variable UniformConstant + 150(bigColor6): 17(ptr) Variable UniformConstant + 151(bigColor7): 17(ptr) Variable UniformConstant + 152(bigColor8): 17(ptr) Variable UniformConstant + 153(d): 27(ptr) Variable UniformConstant + 154(d2): 27(ptr) Variable UniformConstant + 155(d3): 27(ptr) Variable UniformConstant + 156(d5): 27(ptr) Variable UniformConstant + 157(d6): 27(ptr) Variable UniformConstant + 158(d7): 27(ptr) Variable UniformConstant + 159(d8): 27(ptr) Variable UniformConstant + 160(d9): 27(ptr) Variable UniformConstant + 161(d10): 27(ptr) Variable UniformConstant + 162(d11): 27(ptr) Variable UniformConstant + 163(d12): 27(ptr) Variable UniformConstant + 164(d14): 27(ptr) Variable UniformConstant + 165(d15): 27(ptr) Variable UniformConstant + 166(d16): 27(ptr) Variable UniformConstant + 167(d17): 27(ptr) Variable UniformConstant + 168(d18): 27(ptr) Variable UniformConstant + 169(d19): 27(ptr) Variable UniformConstant + 170(d20): 27(ptr) Variable UniformConstant + 171(d21): 27(ptr) Variable UniformConstant + 172(d22): 27(ptr) Variable UniformConstant + 173(d23): 27(ptr) Variable UniformConstant + 174(d24): 27(ptr) Variable UniformConstant + 175(d25): 27(ptr) Variable UniformConstant + 176(d26): 27(ptr) Variable UniformConstant + 177(d27): 27(ptr) Variable UniformConstant + 178(d28): 27(ptr) Variable UniformConstant + 179(d29): 27(ptr) Variable UniformConstant + 180(d30): 27(ptr) Variable UniformConstant + 181(d31): 27(ptr) Variable UniformConstant + 182(d32): 27(ptr) Variable UniformConstant + 183(d33): 27(ptr) Variable UniformConstant + 184(d34): 27(ptr) Variable UniformConstant + 185: TypeInt 32 1 + 186: TypePointer UniformConstant 185(int) + 187(Count): 186(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function @@ -207,95 +207,97 @@ Linked fragment stage: 15: Label Branch 73 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 + Branch 77 + 77: Label + 79: 24(ptr) AccessChain 9(color) 78 + 80: 6(float) Load 79 + 82: 6(float) Load 81(d13) + 83: 30(bool) FOrdLessThan 80 82 + BranchConditional 83 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 - 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 + 84: 24(ptr) AccessChain 9(color) 35 + 85: 6(float) Load 84 + 86: 6(float) Load 81(d13) + 87: 30(bool) FOrdLessThan 85 86 + SelectionMerge 89 None + BranchConditional 87 88 93 + 88: Label + 90: 7(fvec4) Load 9(color) + 91: 7(fvec4) CompositeConstruct 48 48 48 48 + 92: 7(fvec4) FAdd 90 91 + Store 9(color) 92 + Branch 89 + 93: Label + 94: 7(fvec4) Load 9(color) + 95: 7(fvec4) CompositeConstruct 48 48 48 48 + 96: 7(fvec4) FSub 94 95 + Store 9(color) 96 + Branch 89 + 89: Label + 97: 7(fvec4) Load 18(bigColor4) + 98: 7(fvec4) Load 9(color) + 99: 7(fvec4) FAdd 98 97 + Store 9(color) 99 + 100: 24(ptr) AccessChain 9(color) 23 + 101: 6(float) Load 100 + 102: 6(float) Load 28(d4) + 103: 30(bool) FOrdLessThan 101 102 + SelectionMerge 105 None + BranchConditional 103 104 105 + 104: Label + 106: 24(ptr) AccessChain 9(color) 35 + 107: 6(float) Load 106 + 108: 6(float) FAdd 107 34 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 + Store 109 108 + 110: 24(ptr) AccessChain 9(color) 35 + 111: 6(float) Load 110 + 112: 6(float) Load 28(d4) + 113: 30(bool) FOrdLessThan 111 112 + SelectionMerge 115 None + BranchConditional 113 114 115 + 114: Label + 116: 24(ptr) AccessChain 9(color) 23 + 117: 6(float) Load 116 + 118: 6(float) FAdd 117 48 + Store 116 118 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 + 115: Label + Branch 105 + 105: Label + 120: 24(ptr) AccessChain 9(color) 51 + 121: 6(float) Load 120 + 122: 6(float) Load 28(d4) + 123: 30(bool) FOrdLessThan 121 122 + SelectionMerge 125 None + BranchConditional 123 124 131 + 124: Label + 126: 6(float) Load 28(d4) + 127: 24(ptr) AccessChain 9(color) 51 + 128: 6(float) Load 127 + 129: 6(float) FAdd 128 126 + 130: 24(ptr) AccessChain 9(color) 51 + Store 130 129 + Branch 125 + 131: Label + 132: 6(float) Load 28(d4) + 133: 24(ptr) AccessChain 9(color) 23 + 134: 6(float) Load 133 + 135: 6(float) FAdd 134 132 + 136: 24(ptr) AccessChain 9(color) 23 + Store 136 135 + Branch 125 + 125: Label Branch 76 76: Label Branch 73 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 + 137: 7(fvec4) Load 9(color) + 138: 7(fvec4) CompositeConstruct 48 48 48 48 + 139: 7(fvec4) FAdd 137 138 + Store 9(color) 139 + 142: 7(fvec4) Load 9(color) + Store 141(gl_FragColor) 142 Return FunctionEnd diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index efd2df072..74f4463a5 100755 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -10,12 +10,12 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 267 +// Id's are bound by 269 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 75 225 + EntryPoint Fragment 4 "main" 75 227 ExecutionMode 4 OriginLowerLeft Source ESSL 310 Name 4 "main" @@ -33,24 +33,24 @@ Linked fragment stage: Name 75 "x" Name 129 "d" Name 155 "i" - Name 174 "j" - Name 225 "color" - Name 231 "v" - Name 232 "param" + Name 175 "j" + Name 227 "color" + Name 233 "v" Name 234 "param" Name 236 "param" - Name 244 "param" + Name 238 "param" Name 246 "param" Name 248 "param" + Name 250 "param" Decorate 60(local) RelaxedPrecision Decorate 62(c) RelaxedPrecision Decorate 73(f) RelaxedPrecision Decorate 75(x) RelaxedPrecision Decorate 129(d) RelaxedPrecision Decorate 155(i) RelaxedPrecision - Decorate 174(j) RelaxedPrecision - Decorate 225(color) RelaxedPrecision - Decorate 231(v) RelaxedPrecision + Decorate 175(j) RelaxedPrecision + Decorate 227(color) RelaxedPrecision + Decorate 233(v) RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -71,31 +71,31 @@ Linked fragment stage: 75(x): 74(ptr) Variable Input 129(d): 61(ptr) Variable UniformConstant 156: 9(int) Constant 0 - 162: 9(int) Constant 10 - 163: TypeBool - 175: 9(int) Constant 20 - 181: 9(int) Constant 30 - 186: 6(float) Constant 1120429670 - 206: 6(float) Constant 1079739679 - 224: TypePointer Output 6(float) - 225(color): 224(ptr) Variable Output - 230: TypePointer UniformConstant 7(fvec4) - 231(v): 230(ptr) Variable UniformConstant - 239: TypeInt 32 0 - 240: 239(int) Constant 1 - 251: 239(int) Constant 2 + 163: 9(int) Constant 10 + 164: TypeBool + 176: 9(int) Constant 20 + 183: 9(int) Constant 30 + 188: 6(float) Constant 1120429670 + 208: 6(float) Constant 1079739679 + 226: TypePointer Output 6(float) + 227(color): 226(ptr) Variable Output + 232: TypePointer UniformConstant 7(fvec4) + 233(v): 232(ptr) Variable UniformConstant + 241: TypeInt 32 0 + 242: 241(int) Constant 1 + 253: 241(int) Constant 2 4(main): 2 Function None 3 5: Label 60(local): 10(ptr) Variable Function 73(f): 72(ptr) Variable Function 155(i): 10(ptr) Variable Function - 174(j): 10(ptr) Variable Function - 232(param): 8(ptr) Variable Function + 175(j): 10(ptr) Variable Function 234(param): 8(ptr) Variable Function - 236(param): 10(ptr) Variable Function - 244(param): 8(ptr) Variable Function + 236(param): 8(ptr) Variable Function + 238(param): 10(ptr) Variable Function 246(param): 8(ptr) Variable Function - 248(param): 10(ptr) Variable Function + 248(param): 8(ptr) Variable Function + 250(param): 10(ptr) Variable Function 63: 9(int) Load 62(c) Store 60(local) 63 64: 9(int) Load 60(local) @@ -218,134 +218,138 @@ Linked fragment stage: Store 155(i) 156 Branch 157 157: Label - 161: 9(int) Load 155(i) - 164: 163(bool) SLessThan 161 162 LoopMerge 159 160 None - BranchConditional 164 158 159 + Branch 161 + 161: Label + 162: 9(int) Load 155(i) + 165: 164(bool) SLessThan 162 163 + BranchConditional 165 158 159 158: Label - 165: 9(int) Load 62(c) - SelectionMerge 169 None - Switch 165 168 - case 1: 166 - case 2: 167 - 168: Label - 200: 6(float) Load 75(x) - 201: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 200 - 202: 6(float) Load 73(f) - 203: 6(float) FAdd 202 201 - Store 73(f) 203 - Branch 169 - 166: Label - 170: 6(float) Load 75(x) - 171: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 170 - 172: 6(float) Load 73(f) - 173: 6(float) FAdd 172 171 - Store 73(f) 173 - Store 174(j) 175 - Branch 176 - 176: Label - 180: 9(int) Load 174(j) - 182: 163(bool) SLessThan 180 181 - LoopMerge 178 179 None - BranchConditional 182 177 178 - 177: Label - 183: 6(float) Load 73(f) - 184: 6(float) FAdd 183 48 - Store 73(f) 184 - 185: 6(float) Load 73(f) - 187: 163(bool) FOrdLessThan 185 186 - SelectionMerge 189 None - BranchConditional 187 188 189 - 188: Label - Branch 178 - 189: Label - Branch 179 - 179: Label - 191: 9(int) Load 174(j) - 192: 9(int) IAdd 191 65 - Store 174(j) 192 - Branch 176 - 178: Label - Branch 169 + 166: 9(int) Load 62(c) + SelectionMerge 170 None + Switch 166 169 + case 1: 167 + case 2: 168 + 169: Label + 202: 6(float) Load 75(x) + 203: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 202 + 204: 6(float) Load 73(f) + 205: 6(float) FAdd 204 203 + Store 73(f) 205 + Branch 170 167: Label - 194: 6(float) Load 75(x) - 195: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 194 - 196: 6(float) Load 73(f) - 197: 6(float) FAdd 196 195 - Store 73(f) 197 - Branch 169 - 169: Label - 205: 6(float) Load 73(f) - 207: 163(bool) FOrdLessThan 205 206 - SelectionMerge 209 None - BranchConditional 207 208 209 - 208: Label + 171: 6(float) Load 75(x) + 172: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 171 + 173: 6(float) Load 73(f) + 174: 6(float) FAdd 173 172 + Store 73(f) 174 + Store 175(j) 176 + Branch 177 + 177: Label + LoopMerge 179 180 None + Branch 181 + 181: Label + 182: 9(int) Load 175(j) + 184: 164(bool) SLessThan 182 183 + BranchConditional 184 178 179 + 178: Label + 185: 6(float) Load 73(f) + 186: 6(float) FAdd 185 48 + Store 73(f) 186 + 187: 6(float) Load 73(f) + 189: 164(bool) FOrdLessThan 187 188 + SelectionMerge 191 None + BranchConditional 189 190 191 + 190: Label + Branch 179 + 191: Label + Branch 180 + 180: Label + 193: 9(int) Load 175(j) + 194: 9(int) IAdd 193 65 + Store 175(j) 194 + Branch 177 + 179: Label + Branch 170 + 168: Label + 196: 6(float) Load 75(x) + 197: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 196 + 198: 6(float) Load 73(f) + 199: 6(float) FAdd 198 197 + Store 73(f) 199 + Branch 170 + 170: Label + 207: 6(float) Load 73(f) + 209: 164(bool) FOrdLessThan 207 208 + SelectionMerge 211 None + BranchConditional 209 210 211 + 210: Label Branch 159 - 209: Label + 211: Label Branch 160 160: Label - 211: 9(int) Load 155(i) - 212: 9(int) IAdd 211 65 - Store 155(i) 212 + 213: 9(int) Load 155(i) + 214: 9(int) IAdd 213 65 + Store 155(i) 214 Branch 157 159: Label - 213: 9(int) Load 62(c) - SelectionMerge 216 None - Switch 213 216 - case 1: 214 - case 2: 215 - 214: Label - 217: 6(float) Load 75(x) - 218: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 217 - 219: 6(float) Load 73(f) - 220: 6(float) FAdd 219 218 - Store 73(f) 220 - Branch 216 - 215: Label - Branch 216 - 216: Label - 226: 6(float) Load 73(f) - 227: 9(int) Load 60(local) - 228: 6(float) ConvertSToF 227 - 229: 6(float) FAdd 226 228 - Store 225(color) 229 - 233: 7(fvec4) Load 231(v) - Store 232(param) 233 - 235: 7(fvec4) Load 231(v) + 215: 9(int) Load 62(c) + SelectionMerge 218 None + Switch 215 218 + case 1: 216 + case 2: 217 + 216: Label + 219: 6(float) Load 75(x) + 220: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 219 + 221: 6(float) Load 73(f) + 222: 6(float) FAdd 221 220 + Store 73(f) 222 + Branch 218 + 217: Label + Branch 218 + 218: Label + 228: 6(float) Load 73(f) + 229: 9(int) Load 60(local) + 230: 6(float) ConvertSToF 229 + 231: 6(float) FAdd 228 230 + Store 227(color) 231 + 235: 7(fvec4) Load 233(v) Store 234(param) 235 - 237: 9(int) Load 62(c) + 237: 7(fvec4) Load 233(v) Store 236(param) 237 - 238: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 232(param) 234(param) 236(param) - 241: 6(float) CompositeExtract 238 1 - 242: 6(float) Load 225(color) - 243: 6(float) FAdd 242 241 - Store 225(color) 243 - 245: 7(fvec4) Load 231(v) - Store 244(param) 245 - 247: 7(fvec4) Load 231(v) + 239: 9(int) Load 62(c) + Store 238(param) 239 + 240: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 234(param) 236(param) 238(param) + 243: 6(float) CompositeExtract 240 1 + 244: 6(float) Load 227(color) + 245: 6(float) FAdd 244 243 + Store 227(color) 245 + 247: 7(fvec4) Load 233(v) Store 246(param) 247 - 249: 9(int) Load 62(c) + 249: 7(fvec4) Load 233(v) Store 248(param) 249 - 250: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 244(param) 246(param) 248(param) - 252: 6(float) CompositeExtract 250 2 - 253: 6(float) Load 225(color) - 254: 6(float) FAdd 253 252 - Store 225(color) 254 - 255: 9(int) Load 62(c) - SelectionMerge 258 None - Switch 255 257 - case 0: 256 - 257: Label - Branch 258 - 256: Label - Branch 258 - 258: Label - 262: 9(int) Load 62(c) - SelectionMerge 264 None - Switch 262 263 - 263: Label - Branch 264 - 264: Label + 251: 9(int) Load 62(c) + Store 250(param) 251 + 252: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 246(param) 248(param) 250(param) + 254: 6(float) CompositeExtract 252 2 + 255: 6(float) Load 227(color) + 256: 6(float) FAdd 255 254 + Store 227(color) 256 + 257: 9(int) Load 62(c) + SelectionMerge 260 None + Switch 257 259 + case 0: 258 + 259: Label + Branch 260 + 258: Label + Branch 260 + 260: Label + 264: 9(int) Load 62(c) + SelectionMerge 266 None + Switch 264 265 + 265: Label + Branch 266 + 266: Label Return FunctionEnd 15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11 diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out index aedd4371d..f933dce92 100644 --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -5,78 +5,80 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 43 +// Id's are bound by 44 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 41 42 + EntryPoint Vertex 4 "main" 42 43 Source ESSL 300 Name 4 "main" Name 8 "i" - Name 18 "A" - Name 26 "B" - Name 28 "C" - Name 38 "D" - Name 41 "gl_VertexID" - Name 42 "gl_InstanceID" - Decorate 41(gl_VertexID) BuiltIn VertexId - Decorate 42(gl_InstanceID) BuiltIn InstanceId + Name 19 "A" + Name 27 "B" + Name 29 "C" + Name 39 "D" + Name 42 "gl_VertexID" + Name 43 "gl_InstanceID" + Decorate 42(gl_VertexID) BuiltIn VertexId + Decorate 43(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: 6(int) Constant 2 - 30: 6(int) Constant 5 - 39: 6(int) Constant 3 - 40: TypePointer Input 6(int) - 41(gl_VertexID): 40(ptr) Variable Input -42(gl_InstanceID): 40(ptr) Variable Input + 16: 6(int) Constant 10 + 17: TypeBool + 20: 6(int) Constant 1 + 22: 6(int) Constant 2 + 31: 6(int) Constant 5 + 40: 6(int) Constant 3 + 41: TypePointer Input 6(int) + 42(gl_VertexID): 41(ptr) Variable Input +43(gl_InstanceID): 41(ptr) Variable Input 4(main): 2 Function None 3 5: Label 8(i): 7(ptr) Variable Function - 18(A): 7(ptr) Variable Function - 26(B): 7(ptr) Variable Function - 28(C): 7(ptr) Variable Function - 38(D): 7(ptr) Variable Function + 19(A): 7(ptr) Variable Function + 27(B): 7(ptr) Variable Function + 29(C): 7(ptr) Variable Function + 39(D): 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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 11: 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 - 24: Label - Store 26(B) 21 + Store 19(A) 20 + 21: 6(int) Load 8(i) + 23: 6(int) SMod 21 22 + 24: 17(bool) IEqual 23 9 + SelectionMerge 26 None + BranchConditional 24 25 26 + 25: Label + Store 27(B) 22 Branch 13 - 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 + 26: Label + 30: 6(int) Load 8(i) + 32: 6(int) SMod 30 31 + 33: 17(bool) IEqual 32 9 + SelectionMerge 35 None + BranchConditional 33 34 35 + 34: Label + Store 27(B) 22 Branch 12 - 34: Label - 36: 6(int) Load 8(i) - 37: 6(int) IAdd 36 19 - Store 8(i) 37 + 35: Label + 37: 6(int) Load 8(i) + 38: 6(int) IAdd 37 20 + Store 8(i) 38 Branch 13 13: Label Branch 10 12: Label - Store 38(D) 39 + Store 39(D) 40 Return FunctionEnd diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out index 1d6d9da15..f5d13a378 100755 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -5,44 +5,46 @@ Linked vertex stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 24 +// Id's are bound by 25 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 22 23 + EntryPoint Vertex 4 "main" 23 24 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 + Name 23 "gl_VertexID" + Name 24 "gl_InstanceID" + Decorate 23(gl_VertexID) BuiltIn VertexId + Decorate 24(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 Input 6(int) - 22(gl_VertexID): 21(ptr) Variable Input -23(gl_InstanceID): 21(ptr) Variable Input + 16: 6(int) Constant 10 + 17: TypeBool + 20: 6(int) Constant 1 + 22: TypePointer Input 6(int) + 23(gl_VertexID): 22(ptr) Variable Input +24(gl_InstanceID): 22(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 + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 11: Label - 18: 6(int) Load 8(i) - 20: 6(int) IAdd 18 19 - Store 8(i) 20 + 19: 6(int) Load 8(i) + 21: 6(int) IAdd 19 20 + Store 8(i) 21 Branch 13 13: Label Branch 10 diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index 3975f083d..c29ebd374 100755 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -5,20 +5,20 @@ Linked fragment stage: // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 35 +// Id's are bound by 36 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 11 33 + EntryPoint Fragment 4 "main" 11 34 ExecutionMode 4 OriginLowerLeft Source GLSL 110 Name 4 "main" Name 9 "color" Name 11 "BaseColor" - Name 23 "d" - Name 28 "bigColor" - Name 33 "gl_FragColor" + Name 24 "d" + Name 29 "bigColor" + Name 34 "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 - 17: TypeInt 32 0 - 18: 17(int) Constant 0 - 19: TypePointer Function 6(float) - 22: TypePointer UniformConstant 6(float) - 23(d): 22(ptr) Variable UniformConstant - 25: TypeBool - 27: TypePointer UniformConstant 7(fvec4) - 28(bigColor): 27(ptr) Variable UniformConstant - 32: TypePointer Output 7(fvec4) -33(gl_FragColor): 32(ptr) Variable Output + 18: TypeInt 32 0 + 19: 18(int) Constant 0 + 20: TypePointer Function 6(float) + 23: TypePointer UniformConstant 6(float) + 24(d): 23(ptr) Variable UniformConstant + 26: TypeBool + 28: TypePointer UniformConstant 7(fvec4) + 29(bigColor): 28(ptr) Variable UniformConstant + 33: TypePointer Output 7(fvec4) +34(gl_FragColor): 33(ptr) Variable Output 4(main): 2 Function None 3 5: Label 9(color): 8(ptr) Variable Function @@ -43,22 +43,24 @@ Linked fragment stage: Store 9(color) 12 Branch 13 13: 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 15 16 None - BranchConditional 26 14 15 + Branch 17 + 17: Label + 21: 20(ptr) AccessChain 9(color) 19 + 22: 6(float) Load 21 + 25: 6(float) Load 24(d) + 27: 26(bool) FOrdLessThan 22 25 + BranchConditional 27 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 + 30: 7(fvec4) Load 29(bigColor) + 31: 7(fvec4) Load 9(color) + 32: 7(fvec4) FAdd 31 30 + Store 9(color) 32 Branch 16 16: Label Branch 13 15: Label - 34: 7(fvec4) Load 9(color) - Store 33(gl_FragColor) 34 + 35: 7(fvec4) Load 9(color) + Store 34(gl_FragColor) 35 Return FunctionEnd diff --git a/Test/spv.for-notest.vert b/Test/spv.for-notest.vert index 7aff3b303..f40e66644 100644 --- a/Test/spv.for-notest.vert +++ b/Test/spv.for-notest.vert @@ -2,8 +2,5 @@ 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; } }