Fix back-branch target for do-while loops.

To ensure back branches always go to a header block, create a header
block even for !testFirst loops.  Then unify common code between the
testFirst/!testFirst cases.

Generate the header-block code first, so update golden files.

Realize that certain infinite loops generate invalid SPIR-V, so put a
TODO to instead abort code generation in such cases.

Change-Id: I1e173c8f73daad186cfc666b7d72bd563ed7665d
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index e5e2169..00369d2 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1342,19 +1342,17 @@
 bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node)
 {
     auto blocks = builder.makeNewLoop();
+    builder.createBranch(&blocks.head);
     if (node->testFirst() && node->getTest()) {
-        spv::Block& head = builder.makeNewBlock();
-        builder.createBranch(&head);
-
-        builder.setBuildPoint(&head);
+        builder.setBuildPoint(&blocks.head);
         node->getTest()->traverse(this);
         spv::Id condition =
             builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
         builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
         builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
 
-        breakForLoop.push(true);
         builder.setBuildPoint(&blocks.body);
+        breakForLoop.push(true);
         if (node->getBody())
             node->getBody()->traverse(this);
         builder.createBranch(&blocks.continue_target);
@@ -1363,8 +1361,14 @@
         builder.setBuildPoint(&blocks.continue_target);
         if (node->getTerminal())
             node->getTerminal()->traverse(this);
-        builder.createBranch(&head);
+        builder.createBranch(&blocks.head);
     } else {
+        // Spec requires back edges to target header blocks, and every header
+        // block must dominate its merge block.  Create an empty header block
+        // here to ensure these conditions are met even when body contains
+        // non-trivial control flow.
+        builder.setBuildPoint(&blocks.head);
+        builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
         builder.createBranch(&blocks.body);
 
         breakForLoop.push(true);
@@ -1381,14 +1385,17 @@
             node->getTest()->traverse(this);
             spv::Id condition =
                 builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
-            builder.createLoopMerge(&blocks.merge, &blocks.continue_target,
-                                    spv::LoopControlMaskNone);
-            builder.createConditionalBranch(condition, &blocks.body, &blocks.merge);
+            builder.createConditionalBranch(condition, &blocks.head, &blocks.merge);
         } else {
-            builder.createBranch(&blocks.body);
+            // TODO: unless there was a break instruction somewhere in the body,
+            // this is an infinite loop, so we should abort code generation with
+            // a warning.  As it stands now, nothing will jump to the merge
+            // block, and it may be dropped as unreachable by the SPIR-V dumper.
+            // That, in turn, will result in a non-existing %ID in the LoopMerge
+            // above.
+            builder.createBranch(&blocks.head);
         }
     }
-
     builder.setBuildPoint(&blocks.merge);
     builder.closeLoop();
     return false;
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index eb8c4d3..f9c4ae6 100755
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -1763,7 +1763,7 @@
 
 Builder::LoopBlocks& Builder::makeNewLoop()
 {
-    loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock()});
+    loops.push({makeNewBlock(), makeNewBlock(), makeNewBlock(), makeNewBlock()});
     return loops.top();
 }
 
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index a1ed84c..fa3600b 100755
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -374,7 +374,7 @@
     void endSwitch(std::vector<Block*>& segmentBB);
 
     struct LoopBlocks {
-        Block &body, &merge, &continue_target;
+        Block &head, &body, &merge, &continue_target;
     };
 
     // Start a new loop and prepare the builder to generate code for it.  Until
diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out
index 0efe656..5cccee1 100755
--- a/Test/baseResults/spv.dataOutIndirect.vert.out
+++ b/Test/baseResults/spv.dataOutIndirect.vert.out
@@ -48,26 +48,26 @@
                5:             Label
             8(i):      7(ptr) Variable Function
                               Store 8(i) 9
-                              Branch 13
+                              Branch 10
               10:             Label
-              25:      6(int) Load 8(i)
-              28:   19(fvec4) Load 27(color)
-              30:     29(ptr) AccessChain 24(colorOut) 25
-                              Store 30 28
-                              Branch 12
-              11:             Label
+              14:      6(int) Load 8(i)
+              17:    16(bool) SLessThan 14 15
+                              LoopMerge 12 13 None
+                              BranchConditional 17 11 12
+              11:               Label
+              25:      6(int)   Load 8(i)
+              28:   19(fvec4)   Load 27(color)
+              30:     29(ptr)   AccessChain 24(colorOut) 25
+                                Store 30 28
+                                Branch 13
+              12:             Label
               35:     29(ptr) AccessChain 24(colorOut) 34
               36:   19(fvec4) Load 35
                               Store 33(gl_Position) 36
                               Return
-              12:             Label
+              13:             Label
               31:      6(int) Load 8(i)
               32:      6(int) IAdd 31 9
                               Store 8(i) 32
-                              Branch 13
-              13:             Label
-              14:      6(int) Load 8(i)
-              17:    16(bool) SLessThan 14 15
-                              LoopMerge 11 12 None
-                              BranchConditional 17 10 11
-                                FunctionEnd
+                              Branch 10
+                              FunctionEnd
diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out
index 694da83..e38c0f5 100755
--- a/Test/baseResults/spv.do-simple.vert.out
+++ b/Test/baseResults/spv.do-simple.vert.out
@@ -1,49 +1,51 @@
-spv.do-simple.vert

-

-Linked vertex stage:

-

-

-// Module Version 10000

-// Generated by (magic number): 80001

-// Id's are bound by 23

-

-                              Capability Shader

-               1:             ExtInstImport  "GLSL.std.450"

-                              MemoryModel Logical GLSL450

-                              EntryPoint Vertex 4  "main" 21 22

-                              Source ESSL 300

-                              Name 4  "main"

-                              Name 8  "i"

-                              Name 21  "gl_VertexID"

-                              Name 22  "gl_InstanceID"

-                              Decorate 21(gl_VertexID) BuiltIn VertexId

-                              Decorate 22(gl_InstanceID) BuiltIn InstanceId

-               2:             TypeVoid

-               3:             TypeFunction 2

-               6:             TypeInt 32 1

-               7:             TypePointer Function 6(int)

-               9:      6(int) Constant 0

-              14:      6(int) Constant 1

-              17:      6(int) Constant 10

-              18:             TypeBool

-              20:             TypePointer Input 6(int)

- 21(gl_VertexID):     20(ptr) Variable Input

-22(gl_InstanceID):     20(ptr) Variable Input

-         4(main):           2 Function None 3

-               5:             Label

-            8(i):      7(ptr) Variable Function

-                              Store 8(i) 9

-                              Branch 10

-              10:             Label

-              13:      6(int) Load 8(i)

-              15:      6(int) IAdd 13 14

-                              Store 8(i) 15

-                              Branch 12

-              11:             Label

-                              Return

-              12:             Label

-              16:      6(int) Load 8(i)

-              19:    18(bool) SLessThan 16 17

-                              LoopMerge 11 12 None

-                              BranchConditional 19 10 11

-                                FunctionEnd

+spv.do-simple.vert
+
+Linked vertex stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 22 23
+                              Source ESSL 300
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 22  "gl_VertexID"
+                              Name 23  "gl_InstanceID"
+                              Decorate 22(gl_VertexID) BuiltIn VertexId
+                              Decorate 23(gl_InstanceID) BuiltIn InstanceId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              15:      6(int) Constant 1
+              18:      6(int) Constant 10
+              19:             TypeBool
+              21:             TypePointer Input 6(int)
+ 22(gl_VertexID):     21(ptr) Variable Input
+23(gl_InstanceID):     21(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 11
+              11:             Label
+              14:      6(int) Load 8(i)
+              16:      6(int) IAdd 14 15
+                              Store 8(i) 16
+                              Branch 13
+              12:             Label
+                              Return
+              13:             Label
+              17:      6(int) Load 8(i)
+              20:    19(bool) SLessThan 17 18
+                              BranchConditional 20 10 12
+                                FunctionEnd
diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out
index c70c28d..ec4d100 100755
--- a/Test/baseResults/spv.do-while-continue-break.vert.out
+++ b/Test/baseResults/spv.do-while-continue-break.vert.out
@@ -5,89 +5,91 @@
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 45
+// Id's are bound by 46
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 43 44
+                              EntryPoint Vertex 4  "main" 44 45
                               Source ESSL 300
                               Name 4  "main"
                               Name 8  "i"
-                              Name 13  "A"
-                              Name 20  "B"
-                              Name 23  "C"
-                              Name 29  "D"
-                              Name 32  "E"
-                              Name 34  "F"
-                              Name 40  "G"
-                              Name 43  "gl_VertexID"
-                              Name 44  "gl_InstanceID"
-                              Decorate 43(gl_VertexID) BuiltIn VertexId
-                              Decorate 44(gl_InstanceID) BuiltIn InstanceId
+                              Name 14  "A"
+                              Name 21  "B"
+                              Name 24  "C"
+                              Name 30  "D"
+                              Name 33  "E"
+                              Name 35  "F"
+                              Name 41  "G"
+                              Name 44  "gl_VertexID"
+                              Name 45  "gl_InstanceID"
+                              Decorate 44(gl_VertexID) BuiltIn VertexId
+                              Decorate 45(gl_InstanceID) BuiltIn InstanceId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
                7:             TypePointer Function 6(int)
                9:      6(int) Constant 0
-              15:      6(int) Constant 2
-              16:             TypeBool
-              21:      6(int) Constant 1
-              25:      6(int) Constant 5
-              30:      6(int) Constant 3
-              33:      6(int) Constant 42
-              35:      6(int) Constant 99
-              38:      6(int) Constant 19
-              41:      6(int) Constant 12
-              42:             TypePointer Input 6(int)
- 43(gl_VertexID):     42(ptr) Variable Input
-44(gl_InstanceID):     42(ptr) Variable Input
+              16:      6(int) Constant 2
+              17:             TypeBool
+              22:      6(int) Constant 1
+              26:      6(int) Constant 5
+              31:      6(int) Constant 3
+              34:      6(int) Constant 42
+              36:      6(int) Constant 99
+              39:      6(int) Constant 19
+              42:      6(int) Constant 12
+              43:             TypePointer Input 6(int)
+ 44(gl_VertexID):     43(ptr) Variable Input
+45(gl_InstanceID):     43(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
             8(i):      7(ptr) Variable Function
-           13(A):      7(ptr) Variable Function
-           20(B):      7(ptr) Variable Function
-           23(C):      7(ptr) Variable Function
-           29(D):      7(ptr) Variable Function
-           32(E):      7(ptr) Variable Function
-           34(F):      7(ptr) Variable Function
-           40(G):      7(ptr) Variable Function
+           14(A):      7(ptr) Variable Function
+           21(B):      7(ptr) Variable Function
+           24(C):      7(ptr) Variable Function
+           30(D):      7(ptr) Variable Function
+           33(E):      7(ptr) Variable Function
+           35(F):      7(ptr) Variable Function
+           41(G):      7(ptr) Variable Function
                               Store 8(i) 9
                               Branch 10
               10:             Label
-                              Store 13(A) 9
-              14:      6(int) Load 8(i)
-              17:    16(bool) IEqual 14 15
-                              SelectionMerge 19 None
-                              BranchConditional 17 18 19
-              11:               Label
-                                Store 40(G) 41
-                                Return
+                              LoopMerge 12 13 None
+                              Branch 11
+              11:             Label
+                              Store 14(A) 9
+              15:      6(int) Load 8(i)
+              18:    17(bool) IEqual 15 16
+                              SelectionMerge 20 None
+                              BranchConditional 18 19 20
               12:               Label
-              36:      6(int)   Load 8(i)
-              37:      6(int)   IAdd 36 21
-                                Store 8(i) 37
-              39:    16(bool)   SLessThan 37 38
-                                LoopMerge 11 12 None
-                                BranchConditional 39 10 11
-              18:                 Label
-                                  Store 20(B) 21
-                                  Branch 12
-              22:                 Label
-                                  Store 23(C) 15
-                                  Branch 19
-              19:                 Label
-              24:      6(int)     Load 8(i)
-              26:    16(bool)     IEqual 24 25
-                                  SelectionMerge 28 None
-                                  BranchConditional 26 27 28
-              27:                   Label
-                                    Store 29(D) 30
-                                    Branch 11
-              31:                   Label
-                                    Store 32(E) 33
-                                    Branch 28
-              28:                 Label
-                                  Store 34(F) 35
-                                  Branch 12
-                                  FunctionEnd
+                                Store 41(G) 42
+                                Return
+              13:               Label
+              37:      6(int)   Load 8(i)
+              38:      6(int)   IAdd 37 22
+                                Store 8(i) 38
+              40:    17(bool)   SLessThan 38 39
+                                BranchConditional 40 10 12
+              19:               Label
+                                Store 21(B) 22
+                                Branch 13
+              23:               Label
+                                Store 24(C) 16
+                                Branch 20
+              20:             Label
+              25:      6(int) Load 8(i)
+              27:    17(bool) IEqual 25 26
+                              SelectionMerge 29 None
+                              BranchConditional 27 28 29
+              28:               Label
+                                Store 30(D) 31
+                                Branch 12
+              32:               Label
+                                Store 33(E) 34
+                                Branch 29
+              29:             Label
+                              Store 35(F) 36
+                              Branch 13
+                              FunctionEnd
diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out
index 64d0581..5e01fc6 100755
--- a/Test/baseResults/spv.doWhileLoop.frag.out
+++ b/Test/baseResults/spv.doWhileLoop.frag.out
@@ -5,7 +5,7 @@
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 34
+// Id's are bound by 35
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -16,9 +16,9 @@
                               Name 4  "main"
                               Name 9  "color"
                               Name 11  "BaseColor"
-                              Name 17  "bigColor"
-                              Name 27  "d"
-                              Name 32  "gl_FragColor"
+                              Name 18  "bigColor"
+                              Name 28  "d"
+                              Name 33  "gl_FragColor"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -26,16 +26,16 @@
                8:             TypePointer Function 7(fvec4)
               10:             TypePointer Input 7(fvec4)
    11(BaseColor):     10(ptr) Variable Input
-              16:             TypePointer UniformConstant 7(fvec4)
-    17(bigColor):     16(ptr) Variable UniformConstant
-              21:             TypeInt 32 0
-              22:     21(int) Constant 0
-              23:             TypePointer Function 6(float)
-              26:             TypePointer UniformConstant 6(float)
-           27(d):     26(ptr) Variable UniformConstant
-              29:             TypeBool
-              31:             TypePointer Output 7(fvec4)
-32(gl_FragColor):     31(ptr) Variable Output
+              17:             TypePointer UniformConstant 7(fvec4)
+    18(bigColor):     17(ptr) Variable UniformConstant
+              22:             TypeInt 32 0
+              23:     22(int) Constant 0
+              24:             TypePointer Function 6(float)
+              27:             TypePointer UniformConstant 6(float)
+           28(d):     27(ptr) Variable UniformConstant
+              30:             TypeBool
+              32:             TypePointer Output 7(fvec4)
+33(gl_FragColor):     32(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
         9(color):      8(ptr) Variable Function
@@ -43,20 +43,22 @@
                               Store 9(color) 12
                               Branch 13
               13:             Label
-              18:    7(fvec4) Load 17(bigColor)
-              19:    7(fvec4) Load 9(color)
-              20:    7(fvec4) FAdd 19 18
-                              Store 9(color) 20
-                              Branch 15
+                              LoopMerge 15 16 None
+                              Branch 14
               14:             Label
-              33:    7(fvec4) Load 9(color)
-                              Store 32(gl_FragColor) 33
-                              Return
+              19:    7(fvec4) Load 18(bigColor)
+              20:    7(fvec4) Load 9(color)
+              21:    7(fvec4) FAdd 20 19
+                              Store 9(color) 21
+                              Branch 16
               15:             Label
-              24:     23(ptr) AccessChain 9(color) 22
-              25:    6(float) Load 24
-              28:    6(float) Load 27(d)
-              30:    29(bool) FOrdLessThan 25 28
-                              LoopMerge 14 15 None
-                              BranchConditional 30 13 14
+              34:    7(fvec4) Load 9(color)
+                              Store 33(gl_FragColor) 34
+                              Return
+              16:             Label
+              25:     24(ptr) AccessChain 9(color) 23
+              26:    6(float) Load 25
+              29:    6(float) Load 28(d)
+              31:    30(bool) FOrdLessThan 26 29
+                              BranchConditional 31 13 15
                                 FunctionEnd
diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out
index df2acab..139d627 100755
--- a/Test/baseResults/spv.for-continue-break.vert.out
+++ b/Test/baseResults/spv.for-continue-break.vert.out
@@ -51,46 +51,46 @@
            38(F):      7(ptr) Variable Function
            42(G):      7(ptr) Variable Function
                               Store 8(i) 9
-                              Branch 13
+                              Branch 10
               10:             Label
-                              Store 18(A) 19
-              20:      6(int) Load 8(i)
-              22:      6(int) SMod 20 21
-              23:    16(bool) IEqual 22 9
-                              SelectionMerge 25 None
-                              BranchConditional 23 24 25
+              14:      6(int) Load 8(i)
+              17:    16(bool) SLessThan 14 15
+                              LoopMerge 12 13 None
+                              BranchConditional 17 11 12
               11:               Label
-                                Store 42(G) 43
-                                Return
-              12:               Label
-              40:      6(int)   Load 8(i)
-              41:      6(int)   IAdd 40 19
-                                Store 8(i) 41
-                                Branch 13
-              13:               Label
-              14:      6(int)   Load 8(i)
-              17:    16(bool)   SLessThan 14 15
-                                LoopMerge 11 12 None
-                                BranchConditional 17 10 11
+                                Store 18(A) 19
+              20:      6(int)   Load 8(i)
+              22:      6(int)   SMod 20 21
+              23:    16(bool)   IEqual 22 9
+                                SelectionMerge 25 None
+                                BranchConditional 23 24 25
+              12:                 Label
+                                  Store 42(G) 43
+                                  Return
+              13:                 Label
+              40:      6(int)     Load 8(i)
+              41:      6(int)     IAdd 40 19
+                                  Store 8(i) 41
+                                  Branch 10
               24:                 Label
                                   Store 26(B) 19
-                                  Branch 12
+                                  Branch 13
               27:                 Label
                                   Store 28(C) 19
                                   Branch 25
-              25:                 Label
-              29:      6(int)     Load 8(i)
-              31:      6(int)     SMod 29 30
-              32:    16(bool)     IEqual 31 9
-                                  SelectionMerge 34 None
-                                  BranchConditional 32 33 34
-              33:                   Label
-                                    Store 35(D) 19
-                                    Branch 11
-              36:                   Label
-                                    Store 37(E) 19
-                                    Branch 34
-              34:                 Label
-                                  Store 38(F) 39
+              25:               Label
+              29:      6(int)   Load 8(i)
+              31:      6(int)   SMod 29 30
+              32:    16(bool)   IEqual 31 9
+                                SelectionMerge 34 None
+                                BranchConditional 32 33 34
+              33:                 Label
+                                  Store 35(D) 19
                                   Branch 12
-                                  FunctionEnd
+              36:                 Label
+                                  Store 37(E) 19
+                                  Branch 34
+              34:               Label
+                                Store 38(F) 39
+                                Branch 13
+                                FunctionEnd
diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out
index 1645c66..3db2af6 100644
--- a/Test/baseResults/spv.for-nobody.vert.out
+++ b/Test/baseResults/spv.for-nobody.vert.out
@@ -1,59 +1,59 @@
-spv.for-nobody.vert

-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.

-

-

-Linked vertex stage:

-

-

-// Module Version 10000

-// Generated by (magic number): 80001

-// Id's are bound by 27

-

-                              Capability Shader

-               1:             ExtInstImport  "GLSL.std.450"

-                              MemoryModel Logical GLSL450

-                              EntryPoint Vertex 4  "main" 22 25 26

-                              Source GLSL 450

-                              Name 4  "main"

-                              Name 8  "i"

-                              Name 22  "r"

-                              Name 25  "gl_VertexID"

-                              Name 26  "gl_InstanceID"

-                              Decorate 22(r) Location 0

-                              Decorate 25(gl_VertexID) BuiltIn VertexId

-                              Decorate 26(gl_InstanceID) BuiltIn InstanceId

-               2:             TypeVoid

-               3:             TypeFunction 2

-               6:             TypeInt 32 1

-               7:             TypePointer Function 6(int)

-               9:      6(int) Constant 0

-              15:      6(int) Constant 10

-              16:             TypeBool

-              19:      6(int) Constant 1

-              21:             TypePointer Output 6(int)

-           22(r):     21(ptr) Variable Output

-              24:             TypePointer Input 6(int)

- 25(gl_VertexID):     24(ptr) Variable Input

-26(gl_InstanceID):     24(ptr) Variable Input

-         4(main):           2 Function None 3

-               5:             Label

-            8(i):      7(ptr) Variable Function

-                              Store 8(i) 9

-                              Branch 13

-              10:             Label

-                              Branch 12

-              11:             Label

-              23:      6(int) Load 8(i)

-                              Store 22(r) 23

-                              Return

-              12:             Label

-              18:      6(int) Load 8(i)

-              20:      6(int) IAdd 18 19

-                              Store 8(i) 20

-                              Branch 13

-              13:             Label

-              14:      6(int) Load 8(i)

-              17:    16(bool) SLessThan 14 15

-                              LoopMerge 11 12 None

-                              BranchConditional 17 10 11

-                              FunctionEnd

+spv.for-nobody.vert
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked vertex stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 27
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 22 25 26
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 22  "r"
+                              Name 25  "gl_VertexID"
+                              Name 26  "gl_InstanceID"
+                              Decorate 22(r) Location 0
+                              Decorate 25(gl_VertexID) BuiltIn VertexId
+                              Decorate 26(gl_InstanceID) BuiltIn InstanceId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              15:      6(int) Constant 10
+              16:             TypeBool
+              19:      6(int) Constant 1
+              21:             TypePointer Output 6(int)
+           22(r):     21(ptr) Variable Output
+              24:             TypePointer Input 6(int)
+ 25(gl_VertexID):     24(ptr) Variable Input
+26(gl_InstanceID):     24(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+              14:      6(int) Load 8(i)
+              17:    16(bool) SLessThan 14 15
+                              LoopMerge 12 13 None
+                              BranchConditional 17 11 12
+              11:               Label
+                                Branch 13
+              12:             Label
+              23:      6(int) Load 8(i)
+                              Store 22(r) 23
+                              Return
+              13:             Label
+              18:      6(int) Load 8(i)
+              20:      6(int) IAdd 18 19
+                              Store 8(i) 20
+                              Branch 10
+                              FunctionEnd
diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out
index e55ef9b..0b77cb1 100644
--- a/Test/baseResults/spv.for-notest.vert.out
+++ b/Test/baseResults/spv.for-notest.vert.out
@@ -1,50 +1,53 @@
-spv.for-notest.vert

-Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.

-

-

-Linked vertex stage:

-

-

-// Module Version 10000

-// Generated by (magic number): 80001

-// Id's are bound by 22

-

-                              Capability Shader

-               1:             ExtInstImport  "GLSL.std.450"

-                              MemoryModel Logical GLSL450

-                              EntryPoint Vertex 4  "main" 14 20 21

-                              Source GLSL 450

-                              Name 4  "main"

-                              Name 8  "i"

-                              Name 14  "r"

-                              Name 20  "gl_VertexID"

-                              Name 21  "gl_InstanceID"

-                              Decorate 14(r) Location 0

-                              Decorate 20(gl_VertexID) BuiltIn VertexId

-                              Decorate 21(gl_InstanceID) BuiltIn InstanceId

-               2:             TypeVoid

-               3:             TypeFunction 2

-               6:             TypeInt 32 1

-               7:             TypePointer Function 6(int)

-               9:      6(int) Constant 0

-              13:             TypePointer Output 6(int)

-           14(r):     13(ptr) Variable Output

-              17:      6(int) Constant 1

-              19:             TypePointer Input 6(int)

- 20(gl_VertexID):     19(ptr) Variable Input

-21(gl_InstanceID):     19(ptr) Variable Input

-         4(main):           2 Function None 3

-               5:             Label

-            8(i):      7(ptr) Variable Function

-                              Store 8(i) 9

-                              Branch 10

-              10:             Label

-              15:      6(int) Load 8(i)

-                              Store 14(r) 15

-                              Branch 12

-              12:             Label

-              16:      6(int) Load 8(i)

-              18:      6(int) IAdd 16 17

-                              Store 8(i) 18

-                              Branch 10

-                              FunctionEnd

+spv.for-notest.vert
+Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
+
+
+Linked vertex stage:
+
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 23
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 15 21 22
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 15  "r"
+                              Name 21  "gl_VertexID"
+                              Name 22  "gl_InstanceID"
+                              Decorate 15(r) Location 0
+                              Decorate 21(gl_VertexID) BuiltIn VertexId
+                              Decorate 22(gl_InstanceID) BuiltIn InstanceId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              14:             TypePointer Output 6(int)
+           15(r):     14(ptr) Variable Output
+              18:      6(int) Constant 1
+              20:             TypePointer Input 6(int)
+ 21(gl_VertexID):     20(ptr) Variable Input
+22(gl_InstanceID):     20(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 11
+              11:             Label
+              16:      6(int) Load 8(i)
+                              Store 15(r) 16
+                              Branch 13
+              13:             Label
+              17:      6(int) Load 8(i)
+              19:      6(int) IAdd 17 18
+                              Store 8(i) 19
+                              Branch 10
+                              FunctionEnd
diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out
index 3dd4fc3..9f17ac1 100755
--- a/Test/baseResults/spv.for-simple.vert.out
+++ b/Test/baseResults/spv.for-simple.vert.out
@@ -1,55 +1,55 @@
-spv.for-simple.vert

-

-Linked vertex stage:

-

-

-// Module Version 10000

-// Generated by (magic number): 80001

-// Id's are bound by 26

-

-                              Capability Shader

-               1:             ExtInstImport  "GLSL.std.450"

-                              MemoryModel Logical GLSL450

-                              EntryPoint Vertex 4  "main" 24 25

-                              Source ESSL 300

-                              Name 4  "main"

-                              Name 8  "i"

-                              Name 18  "j"

-                              Name 24  "gl_VertexID"

-                              Name 25  "gl_InstanceID"

-                              Decorate 24(gl_VertexID) BuiltIn VertexId

-                              Decorate 25(gl_InstanceID) BuiltIn InstanceId

-               2:             TypeVoid

-               3:             TypeFunction 2

-               6:             TypeInt 32 1

-               7:             TypePointer Function 6(int)

-               9:      6(int) Constant 0

-              15:      6(int) Constant 10

-              16:             TypeBool

-              19:      6(int) Constant 12

-              21:      6(int) Constant 1

-              23:             TypePointer Input 6(int)

- 24(gl_VertexID):     23(ptr) Variable Input

-25(gl_InstanceID):     23(ptr) Variable Input

-         4(main):           2 Function None 3

-               5:             Label

-            8(i):      7(ptr) Variable Function

-           18(j):      7(ptr) Variable Function

-                              Store 8(i) 9

-                              Branch 13

-              10:             Label

-                              Store 18(j) 19

-                              Branch 12

-              11:             Label

-                              Return

-              12:             Label

-              20:      6(int) Load 8(i)

-              22:      6(int) IAdd 20 21

-                              Store 8(i) 22

-                              Branch 13

-              13:             Label

-              14:      6(int) Load 8(i)

-              17:    16(bool) SLessThan 14 15

-                              LoopMerge 11 12 None

-                              BranchConditional 17 10 11

-                              FunctionEnd

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