Generate correctly structured do-while loops.
authorDavid Neto <dneto@google.com>
Wed, 15 Jul 2015 20:21:26 +0000 (16:21 -0400)
committerDavid Neto <dneto@google.com>
Fri, 17 Jul 2015 21:51:51 +0000 (17:51 -0400)
The loop test is always emitted before the loop body.

For do-while loops, use a phi node to track whether we're
on the first loop iteration, and only check the loop test
on the second and subsequent iterations.

For do-while loops, the loop test branch no longer occurs
at the top of the loop, so it must get its own selection
merge instruction.

A block can't be the target of more than one merge instruction.
So when the loop test executes after the body (as in do-while in GLSL)
we need to introduce a dummy block to be the target of the selection
merge just before the loop test conditional branch.

The other arm of the branch exits the loop and hence is the
"break block" exception in the structured control flow rules.

SPIRV/GlslangToSpv.cpp
SPIRV/SpvBuilder.cpp
SPIRV/SpvBuilder.h
Test/baseResults/spv.do-simple.vert.out
Test/baseResults/spv.do-while-continue-break.vert.out
Test/baseResults/spv.doWhileLoop.frag.out
Test/baseResults/spv.loops.frag.out
Test/baseResults/spv.loopsArtificial.frag.out

index 7f9214c..dac5958 100644 (file)
@@ -1147,28 +1147,18 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
     // body emission needs to know what the for-loop terminal is when it sees a "continue"
     loopTerminal.push(node->getTerminal());
 
-    builder.makeNewLoop();
-
-    bool bodyOut = false;
-    if (! node->testFirst()) {
-        builder.endLoopHeaderWithoutTest();
-        if (node->getBody()) {
-            breakForLoop.push(true);
-            node->getBody()->traverse(this);
-            breakForLoop.pop();
-        }
-        bodyOut = true;
-        builder.createBranchToLoopTest();
-    }
+    builder.makeNewLoop(node->testFirst());
 
     if (node->getTest()) {
         node->getTest()->traverse(this);
         // the AST only contained the test computation, not the branch, we have to add it
         spv::Id condition = builder.accessChainLoad(TranslatePrecisionDecoration(node->getTest()->getType()));
         builder.createLoopTestBranch(condition);
+    } else {
+        builder.createBranchToBody();
     }
 
-    if (! bodyOut && node->getBody()) {
+    if (node->getBody()) {
         breakForLoop.push(true);
         node->getBody()->traverse(this);
         breakForLoop.pop();
index 75e622c..c327d38 100644 (file)
@@ -1736,16 +1736,29 @@ void Builder::endSwitch(std::vector<Block*>& /*segmentBlock*/)
 }
 
 // Comments in header
-void Builder::makeNewLoop()
+void Builder::makeNewLoop(bool loopTestFirst)
 {
-    Loop loop = { };
-
-    loop.function = &getBuildPoint()->getParent();
-    loop.header = new Block(getUniqueId(), *loop.function);
-    loop.merge  = new Block(getUniqueId(), *loop.function);
-    loop.test   = NULL;
+    loops.push({ });
+    Loop& loop = loops.top();
 
-    loops.push(loop);
+    loop.function  = &getBuildPoint()->getParent();
+    loop.header    = new Block(getUniqueId(), *loop.function);
+    loop.merge     = new Block(getUniqueId(), *loop.function);
+    // Delaying creation of the loop body perturbs test results less,
+    // which makes for easier patch review.
+    // TODO(dneto): Create the loop body block here, instead of
+    // upon first use.
+    loop.body      = 0;
+    loop.testFirst = loopTestFirst;
+    loop.isFirstIteration = 0;
+
+    // The loop test is always emitted before the loop body.
+    // But if the loop test executes at the bottom of the loop, then
+    // execute the test only on the second and subsequent iterations.
+
+    // Remember the block that branches to the loop header.  This
+    // is required for the test-after-body case.
+    Block* preheader = getBuildPoint();
 
     // Branch into the loop
     createBranch(loop.header);
@@ -1753,56 +1766,95 @@ void Builder::makeNewLoop()
     // Set ourselves inside the loop
     loop.function->addBlock(loop.header);
     setBuildPoint(loop.header);
+
+    if (!loopTestFirst) {
+        // Generate code to defer the loop test until the second and
+        // subsequent iterations.
+
+        // A phi node determines whether we're on the first iteration.
+        loop.isFirstIteration = new Instruction(getUniqueId(), makeBoolType(), OpPhi);
+        // It's always the first iteration when coming from the preheader.
+        // All other branches to this loop header will need to indicate "false",
+        // but we don't yet know where they will come from.
+        loop.isFirstIteration->addIdOperand(makeBoolConstant(true));
+        loop.isFirstIteration->addIdOperand(preheader->getId());
+        getBuildPoint()->addInstruction(loop.isFirstIteration);
+
+        // Mark the end of the structured loop. This must exist in the loop header block.
+        createMerge(OpLoopMerge, loop.merge, LoopControlMaskNone);
+
+        // Generate code to see if this is the first iteration of the loop.
+        // It needs to be in its own block, since the loop merge and
+        // the selection merge instructions can't both be in the same
+        // (header) block.
+        Block* firstIterationCheck = new Block(getUniqueId(), *loop.function);
+        createBranch(firstIterationCheck);
+        loop.function->addBlock(firstIterationCheck);
+        setBuildPoint(firstIterationCheck);
+
+        loop.body = new Block(getUniqueId(), *loop.function);
+        // Control flow after this "if" normally reconverges at the loop body.
+        // However, the loop test has a "break branch" out of this selection
+        // construct because it can transfer control to the loop merge block.
+        createMerge(OpSelectionMerge, loop.body, SelectionControlMaskNone);
+
+        Block* loopTest = new Block(getUniqueId(), *loop.function);
+        createConditionalBranch(loop.isFirstIteration->getResultId(), loop.body, loopTest);
+
+        loop.function->addBlock(loopTest);
+        setBuildPoint(loopTest);
+    }
 }
 
 void Builder::createLoopTestBranch(Id condition)
 {
     Loop& loop = loops.top();
 
-    // If loop.test exists, then we've already generated the LoopMerge
-    // for this loop.
-    if (!loop.test)
-      createMerge(OpLoopMerge, loop.merge, LoopControlMaskNone);
-
-    // Branching to the "body" block will keep control inside
-    // the loop.
-    Block* body = new Block(getUniqueId(), *loop.function);
-    createConditionalBranch(condition, body, loop.merge);
-    loop.function->addBlock(body);
-    setBuildPoint(body);
+    // Generate the merge instruction. If the loop test executes before
+    // the body, then this is a loop merge.  Otherwise the loop merge
+    // has already been generated and this is a conditional merge.
+    if (loop.testFirst) {
+        createMerge(OpLoopMerge, loop.merge, LoopControlMaskNone);
+        loop.body = new Block(getUniqueId(), *loop.function);
+        // Branching to the "body" block will keep control inside
+        // the loop.
+        createConditionalBranch(condition, loop.body, loop.merge);
+        loop.function->addBlock(loop.body);
+        setBuildPoint(loop.body);
+    } else {
+        // The branch to the loop merge block is the allowed exception
+        // to the structured control flow.  Otherwise, control flow will
+        // continue to loop.body block.  Since that is already the target
+        // of a merge instruction, and a block can't be the target of more
+        // than one merge instruction, we need to make an intermediate block.
+        Block* stayInLoopBlock = new Block(getUniqueId(), *loop.function);
+        createMerge(OpSelectionMerge, stayInLoopBlock, SelectionControlMaskNone);
+
+        // This is the loop test.
+        createConditionalBranch(condition, stayInLoopBlock, loop.merge);
+
+        // The dummy block just branches to the real loop body.
+        loop.function->addBlock(stayInLoopBlock);
+        setBuildPoint(stayInLoopBlock);
+        createBranchToBody();
+    }
 }
 
-void Builder::endLoopHeaderWithoutTest()
+void Builder::createBranchToBody()
 {
     Loop& loop = loops.top();
+    assert(loop.body);
 
-    createMerge(OpLoopMerge, loop.merge, LoopControlMaskNone);
-    Block* body = new Block(getUniqueId(), *loop.function);
-    createBranch(body);
-    loop.function->addBlock(body);
-    setBuildPoint(body);
-
-    assert(!loop.test);
-    loop.test = new Block(getUniqueId(), *loop.function);
-}
-
-void Builder::createBranchToLoopTest()
-{
-    Loop& loop = loops.top();
-    Block* testBlock = loop.test;
-    assert(testBlock);
-    createBranch(testBlock);
-    loop.function->addBlock(testBlock);
-    setBuildPoint(testBlock);
+    // This is a reconvergence of control flow, so no merge instruction
+    // is required.
+    createBranch(loop.body);
+    loop.function->addBlock(loop.body);
+    setBuildPoint(loop.body);
 }
 
 void Builder::createLoopContinue()
 {
-    Loop& loop = loops.top();
-    if (loop.test)
-      createBranch(loop.test);
-    else
-      createBranch(loop.header);
+    createBranchToLoopHeaderFromInside(loops.top());
     // Set up a block for dead code.
     createAndSetNoPredecessorBlock("post-loop-continue");
 }
@@ -1821,7 +1873,7 @@ void Builder::closeLoop()
     Loop& loop = loops.top();
 
     // Branch back to the top
-    createBranch(loop.header);
+    createBranchToLoopHeaderFromInside(loop);
 
     // Add the merge block and set the build point to it
     loop.function->addBlock(loop.merge);
@@ -1830,6 +1882,18 @@ void Builder::closeLoop()
     loops.pop();
 }
 
+// Create a branch to the header of the given loop, from inside
+// the loop body.
+// Adjusts the phi node for the first-iteration value if needeed.
+void Builder::createBranchToLoopHeaderFromInside(const Loop& loop)
+{
+    createBranch(loop.header);
+    if (loop.isFirstIteration) {
+        loop.isFirstIteration->addIdOperand(makeBoolConstant(false));
+        loop.isFirstIteration->addIdOperand(getBuildPoint()->getId());
+    }
+}
+
 void Builder::clearAccessChain()
 {
     accessChain.base = 0;
index 4eef5a4..de7c336 100644 (file)
@@ -357,35 +357,25 @@ public:
     // Finish off the innermost switch.
     void endSwitch(std::vector<Block*>& segmentBB);
 
-    // Start the beginning of a new loop.
-    void makeNewLoop();
+    // Start the beginning of a new loop, and prepare the builder to
+    // generate code for the loop test.
+    // The loopTestFirst parameter is true when the loop test executes before
+    // the body.  (It is false for do-while loops.)
+    void makeNewLoop(bool loopTestFirst);
 
     // Add the branch for the loop test, based on the given condition.
-    // The true branch goes to the block that remains inside the loop, and
-    // the false branch goes to the loop's merge block.  The  builder insertion
-    // point will be placed at the start of the inside-the-loop block.
+    // The true branch goes to the first block in the loop body, and
+    // the false branch goes to the loop's merge block.  The builder insertion
+    // point will be placed at the start of the body.
     void createLoopTestBranch(Id condition);
 
-    // Finish generating the loop header block in the case where the loop test
-    // is at the bottom of the loop.  It will include the LoopMerge instruction
-    // and a branch to the rest of the body.  The loop header block must be
-    // separate from the rest of the body to make room for the the two kinds
-    // of *Merge instructions that might have to occur just before a branch:
-    // the loop header must have a LoopMerge as its second-last instruction,
-    // and the body might begin with a conditional branch, which must have its
-    // own SelectionMerge instruction.
-    // Also create the basic block that will contain the loop test, but don't
-    // insert it into the function yet.  Any "continue" constructs in this loop
-    // will branch to the loop test block. The builder insertion point will be
-    // placed at the start of the body block.
-    void endLoopHeaderWithoutTest();
-
-    // Generate a branch to the loop test block.  This can only be called if
-    // the loop test is at the bottom of the loop. The builder insertion point
-    // is left at the start of the test block.
-    void createBranchToLoopTest();
+    // Generate an unconditional branch to the loop body.  The builder insertion
+    // point will be placed at the start of the body.  Use this when there is
+    // no loop test.
+    void createBranchToBody();
 
     // Add a branch to the test of the current (innermost) loop.
+    // The way we generate code, that's also the loop header.
     void createLoopContinue();
 
     // Add an exit (e.g. "break") for the innermost loop that you're in
@@ -499,6 +489,9 @@ protected:
     void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock);
     void dumpInstructions(std::vector<unsigned int>&, const std::vector<Instruction*>&) const;
 
+    struct Loop; // Defined below.
+    void createBranchToLoopHeaderFromInside(const Loop& loop);
+
     SourceLanguage source;
     int sourceVersion;
     std::vector<const char*> extensions;
@@ -543,11 +536,18 @@ protected:
         // to the merge block when either the loop test fails, or when a
         // nested "break" is encountered.
         Block* merge;
-        // If not NULL, the test block is the basic block containing the loop
-        // test and the conditional branch back to the header or the merge
-        // block.  This is created for "do-while" loops, and is the target of
-        // any "continue" constructs that might exist.
-        Block* test;
+        // The body block is the first basic block in the body of the loop, i.e.
+        // the code that is to be repeatedly executed, aside from loop control.
+        // This member is null until we generate code that references the loop
+        // body block.
+        Block* body;
+        // True when the loop test executes before the body.
+        bool testFirst;
+        // When the test executes after the body, this is defined as the phi
+        // instruction that tells us whether we are on the first iteration of
+        // the loop.  Otherwise this is null.
+        Instruction* isFirstIteration;
+        // The function containing the loop.
         Function* function;
     };
 
index 321d0e0..1e82c56 100644 (file)
@@ -5,7 +5,7 @@ Linked vertex stage:
 \r
 // Module Version 99\r
 // Generated by (magic number): 51a00bb\r
-// Id's are bound by 26\r
+// Id's are bound by 30\r
 \r
                               Source ESSL 300\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -13,45 +13,52 @@ Linked vertex stage:
                               EntryPoint Vertex 4\r
                               Name 4  "main"\r
                               Name 9  "i"\r
-                              Name 24  "gl_VertexID"\r
-                              Name 25  "gl_InstanceID"\r
+                              Name 28  "gl_VertexID"\r
+                              Name 29  "gl_InstanceID"\r
                               Decorate 9(i) PrecisionHigh \r
-                              Decorate 24(gl_VertexID) PrecisionHigh \r
-                              Decorate 24(gl_VertexID) BuiltIn VertexId\r
-                              Decorate 24(gl_VertexID) NoStaticUse \r
-                              Decorate 25(gl_InstanceID) PrecisionHigh \r
-                              Decorate 25(gl_InstanceID) BuiltIn InstanceId\r
-                              Decorate 25(gl_InstanceID) NoStaticUse \r
+                              Decorate 28(gl_VertexID) PrecisionHigh \r
+                              Decorate 28(gl_VertexID) BuiltIn VertexId\r
+                              Decorate 28(gl_VertexID) NoStaticUse \r
+                              Decorate 29(gl_InstanceID) PrecisionHigh \r
+                              Decorate 29(gl_InstanceID) BuiltIn InstanceId\r
+                              Decorate 29(gl_InstanceID) NoStaticUse \r
                2:             TypeVoid\r
                3:             TypeFunction 2 \r
                7:             TypeInt 32 1\r
                8:             TypePointer Function 7(int)\r
               10:      7(int) Constant 0\r
-              16:      7(int) Constant 1\r
-              19:      7(int) Constant 10\r
-              20:             TypeBool\r
-              23:             TypePointer Input 7(int)\r
- 24(gl_VertexID):     23(ptr) Variable Input \r
-25(gl_InstanceID):     23(ptr) Variable Input \r
+              14:             TypeBool\r
+              15:    14(bool) ConstantTrue\r
+              20:      7(int) Constant 10\r
+              24:      7(int) Constant 1\r
+              26:    14(bool) ConstantFalse\r
+              27:             TypePointer Input 7(int)\r
+ 28(gl_VertexID):     27(ptr) Variable Input \r
+29(gl_InstanceID):     27(ptr) Variable Input \r
          4(main):           2 Function None 3\r
                5:             Label\r
             9(i):      8(ptr) Variable Function \r
                               Store 9(i) 10 \r
                               Branch 11\r
               11:             Label\r
+              13:    14(bool) Phi 15 5 26 17\r
                               LoopMerge 12 None\r
-                              Branch 13\r
-              13:             Label\r
-              15:      7(int) Load 9(i) \r
-              17:      7(int) IAdd 15 16\r
-                              Store 9(i) 17 \r
-                              Branch 14\r
-              14:             Label\r
-              18:      7(int) Load 9(i) \r
-              21:    20(bool) SLessThan 18 19\r
-                              BranchConditional 21 22 12 \r
+                              Branch 16\r
+              16:             Label\r
+                              SelectionMerge 17 None\r
+                              BranchConditional 13 17 18 \r
+              18:               Label\r
+              19:      7(int)   Load 9(i) \r
+              21:    14(bool)   SLessThan 19 20\r
+                                SelectionMerge 22 None\r
+                                BranchConditional 21 22 12 \r
               22:               Label\r
-                                Branch 11\r
+                                Branch 17\r
+              17:             Label\r
+              23:      7(int) Load 9(i) \r
+              25:      7(int) IAdd 23 24\r
+                              Store 9(i) 25 \r
+                              Branch 11\r
               12:             Label\r
                               Branch 6\r
                6:             Label\r
index 5fb34db..749841d 100644 (file)
@@ -5,7 +5,7 @@ Linked vertex stage:
 \r
 // Module Version 99\r
 // Generated by (magic number): 51a00bb\r
-// Id's are bound by 48\r
+// Id's are bound by 52\r
 \r
                               Source ESSL 300\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -13,97 +13,104 @@ Linked vertex stage:
                               EntryPoint Vertex 4\r
                               Name 4  "main"\r
                               Name 9  "i"\r
-                              Name 15  "A"\r
-                              Name 22  "B"\r
-                              Name 25  "C"\r
-                              Name 31  "D"\r
-                              Name 34  "E"\r
-                              Name 36  "F"\r
-                              Name 43  "G"\r
-                              Name 46  "gl_VertexID"\r
-                              Name 47  "gl_InstanceID"\r
+                              Name 25  "A"\r
+                              Name 31  "B"\r
+                              Name 34  "C"\r
+                              Name 40  "D"\r
+                              Name 43  "E"\r
+                              Name 45  "F"\r
+                              Name 47  "G"\r
+                              Name 50  "gl_VertexID"\r
+                              Name 51  "gl_InstanceID"\r
                               Decorate 9(i) PrecisionHigh \r
-                              Decorate 15(A) PrecisionHigh \r
-                              Decorate 22(B) PrecisionHigh \r
-                              Decorate 25(C) PrecisionHigh \r
-                              Decorate 31(D) PrecisionHigh \r
-                              Decorate 34(E) PrecisionHigh \r
-                              Decorate 36(F) PrecisionHigh \r
-                              Decorate 43(G) PrecisionHigh \r
-                              Decorate 46(gl_VertexID) PrecisionHigh \r
-                              Decorate 46(gl_VertexID) BuiltIn VertexId\r
-                              Decorate 46(gl_VertexID) NoStaticUse \r
-                              Decorate 47(gl_InstanceID) PrecisionHigh \r
-                              Decorate 47(gl_InstanceID) BuiltIn InstanceId\r
-                              Decorate 47(gl_InstanceID) NoStaticUse \r
+                              Decorate 25(A) PrecisionHigh \r
+                              Decorate 31(B) PrecisionHigh \r
+                              Decorate 34(C) PrecisionHigh \r
+                              Decorate 40(D) PrecisionHigh \r
+                              Decorate 43(E) PrecisionHigh \r
+                              Decorate 45(F) PrecisionHigh \r
+                              Decorate 47(G) PrecisionHigh \r
+                              Decorate 50(gl_VertexID) PrecisionHigh \r
+                              Decorate 50(gl_VertexID) BuiltIn VertexId\r
+                              Decorate 50(gl_VertexID) NoStaticUse \r
+                              Decorate 51(gl_InstanceID) PrecisionHigh \r
+                              Decorate 51(gl_InstanceID) BuiltIn InstanceId\r
+                              Decorate 51(gl_InstanceID) NoStaticUse \r
                2:             TypeVoid\r
                3:             TypeFunction 2 \r
                7:             TypeInt 32 1\r
                8:             TypePointer Function 7(int)\r
               10:      7(int) Constant 0\r
-              17:      7(int) Constant 2\r
-              18:             TypeBool\r
-              23:      7(int) Constant 1\r
-              27:      7(int) Constant 5\r
-              32:      7(int) Constant 3\r
-              35:      7(int) Constant 42\r
-              37:      7(int) Constant 99\r
-              40:      7(int) Constant 19\r
-              44:      7(int) Constant 12\r
-              45:             TypePointer Input 7(int)\r
- 46(gl_VertexID):     45(ptr) Variable Input \r
-47(gl_InstanceID):     45(ptr) Variable Input \r
+              14:             TypeBool\r
+              15:    14(bool) ConstantTrue\r
+              20:      7(int) Constant 1\r
+              22:      7(int) Constant 19\r
+              27:      7(int) Constant 2\r
+              32:    14(bool) ConstantFalse\r
+              36:      7(int) Constant 5\r
+              41:      7(int) Constant 3\r
+              44:      7(int) Constant 42\r
+              46:      7(int) Constant 99\r
+              48:      7(int) Constant 12\r
+              49:             TypePointer Input 7(int)\r
+ 50(gl_VertexID):     49(ptr) Variable Input \r
+51(gl_InstanceID):     49(ptr) Variable Input \r
          4(main):           2 Function None 3\r
                5:             Label\r
             9(i):      8(ptr) Variable Function \r
-           15(A):      8(ptr) Variable Function \r
-           22(B):      8(ptr) Variable Function \r
-           25(C):      8(ptr) Variable Function \r
-           31(D):      8(ptr) Variable Function \r
-           34(E):      8(ptr) Variable Function \r
-           36(F):      8(ptr) Variable Function \r
-           43(G):      8(ptr) Variable Function \r
+           25(A):      8(ptr) Variable Function \r
+           31(B):      8(ptr) Variable Function \r
+           34(C):      8(ptr) Variable Function \r
+           40(D):      8(ptr) Variable Function \r
+           43(E):      8(ptr) Variable Function \r
+           45(F):      8(ptr) Variable Function \r
+           47(G):      8(ptr) Variable Function \r
                               Store 9(i) 10 \r
                               Branch 11\r
               11:             Label\r
+              13:    14(bool) Phi 15 5 32 29 32 39\r
                               LoopMerge 12 None\r
-                              Branch 13\r
-              13:             Label\r
-                              Store 15(A) 10 \r
-              16:      7(int) Load 9(i) \r
-              19:    18(bool) IEqual 16 17\r
-                              SelectionMerge 21 None\r
-                              BranchConditional 19 20 21 \r
-              20:               Label\r
-                                Store 22(B) 23 \r
-                                Branch 14\r
+                              Branch 16\r
+              16:             Label\r
+                              SelectionMerge 17 None\r
+                              BranchConditional 13 17 18 \r
+              18:               Label\r
+              19:      7(int)   Load 9(i) \r
+              21:      7(int)   IAdd 19 20\r
+                                Store 9(i) 21 \r
+              23:    14(bool)   SLessThan 21 22\r
+                                SelectionMerge 24 None\r
+                                BranchConditional 23 24 12 \r
               24:               Label\r
-                                Store 25(C) 17 \r
-                                Branch 21\r
-              21:             Label\r
+                                Branch 17\r
+              17:             Label\r
+                              Store 25(A) 10 \r
               26:      7(int) Load 9(i) \r
-              28:    18(bool) IEqual 26 27\r
+              28:    14(bool) IEqual 26 27\r
                               SelectionMerge 30 None\r
                               BranchConditional 28 29 30 \r
               29:               Label\r
-                                Store 31(D) 32 \r
-                                Branch 12\r
+                                Store 31(B) 20 \r
+                                Branch 11\r
               33:               Label\r
-                                Store 34(E) 35 \r
+                                Store 34(C) 27 \r
                                 Branch 30\r
               30:             Label\r
-                              Store 36(F) 37 \r
-                              Branch 14\r
-              14:             Label\r
-              38:      7(int) Load 9(i) \r
-              39:      7(int) IAdd 38 23\r
-                              Store 9(i) 39 \r
-              41:    18(bool) SLessThan 39 40\r
-                              BranchConditional 41 42 12 \r
-              42:             Label\r
+              35:      7(int) Load 9(i) \r
+              37:    14(bool) IEqual 35 36\r
+                              SelectionMerge 39 None\r
+                              BranchConditional 37 38 39 \r
+              38:               Label\r
+                                Store 40(D) 41 \r
+                                Branch 12\r
+              42:               Label\r
+                                Store 43(E) 44 \r
+                                Branch 39\r
+              39:             Label\r
+                              Store 45(F) 46 \r
                               Branch 11\r
               12:             Label\r
-                              Store 43(G) 44 \r
+                              Store 47(G) 48 \r
                               Branch 6\r
                6:             Label\r
                               Return\r
index 18783ba..71b4062 100644 (file)
@@ -5,7 +5,7 @@ Linked fragment stage:
 \r
 // Module Version 99\r
 // Generated by (magic number): 51a00bb\r
-// Id's are bound by 34\r
+// Id's are bound by 38\r
 \r
                               Source GLSL 110\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -14,11 +14,11 @@ Linked fragment stage:
                               Name 4  "main"\r
                               Name 10  "color"\r
                               Name 12  "BaseColor"\r
-                              Name 19  "bigColor"\r
-                              Name 26  "d"\r
-                              Name 32  "gl_FragColor"\r
+                              Name 25  "d"\r
+                              Name 30  "bigColor"\r
+                              Name 36  "gl_FragColor"\r
                               Decorate 12(BaseColor) Smooth \r
-                              Decorate 32(gl_FragColor) BuiltIn FragColor\r
+                              Decorate 36(gl_FragColor) BuiltIn FragColor\r
                2:             TypeVoid\r
                3:             TypeFunction 2 \r
                7:             TypeFloat 32\r
@@ -26,13 +26,15 @@ Linked fragment stage:
                9:             TypePointer Function 8(fvec4)\r
               11:             TypePointer Input 8(fvec4)\r
    12(BaseColor):     11(ptr) Variable Input \r
-              18:             TypePointer UniformConstant 8(fvec4)\r
-    19(bigColor):     18(ptr) Variable UniformConstant \r
-              25:             TypePointer UniformConstant 7(float)\r
-           26(d):     25(ptr) Variable UniformConstant \r
-              28:             TypeBool\r
-              31:             TypePointer Output 8(fvec4)\r
-32(gl_FragColor):     31(ptr) Variable Output \r
+              17:             TypeBool\r
+              18:    17(bool) ConstantTrue\r
+              24:             TypePointer UniformConstant 7(float)\r
+           25(d):     24(ptr) Variable UniformConstant \r
+              29:             TypePointer UniformConstant 8(fvec4)\r
+    30(bigColor):     29(ptr) Variable UniformConstant \r
+              34:    17(bool) ConstantFalse\r
+              35:             TypePointer Output 8(fvec4)\r
+36(gl_FragColor):     35(ptr) Variable Output \r
          4(main):           2 Function None 3\r
                5:             Label\r
        10(color):      9(ptr) Variable Function \r
@@ -40,25 +42,30 @@ Linked fragment stage:
                               Store 10(color) 13 \r
                               Branch 14\r
               14:             Label\r
+              16:    17(bool) Phi 18 5 34 20\r
                               LoopMerge 15 None\r
-                              Branch 16\r
-              16:             Label\r
-              20:    8(fvec4) Load 19(bigColor) \r
-              21:    8(fvec4) Load 10(color) \r
-              22:    8(fvec4) FAdd 21 20\r
-                              Store 10(color) 22 \r
-                              Branch 17\r
-              17:             Label\r
-              23:    8(fvec4) Load 10(color) \r
-              24:    7(float) CompositeExtract 23 0\r
-              27:    7(float) Load 26(d) \r
-              29:    28(bool) FOrdLessThan 24 27\r
-                              BranchConditional 29 30 15 \r
-              30:               Label\r
-                                Branch 14\r
+                              Branch 19\r
+              19:             Label\r
+                              SelectionMerge 20 None\r
+                              BranchConditional 16 20 21 \r
+              21:               Label\r
+              22:    8(fvec4)   Load 10(color) \r
+              23:    7(float)   CompositeExtract 22 0\r
+              26:    7(float)   Load 25(d) \r
+              27:    17(bool)   FOrdLessThan 23 26\r
+                                SelectionMerge 28 None\r
+                                BranchConditional 27 28 15 \r
+              28:               Label\r
+                                Branch 20\r
+              20:             Label\r
+              31:    8(fvec4) Load 30(bigColor) \r
+              32:    8(fvec4) Load 10(color) \r
+              33:    8(fvec4) FAdd 32 31\r
+                              Store 10(color) 33 \r
+                              Branch 14\r
               15:             Label\r
-              33:    8(fvec4) Load 10(color) \r
-                              Store 32(gl_FragColor) 33 \r
+              37:    8(fvec4) Load 10(color) \r
+                              Store 36(gl_FragColor) 37 \r
                               Branch 6\r
                6:             Label\r
                               Return\r
index 750e11d..0e7c712 100644 (file)
@@ -7,7 +7,7 @@ Linked fragment stage:
 \r
 // Module Version 99\r
 // Generated by (magic number): 51a00bb\r
-// Id's are bound by 737\r
+// Id's are bound by 750\r
 \r
                               Source GLSL 130\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -27,67 +27,67 @@ Linked fragment stage:
                               Name 130  "i"\r
                               Name 136  "Count"\r
                               Name 140  "bigColor2"\r
-                              Name 151  "bigColor3"\r
-                              Name 160  "i"\r
-                              Name 175  "i"\r
-                              Name 213  "i"\r
-                              Name 238  "i"\r
-                              Name 266  "i"\r
-                              Name 296  "bigColor4"\r
-                              Name 335  "bigColor5"\r
-                              Name 341  "d5"\r
-                              Name 359  "d6"\r
-                              Name 371  "bigColor6"\r
-                              Name 406  "d7"\r
-                              Name 437  "bigColor7"\r
-                              Name 459  "d8"\r
-                              Name 506  "d9"\r
-                              Name 538  "d10"\r
-                              Name 549  "d11"\r
-                              Name 561  "d12"\r
-                              Name 589  "bigColor8"\r
-                              Name 617  "gl_FragColor"\r
-                              Name 623  "d14"\r
-                              Name 629  "d15"\r
-                              Name 646  "d16"\r
-                              Name 683  "d18"\r
-                              Name 694  "d17"\r
-                              Name 720  "d13"\r
-                              Name 721  "d19"\r
-                              Name 722  "d20"\r
-                              Name 723  "d21"\r
-                              Name 724  "d22"\r
-                              Name 725  "d23"\r
-                              Name 726  "d24"\r
-                              Name 727  "d25"\r
-                              Name 728  "d26"\r
-                              Name 729  "d27"\r
-                              Name 730  "d28"\r
-                              Name 731  "d29"\r
-                              Name 732  "d30"\r
-                              Name 733  "d31"\r
-                              Name 734  "d32"\r
-                              Name 735  "d33"\r
-                              Name 736  "d34"\r
+                              Name 158  "bigColor3"\r
+                              Name 163  "i"\r
+                              Name 178  "i"\r
+                              Name 216  "i"\r
+                              Name 241  "i"\r
+                              Name 269  "i"\r
+                              Name 306  "bigColor4"\r
+                              Name 344  "d5"\r
+                              Name 348  "bigColor5"\r
+                              Name 366  "d6"\r
+                              Name 378  "bigColor6"\r
+                              Name 413  "d7"\r
+                              Name 447  "bigColor7"\r
+                              Name 472  "d8"\r
+                              Name 517  "d9"\r
+                              Name 549  "d10"\r
+                              Name 560  "d11"\r
+                              Name 572  "d12"\r
+                              Name 600  "bigColor8"\r
+                              Name 628  "gl_FragColor"\r
+                              Name 634  "d14"\r
+                              Name 640  "d15"\r
+                              Name 657  "d16"\r
+                              Name 696  "d17"\r
+                              Name 702  "d18"\r
+                              Name 733  "d13"\r
+                              Name 734  "d19"\r
+                              Name 735  "d20"\r
+                              Name 736  "d21"\r
+                              Name 737  "d22"\r
+                              Name 738  "d23"\r
+                              Name 739  "d24"\r
+                              Name 740  "d25"\r
+                              Name 741  "d26"\r
+                              Name 742  "d27"\r
+                              Name 743  "d28"\r
+                              Name 744  "d29"\r
+                              Name 745  "d30"\r
+                              Name 746  "d31"\r
+                              Name 747  "d32"\r
+                              Name 748  "d33"\r
+                              Name 749  "d34"\r
                               Decorate 12(BaseColor) Smooth \r
-                              Decorate 617(gl_FragColor) BuiltIn FragColor\r
-                              Decorate 720(d13) NoStaticUse \r
-                              Decorate 721(d19) NoStaticUse \r
-                              Decorate 722(d20) NoStaticUse \r
-                              Decorate 723(d21) NoStaticUse \r
-                              Decorate 724(d22) NoStaticUse \r
-                              Decorate 725(d23) NoStaticUse \r
-                              Decorate 726(d24) NoStaticUse \r
-                              Decorate 727(d25) NoStaticUse \r
-                              Decorate 728(d26) NoStaticUse \r
-                              Decorate 729(d27) NoStaticUse \r
-                              Decorate 730(d28) NoStaticUse \r
-                              Decorate 731(d29) NoStaticUse \r
-                              Decorate 732(d30) NoStaticUse \r
-                              Decorate 733(d31) NoStaticUse \r
-                              Decorate 734(d32) NoStaticUse \r
-                              Decorate 735(d33) NoStaticUse \r
-                              Decorate 736(d34) NoStaticUse \r
+                              Decorate 628(gl_FragColor) BuiltIn FragColor\r
+                              Decorate 733(d13) NoStaticUse \r
+                              Decorate 734(d19) NoStaticUse \r
+                              Decorate 735(d20) NoStaticUse \r
+                              Decorate 736(d21) NoStaticUse \r
+                              Decorate 737(d22) NoStaticUse \r
+                              Decorate 738(d23) NoStaticUse \r
+                              Decorate 739(d24) NoStaticUse \r
+                              Decorate 740(d25) NoStaticUse \r
+                              Decorate 741(d26) NoStaticUse \r
+                              Decorate 742(d27) NoStaticUse \r
+                              Decorate 743(d28) NoStaticUse \r
+                              Decorate 744(d29) NoStaticUse \r
+                              Decorate 745(d30) NoStaticUse \r
+                              Decorate 746(d31) NoStaticUse \r
+                              Decorate 747(d32) NoStaticUse \r
+                              Decorate 748(d33) NoStaticUse \r
+                              Decorate 749(d34) NoStaticUse \r
                2:             TypeVoid\r
                3:             TypeFunction 2 \r
                7:             TypeFloat 32\r
@@ -120,61 +120,62 @@ Linked fragment stage:
       136(Count):    135(ptr) Variable UniformConstant \r
   140(bigColor2):     51(ptr) Variable UniformConstant \r
              145:    128(int) Constant 1\r
-  151(bigColor3):     51(ptr) Variable UniformConstant \r
-             164:    128(int) Constant 42\r
-             179:    128(int) Constant 100\r
-             184:    7(float) Constant 1101004800\r
-             217:    128(int) Constant 120\r
-  296(bigColor4):     51(ptr) Variable UniformConstant \r
-  335(bigColor5):     51(ptr) Variable UniformConstant \r
-         341(d5):     46(ptr) Variable UniformConstant \r
-         359(d6):     46(ptr) Variable UniformConstant \r
-  371(bigColor6):     51(ptr) Variable UniformConstant \r
-         406(d7):     46(ptr) Variable UniformConstant \r
-             432:    7(float) Constant 0\r
-  437(bigColor7):     51(ptr) Variable UniformConstant \r
-         459(d8):     46(ptr) Variable UniformConstant \r
-             478:    7(float) Constant 1073741824\r
-         506(d9):     46(ptr) Variable UniformConstant \r
-             523:    7(float) Constant 1084227584\r
-        538(d10):     46(ptr) Variable UniformConstant \r
-        549(d11):     46(ptr) Variable UniformConstant \r
-        561(d12):     46(ptr) Variable UniformConstant \r
-             586:    7(float) Constant 1092616192\r
-  589(bigColor8):     51(ptr) Variable UniformConstant \r
-             616:             TypePointer Output 8(fvec4)\r
-617(gl_FragColor):    616(ptr) Variable Output \r
-        623(d14):     46(ptr) Variable UniformConstant \r
-        629(d15):     46(ptr) Variable UniformConstant \r
-        646(d16):     46(ptr) Variable UniformConstant \r
-        683(d18):     46(ptr) Variable UniformConstant \r
-        694(d17):     46(ptr) Variable UniformConstant \r
-        720(d13):     46(ptr) Variable UniformConstant \r
-        721(d19):     46(ptr) Variable UniformConstant \r
-        722(d20):     46(ptr) Variable UniformConstant \r
-        723(d21):     46(ptr) Variable UniformConstant \r
-        724(d22):     46(ptr) Variable UniformConstant \r
-        725(d23):     46(ptr) Variable UniformConstant \r
-        726(d24):     46(ptr) Variable UniformConstant \r
-        727(d25):     46(ptr) Variable UniformConstant \r
-        728(d26):     46(ptr) Variable UniformConstant \r
-        729(d27):     46(ptr) Variable UniformConstant \r
-        730(d28):     46(ptr) Variable UniformConstant \r
-        731(d29):     46(ptr) Variable UniformConstant \r
-        732(d30):     46(ptr) Variable UniformConstant \r
-        733(d31):     46(ptr) Variable UniformConstant \r
-        734(d32):     46(ptr) Variable UniformConstant \r
-        735(d33):     46(ptr) Variable UniformConstant \r
-        736(d34):     46(ptr) Variable UniformConstant \r
+  158(bigColor3):     51(ptr) Variable UniformConstant \r
+             162:    16(bool) ConstantFalse\r
+             167:    128(int) Constant 42\r
+             182:    128(int) Constant 100\r
+             187:    7(float) Constant 1101004800\r
+             220:    128(int) Constant 120\r
+  306(bigColor4):     51(ptr) Variable UniformConstant \r
+         344(d5):     46(ptr) Variable UniformConstant \r
+  348(bigColor5):     51(ptr) Variable UniformConstant \r
+         366(d6):     46(ptr) Variable UniformConstant \r
+  378(bigColor6):     51(ptr) Variable UniformConstant \r
+         413(d7):     46(ptr) Variable UniformConstant \r
+             442:    7(float) Constant 0\r
+  447(bigColor7):     51(ptr) Variable UniformConstant \r
+         472(d8):     46(ptr) Variable UniformConstant \r
+             494:    7(float) Constant 1073741824\r
+         517(d9):     46(ptr) Variable UniformConstant \r
+             534:    7(float) Constant 1084227584\r
+        549(d10):     46(ptr) Variable UniformConstant \r
+        560(d11):     46(ptr) Variable UniformConstant \r
+        572(d12):     46(ptr) Variable UniformConstant \r
+             597:    7(float) Constant 1092616192\r
+  600(bigColor8):     51(ptr) Variable UniformConstant \r
+             627:             TypePointer Output 8(fvec4)\r
+628(gl_FragColor):    627(ptr) Variable Output \r
+        634(d14):     46(ptr) Variable UniformConstant \r
+        640(d15):     46(ptr) Variable UniformConstant \r
+        657(d16):     46(ptr) Variable UniformConstant \r
+        696(d17):     46(ptr) Variable UniformConstant \r
+        702(d18):     46(ptr) Variable UniformConstant \r
+        733(d13):     46(ptr) Variable UniformConstant \r
+        734(d19):     46(ptr) Variable UniformConstant \r
+        735(d20):     46(ptr) Variable UniformConstant \r
+        736(d21):     46(ptr) Variable UniformConstant \r
+        737(d22):     46(ptr) Variable UniformConstant \r
+        738(d23):     46(ptr) Variable UniformConstant \r
+        739(d24):     46(ptr) Variable UniformConstant \r
+        740(d25):     46(ptr) Variable UniformConstant \r
+        741(d26):     46(ptr) Variable UniformConstant \r
+        742(d27):     46(ptr) Variable UniformConstant \r
+        743(d28):     46(ptr) Variable UniformConstant \r
+        744(d29):     46(ptr) Variable UniformConstant \r
+        745(d30):     46(ptr) Variable UniformConstant \r
+        746(d31):     46(ptr) Variable UniformConstant \r
+        747(d32):     46(ptr) Variable UniformConstant \r
+        748(d33):     46(ptr) Variable UniformConstant \r
+        749(d34):     46(ptr) Variable UniformConstant \r
          4(main):           2 Function None 3\r
                5:             Label\r
        10(color):      9(ptr) Variable Function \r
           130(i):    129(ptr) Variable Function \r
-          160(i):    129(ptr) Variable Function \r
-          175(i):    129(ptr) Variable Function \r
-          213(i):    129(ptr) Variable Function \r
-          238(i):    129(ptr) Variable Function \r
-          266(i):    129(ptr) Variable Function \r
+          163(i):    129(ptr) Variable Function \r
+          178(i):    129(ptr) Variable Function \r
+          216(i):    129(ptr) Variable Function \r
+          241(i):    129(ptr) Variable Function \r
+          269(i):    129(ptr) Variable Function \r
               13:    8(fvec4) Load 12(BaseColor) \r
                               Store 10(color) 13 \r
                               Branch 14\r
@@ -334,777 +335,807 @@ Linked fragment stage:
              133:             Label\r
                               Branch 147\r
              147:             Label\r
+             149:    16(bool) Phi 17 133 162 151\r
                               LoopMerge 148 None\r
-                              Branch 149\r
-             149:             Label\r
-             152:    8(fvec4) Load 151(bigColor3) \r
-             153:    8(fvec4) Load 10(color) \r
-             154:    8(fvec4) FAdd 153 152\r
-                              Store 10(color) 154 \r
                               Branch 150\r
              150:             Label\r
-             155:    8(fvec4) Load 10(color) \r
-             156:    7(float) CompositeExtract 155 0\r
-             157:    7(float) Load 92(d2) \r
-             158:    16(bool) FOrdLessThan 156 157\r
-                              BranchConditional 158 159 148 \r
-             159:               Label\r
-                                Branch 147\r
+                              SelectionMerge 151 None\r
+                              BranchConditional 149 151 152 \r
+             152:               Label\r
+             153:    8(fvec4)   Load 10(color) \r
+             154:    7(float)   CompositeExtract 153 0\r
+             155:    7(float)   Load 92(d2) \r
+             156:    16(bool)   FOrdLessThan 154 155\r
+                                SelectionMerge 157 None\r
+                                BranchConditional 156 157 148 \r
+             157:               Label\r
+                                Branch 151\r
+             151:             Label\r
+             159:    8(fvec4) Load 158(bigColor3) \r
+             160:    8(fvec4) Load 10(color) \r
+             161:    8(fvec4) FAdd 160 159\r
+                              Store 10(color) 161 \r
+                              Branch 147\r
              148:             Label\r
-                              Store 160(i) 131 \r
-                              Branch 161\r
-             161:             Label\r
-             163:    128(int) Load 160(i) \r
-             165:    16(bool) SLessThan 163 164\r
-                              LoopMerge 162 None\r
-                              BranchConditional 165 166 162 \r
-             166:               Label\r
-             167:    7(float)   Load 97(d3) \r
-             168:    8(fvec4)   Load 10(color) \r
-             169:    7(float)   CompositeExtract 168 2\r
-             170:    7(float)   FAdd 169 167\r
+                              Store 163(i) 131 \r
+                              Branch 164\r
+             164:             Label\r
+             166:    128(int) Load 163(i) \r
+             168:    16(bool) SLessThan 166 167\r
+                              LoopMerge 165 None\r
+                              BranchConditional 168 169 165 \r
+             169:               Label\r
+             170:    7(float)   Load 97(d3) \r
              171:    8(fvec4)   Load 10(color) \r
-             172:    8(fvec4)   CompositeInsert 170 171 2\r
-                                Store 10(color) 172 \r
-             173:    128(int)   Load 160(i\r
-             174:    128(int)   IAdd 173 145\r
-                                Store 160(i) 174 \r
-                                Branch 161\r
-             162:             Label\r
-                              Store 175(i) 131 \r
-                              Branch 176\r
-             176:             Label\r
-             178:    128(int) Load 175(i) \r
-             180:    16(bool) SLessThan 178 179\r
-                              LoopMerge 177 None\r
-                              BranchConditional 180 181 177 \r
-             181:               Label\r
-             182:    8(fvec4)   Load 10(color) \r
-             183:    7(float)   CompositeExtract 182 2\r
-             185:    16(bool)   FOrdLessThan 183 184\r
-                                SelectionMerge 187 None\r
-                                BranchConditional 185 186 193 \r
-             186:                 Label\r
-             188:    8(fvec4)     Load 10(color) \r
-             189:    7(float)     CompositeExtract 188 0\r
-             190:    7(float)     FAdd 189 85\r
+             172:    7(float)   CompositeExtract 171 2\r
+             173:    7(float)   FAdd 172 170\r
+             174:    8(fvec4)   Load 10(color\r
+             175:    8(fvec4)   CompositeInsert 173 174 2\r
+                                Store 10(color) 175 \r
+             176:    128(int)   Load 163(i) \r
+             177:    128(int)   IAdd 176 145\r
+                                Store 163(i) 177 \r
+                                Branch 164\r
+             165:             Label\r
+                              Store 178(i) 131 \r
+                              Branch 179\r
+             179:             Label\r
+             181:    128(int) Load 178(i) \r
+             183:    16(bool) SLessThan 181 182\r
+                              LoopMerge 180 None\r
+                              BranchConditional 183 184 180 \r
+             184:               Label\r
+             185:    8(fvec4)   Load 10(color) \r
+             186:    7(float)   CompositeExtract 185 2\r
+             188:    16(bool)   FOrdLessThan 186 187\r
+                                SelectionMerge 190 None\r
+                                BranchConditional 188 189 196 \r
+             189:                 Label\r
              191:    8(fvec4)     Load 10(color) \r
-             192:    8(fvec4)     CompositeInsert 190 191 0\r
-                                  Store 10(color) 192 \r
-                                  Branch 187\r
-             193:                 Label\r
+             192:    7(float)     CompositeExtract 191 0\r
+             193:    7(float)     FAdd 192 85\r
              194:    8(fvec4)     Load 10(color) \r
-             195:    7(float)     CompositeExtract 194 1\r
-             196:    7(float)     FAdd 195 85\r
+             195:    8(fvec4)     CompositeInsert 193 194 0\r
+                                  Store 10(color) 195 \r
+                                  Branch 190\r
+             196:                 Label\r
              197:    8(fvec4)     Load 10(color) \r
-             198:    8(fvec4)     CompositeInsert 196 197 1\r
-                                  Store 10(color) 198 \r
-                                  Branch 187\r
-             187:               Label\r
-             199:    8(fvec4)   Load 10(color) \r
-             200:    7(float)   CompositeExtract 199 3\r
-             201:    16(bool)   FOrdLessThan 200 184\r
-                                SelectionMerge 203 None\r
-                                BranchConditional 201 202 203 \r
-             202:                 Label\r
-             204:    8(fvec4)     Load 10(color) \r
-             205:    7(float)     CompositeExtract 204 2\r
-             206:    8(fvec4)     Load 10(color) \r
-             207:    7(float)     CompositeExtract 206 1\r
-             208:    16(bool)     FOrdGreaterThan 205 207\r
-                                  SelectionMerge 210 None\r
-                                  BranchConditional 208 209 210 \r
-             209:                   Label\r
-                                    Branch 210\r
-             210:                 Label\r
-                                  Branch 203\r
-             203:               Label\r
-             211:    128(int)   Load 175(i) \r
-             212:    128(int)   IAdd 211 145\r
-                                Store 175(i) 212 \r
-                                Branch 176\r
-             177:             Label\r
-                              Store 213(i) 131 \r
-                              Branch 214\r
-             214:             Label\r
-             216:    128(int) Load 213(i) \r
-             218:    16(bool) SLessThan 216 217\r
-                              LoopMerge 215 None\r
-                              BranchConditional 218 219 215 \r
-             219:               Label\r
-             220:    8(fvec4)   Load 10(color) \r
-             221:    7(float)   CompositeExtract 220 2\r
-             222:    16(bool)   FOrdLessThan 221 184\r
-                                SelectionMerge 224 None\r
-                                BranchConditional 222 223 230 \r
-             223:                 Label\r
-             225:    8(fvec4)     Load 10(color) \r
-             226:    7(float)     CompositeExtract 225 0\r
-             227:    7(float)     FAdd 226 85\r
+             198:    7(float)     CompositeExtract 197 1\r
+             199:    7(float)     FAdd 198 85\r
+             200:    8(fvec4)     Load 10(color) \r
+             201:    8(fvec4)     CompositeInsert 199 200 1\r
+                                  Store 10(color) 201 \r
+                                  Branch 190\r
+             190:               Label\r
+             202:    8(fvec4)   Load 10(color) \r
+             203:    7(float)   CompositeExtract 202 3\r
+             204:    16(bool)   FOrdLessThan 203 187\r
+                                SelectionMerge 206 None\r
+                                BranchConditional 204 205 206 \r
+             205:                 Label\r
+             207:    8(fvec4)     Load 10(color) \r
+             208:    7(float)     CompositeExtract 207 2\r
+             209:    8(fvec4)     Load 10(color) \r
+             210:    7(float)     CompositeExtract 209 1\r
+             211:    16(bool)     FOrdGreaterThan 208 210\r
+                                  SelectionMerge 213 None\r
+                                  BranchConditional 211 212 213 \r
+             212:                   Label\r
+                                    Branch 213\r
+             213:                 Label\r
+                                  Branch 206\r
+             206:               Label\r
+             214:    128(int)   Load 178(i) \r
+             215:    128(int)   IAdd 214 145\r
+                                Store 178(i) 215 \r
+                                Branch 179\r
+             180:             Label\r
+                              Store 216(i) 131 \r
+                              Branch 217\r
+             217:             Label\r
+             219:    128(int) Load 216(i) \r
+             221:    16(bool) SLessThan 219 220\r
+                              LoopMerge 218 None\r
+                              BranchConditional 221 222 218 \r
+             222:               Label\r
+             223:    8(fvec4)   Load 10(color) \r
+             224:    7(float)   CompositeExtract 223 2\r
+             225:    16(bool)   FOrdLessThan 224 187\r
+                                SelectionMerge 227 None\r
+                                BranchConditional 225 226 233 \r
+             226:                 Label\r
              228:    8(fvec4)     Load 10(color) \r
-             229:    8(fvec4)     CompositeInsert 227 228 0\r
-                                  Store 10(color) 229 \r
-                                  Branch 224\r
-             230:                 Label\r
+             229:    7(float)     CompositeExtract 228 0\r
+             230:    7(float)     FAdd 229 85\r
              231:    8(fvec4)     Load 10(color) \r
-             232:    7(float)     CompositeExtract 231 1\r
-             233:    7(float)     FAdd 232 85\r
+             232:    8(fvec4)     CompositeInsert 230 231 0\r
+                                  Store 10(color) 232 \r
+                                  Branch 227\r
+             233:                 Label\r
              234:    8(fvec4)     Load 10(color) \r
-             235:    8(fvec4)     CompositeInsert 233 234 1\r
-                                  Store 10(color) 235 \r
-                                  Branch 224\r
-             224:               Label\r
-             236:    128(int)   Load 213(i) \r
-             237:    128(int)   IAdd 236 145\r
-                                Store 213(i) 237 \r
-                                Branch 214\r
-             215:             Label\r
-                              Store 238(i) 131 \r
-                              Branch 239\r
-             239:             Label\r
-             241:    128(int) Load 238(i) \r
-             242:    16(bool) SLessThan 241 164\r
-                              LoopMerge 240 None\r
-                              BranchConditional 242 243 240 \r
-             243:               Label\r
-             244:    7(float)   Load 97(d3) \r
-             245:    8(fvec4)   Load 10(color) \r
-             246:    7(float)   CompositeExtract 245 2\r
-             247:    7(float)   FAdd 246 244\r
+             235:    7(float)     CompositeExtract 234 1\r
+             236:    7(float)     FAdd 235 85\r
+             237:    8(fvec4)     Load 10(color) \r
+             238:    8(fvec4)     CompositeInsert 236 237 1\r
+                                  Store 10(color) 238 \r
+                                  Branch 227\r
+             227:               Label\r
+             239:    128(int)   Load 216(i) \r
+             240:    128(int)   IAdd 239 145\r
+                                Store 216(i) 240 \r
+                                Branch 217\r
+             218:             Label\r
+                              Store 241(i) 131 \r
+                              Branch 242\r
+             242:             Label\r
+             244:    128(int) Load 241(i) \r
+             245:    16(bool) SLessThan 244 167\r
+                              LoopMerge 243 None\r
+                              BranchConditional 245 246 243 \r
+             246:               Label\r
+             247:    7(float)   Load 97(d3) \r
              248:    8(fvec4)   Load 10(color) \r
-             249:    8(fvec4)   CompositeInsert 247 248 2\r
-                                Store 10(color) 249 \r
-             250:    8(fvec4)   Load 10(color) \r
-             251:    7(float)   CompositeExtract 250 0\r
-             252:    7(float)   Load 119(d4) \r
-             253:    16(bool)   FOrdLessThan 251 252\r
-                                SelectionMerge 255 None\r
-                                BranchConditional 253 254 255 \r
-             254:                 Label\r
-             256:    128(int)     Load 238(i) \r
-             257:    128(int)     IAdd 256 145\r
-                                  Store 238(i) 257 \r
-                                  Branch 239\r
-             255:               Label\r
-             259:    8(fvec4)   Load 10(color) \r
-             260:    7(float)   CompositeExtract 259 3\r
-             261:    7(float)   FAdd 260 85\r
+             249:    7(float)   CompositeExtract 248 2\r
+             250:    7(float)   FAdd 249 247\r
+             251:    8(fvec4)   Load 10(color) \r
+             252:    8(fvec4)   CompositeInsert 250 251 2\r
+                                Store 10(color) 252 \r
+             253:    8(fvec4)   Load 10(color) \r
+             254:    7(float)   CompositeExtract 253 0\r
+             255:    7(float)   Load 119(d4) \r
+             256:    16(bool)   FOrdLessThan 254 255\r
+                                SelectionMerge 258 None\r
+                                BranchConditional 256 257 258 \r
+             257:                 Label\r
+             259:    128(int)     Load 241(i) \r
+             260:    128(int)     IAdd 259 145\r
+                                  Store 241(i) 260 \r
+                                  Branch 242\r
+             258:               Label\r
              262:    8(fvec4)   Load 10(color) \r
-             263:    8(fvec4)   CompositeInsert 261 262 3\r
-                                Store 10(color) 263 \r
-             264:    128(int)   Load 238(i\r
-             265:    128(int)   IAdd 264 145\r
-                                Store 238(i) 265 \r
-                                Branch 239\r
-             240:             Label\r
-                              Store 266(i) 131 \r
-                              Branch 267\r
-             267:             Label\r
-             269:    128(int) Load 266(i) \r
-             270:    16(bool) SLessThan 269 164\r
-                              LoopMerge 268 None\r
-                              BranchConditional 270 271 268 \r
-             271:               Label\r
-             272:    7(float)   Load 97(d3) \r
-             273:    8(fvec4)   Load 10(color) \r
-             274:    7(float)   CompositeExtract 273 2\r
-             275:    7(float)   FAdd 274 272\r
+             263:    7(float)   CompositeExtract 262 3\r
+             264:    7(float)   FAdd 263 85\r
+             265:    8(fvec4)   Load 10(color\r
+             266:    8(fvec4)   CompositeInsert 264 265 3\r
+                                Store 10(color) 266 \r
+             267:    128(int)   Load 241(i) \r
+             268:    128(int)   IAdd 267 145\r
+                                Store 241(i) 268 \r
+                                Branch 242\r
+             243:             Label\r
+                              Store 269(i) 131 \r
+                              Branch 270\r
+             270:             Label\r
+             272:    128(int) Load 269(i) \r
+             273:    16(bool) SLessThan 272 167\r
+                              LoopMerge 271 None\r
+                              BranchConditional 273 274 271 \r
+             274:               Label\r
+             275:    7(float)   Load 97(d3) \r
              276:    8(fvec4)   Load 10(color) \r
-             277:    8(fvec4)   CompositeInsert 275 276 2\r
-                                Store 10(color) 277 \r
-             278:    8(fvec4)   Load 10(color) \r
-             279:    7(float)   CompositeExtract 278 0\r
-             280:    7(float)   Load 119(d4) \r
-             281:    16(bool)   FOrdLessThan 279 280\r
-                                SelectionMerge 283 None\r
-                                BranchConditional 281 282 283 \r
-             282:                 Label\r
-                                  Branch 268\r
-             283:               Label\r
-             285:    8(fvec4)   Load 10(color) \r
-             286:    7(float)   CompositeExtract 285 3\r
-             287:    7(float)   FAdd 286 85\r
+             277:    7(float)   CompositeExtract 276 2\r
+             278:    7(float)   FAdd 277 275\r
+             279:    8(fvec4)   Load 10(color) \r
+             280:    8(fvec4)   CompositeInsert 278 279 2\r
+                                Store 10(color) 280 \r
+             281:    8(fvec4)   Load 10(color) \r
+             282:    7(float)   CompositeExtract 281 0\r
+             283:    7(float)   Load 119(d4) \r
+             284:    16(bool)   FOrdLessThan 282 283\r
+                                SelectionMerge 286 None\r
+                                BranchConditional 284 285 286 \r
+             285:                 Label\r
+                                  Branch 271\r
+             286:               Label\r
              288:    8(fvec4)   Load 10(color) \r
-             289:    8(fvec4)   CompositeInsert 287 288 3\r
-                                Store 10(color) 289 \r
-             290:    128(int)   Load 266(i) \r
-             291:    128(int)   IAdd 290 145\r
-                                Store 266(i) 291 \r
-                                Branch 267\r
-             268:             Label\r
-                              Branch 292\r
-             292:             Label\r
-                              LoopMerge 293 None\r
-                              Branch 294\r
-             294:             Label\r
-             297:    8(fvec4) Load 296(bigColor4) \r
-             298:    8(fvec4) Load 10(color) \r
-             299:    8(fvec4) FAdd 298 297\r
-                              Store 10(color) 299 \r
-             300:    8(fvec4) Load 10(color) \r
-             301:    7(float) CompositeExtract 300 0\r
-             302:    7(float) Load 119(d4) \r
-             303:    16(bool) FOrdLessThan 301 302\r
-                              SelectionMerge 305 None\r
-                              BranchConditional 303 304 305 \r
-             304:               Label\r
+             289:    7(float)   CompositeExtract 288 3\r
+             290:    7(float)   FAdd 289 85\r
+             291:    8(fvec4)   Load 10(color) \r
+             292:    8(fvec4)   CompositeInsert 290 291 3\r
+                                Store 10(color) 292 \r
+             293:    128(int)   Load 269(i) \r
+             294:    128(int)   IAdd 293 145\r
+                                Store 269(i) 294 \r
+                                Branch 270\r
+             271:             Label\r
+                              Branch 295\r
+             295:             Label\r
+             297:    16(bool) Phi 17 271 162 314 162 322\r
+                              LoopMerge 296 None\r
+                              Branch 298\r
+             298:             Label\r
+                              SelectionMerge 299 None\r
+                              BranchConditional 297 299 300 \r
+             300:               Label\r
+             301:    8(fvec4)   Load 10(color) \r
+             302:    7(float)   CompositeExtract 301 2\r
+             303:    7(float)   Load 119(d4) \r
+             304:    16(bool)   FOrdLessThan 302 303\r
+                                SelectionMerge 305 None\r
+                                BranchConditional 304 305 296 \r
+             305:               Label\r
+                                Branch 299\r
+             299:             Label\r
+             307:    8(fvec4) Load 306(bigColor4) \r
+             308:    8(fvec4) Load 10(color) \r
+             309:    8(fvec4) FAdd 308 307\r
+                              Store 10(color) 309 \r
+             310:    8(fvec4) Load 10(color) \r
+             311:    7(float) CompositeExtract 310 0\r
+             312:    7(float) Load 119(d4) \r
+             313:    16(bool) FOrdLessThan 311 312\r
+                              SelectionMerge 315 None\r
+                              BranchConditional 313 314 315 \r
+             314:               Label\r
                                 Branch 295\r
-             305:             Label\r
-             307:    8(fvec4) Load 10(color) \r
-             308:    7(float) CompositeExtract 307 1\r
-             309:    7(float) Load 119(d4) \r
-             310:    16(bool) FOrdLessThan 308 309\r
-                              SelectionMerge 312 None\r
-                              BranchConditional 310 311 319 \r
-             311:               Label\r
-             313:    7(float)   Load 119(d4) \r
-             314:    8(fvec4)   Load 10(color) \r
-             315:    7(float)   CompositeExtract 314 1\r
-             316:    7(float)   FAdd 315 313\r
-             317:    8(fvec4)   Load 10(color) \r
-             318:    8(fvec4)   CompositeInsert 316 317 1\r
-                                Store 10(color) 318 \r
-                                Branch 312\r
-             319:               Label\r
-             320:    7(float)   Load 119(d4) \r
-             321:    8(fvec4)   Load 10(color) \r
-             322:    7(float)   CompositeExtract 321 0\r
-             323:    7(float)   FAdd 322 320\r
+             315:             Label\r
+             317:    8(fvec4) Load 10(color) \r
+             318:    7(float) CompositeExtract 317 1\r
+             319:    7(float) Load 119(d4) \r
+             320:    16(bool) FOrdLessThan 318 319\r
+                              SelectionMerge 322 None\r
+                              BranchConditional 320 321 329 \r
+             321:               Label\r
+             323:    7(float)   Load 119(d4) \r
              324:    8(fvec4)   Load 10(color) \r
-             325:    8(fvec4)   CompositeInsert 323 324 0\r
-                                Store 10(color) 325 \r
-                                Branch 312\r
-             312:             Label\r
+             325:    7(float)   CompositeExtract 324 1\r
+             326:    7(float)   FAdd 325 323\r
+             327:    8(fvec4)   Load 10(color) \r
+             328:    8(fvec4)   CompositeInsert 326 327 1\r
+                                Store 10(color) 328 \r
+                                Branch 322\r
+             329:               Label\r
+             330:    7(float)   Load 119(d4) \r
+             331:    8(fvec4)   Load 10(color) \r
+             332:    7(float)   CompositeExtract 331 0\r
+             333:    7(float)   FAdd 332 330\r
+             334:    8(fvec4)   Load 10(color) \r
+             335:    8(fvec4)   CompositeInsert 333 334 0\r
+                                Store 10(color) 335 \r
+                                Branch 322\r
+             322:             Label\r
                               Branch 295\r
-             295:             Label\r
-             326:    8(fvec4) Load 10(color) \r
-             327:    7(float) CompositeExtract 326 2\r
-             328:    7(float) Load 119(d4) \r
-             329:    16(bool) FOrdLessThan 327 328\r
-                              BranchConditional 329 330 293 \r
-             330:             Label\r
-                              Branch 292\r
-             293:             Label\r
-                              Branch 331\r
-             331:             Label\r
-                              LoopMerge 332 None\r
-                              Branch 333\r
-             333:             Label\r
-             336:    8(fvec4) Load 335(bigColor5) \r
-             337:    8(fvec4) Load 10(color) \r
-             338:    8(fvec4) FAdd 337 336\r
-                              Store 10(color) 338 \r
-             339:    8(fvec4) Load 10(color) \r
-             340:    7(float) CompositeExtract 339 1\r
-             342:    7(float) Load 341(d5) \r
-             343:    16(bool) FOrdLessThan 340 342\r
-                              SelectionMerge 345 None\r
-                              BranchConditional 343 344 345 \r
-             344:               Label\r
-             346:    7(float)   Load 341(d5) \r
-             347:    8(fvec4)   Load 10(color) \r
-             348:    7(float)   CompositeExtract 347 1\r
-             349:    7(float)   FAdd 348 346\r
-             350:    8(fvec4)   Load 10(color) \r
-             351:    8(fvec4)   CompositeInsert 349 350 1\r
-                                Store 10(color) 351 \r
-                                Branch 345\r
-             345:             Label\r
-                              Branch 334\r
-             334:             Label\r
+             296:             Label\r
+                              Branch 336\r
+             336:             Label\r
+             338:    16(bool) Phi 17 296 162 357\r
+                              LoopMerge 337 None\r
+                              Branch 339\r
+             339:             Label\r
+                              SelectionMerge 340 None\r
+                              BranchConditional 338 340 341 \r
+             341:               Label\r
+             342:    8(fvec4)   Load 10(color) \r
+             343:    7(float)   CompositeExtract 342 0\r
+             345:    7(float)   Load 344(d5) \r
+             346:    16(bool)   FOrdLessThan 343 345\r
+                                SelectionMerge 347 None\r
+                                BranchConditional 346 347 337 \r
+             347:               Label\r
+                                Branch 340\r
+             340:             Label\r
+             349:    8(fvec4) Load 348(bigColor5) \r
+             350:    8(fvec4) Load 10(color) \r
+             351:    8(fvec4) FAdd 350 349\r
+                              Store 10(color) 351 \r
              352:    8(fvec4) Load 10(color) \r
-             353:    7(float) CompositeExtract 352 0\r
-             354:    7(float) Load 341(d5) \r
+             353:    7(float) CompositeExtract 352 1\r
+             354:    7(float) Load 344(d5) \r
              355:    16(bool) FOrdLessThan 353 354\r
-                              BranchConditional 355 356 332 \r
-             356:             Label\r
-                              Branch 331\r
-             332:             Label\r
-             357:    8(fvec4) Load 10(color) \r
-             358:    7(float) CompositeExtract 357 0\r
-             360:    7(float) Load 359(d6) \r
-             361:    16(bool) FOrdLessThan 358 360\r
-                              SelectionMerge 363 None\r
-                              BranchConditional 361 362 375 \r
-             362:               Label\r
-                                Branch 364\r
-             364:               Label\r
-             366:    8(fvec4)   Load 10(color) \r
-             367:    7(float)   CompositeExtract 366 1\r
-             368:    7(float)   Load 359(d6) \r
-             369:    16(bool)   FOrdLessThan 367 368\r
-                                LoopMerge 365 None\r
-                                BranchConditional 369 370 365 \r
-             370:                 Label\r
-             372:    8(fvec4)     Load 371(bigColor6) \r
-             373:    8(fvec4)     Load 10(color) \r
-             374:    8(fvec4)     FAdd 373 372\r
-                                  Store 10(color) 374 \r
-                                  Branch 364\r
-             365:               Label\r
-                                Branch 363\r
-             375:               Label\r
-                                Branch 376\r
-             376:               Label\r
-             378:    8(fvec4)   Load 10(color) \r
-             379:    7(float)   CompositeExtract 378 2\r
-             380:    7(float)   Load 359(d6) \r
-             381:    16(bool)   FOrdLessThan 379 380\r
-                                LoopMerge 377 None\r
-                                BranchConditional 381 382 377 \r
-             382:                 Label\r
-             383:    8(fvec4)     Load 371(bigColor6) \r
-             384:    7(float)     CompositeExtract 383 2\r
-             385:    8(fvec4)     Load 10(color) \r
-             386:    7(float)     CompositeExtract 385 2\r
-             387:    7(float)     FAdd 386 384\r
-             388:    8(fvec4)     Load 10(color) \r
-             389:    8(fvec4)     CompositeInsert 387 388 2\r
-                                  Store 10(color) 389 \r
-                                  Branch 376\r
-             377:               Label\r
-                                Branch 363\r
-             363:             Label\r
-             390:    8(fvec4) Load 10(color) \r
-             391:    7(float) CompositeExtract 390 0\r
-             392:    7(float) Load 359(d6) \r
-             393:    16(bool) FOrdLessThan 391 392\r
-                              SelectionMerge 395 None\r
-                              BranchConditional 393 394 412 \r
-             394:               Label\r
-                                Branch 396\r
-             396:               Label\r
-             398:    8(fvec4)   Load 10(color) \r
-             399:    7(float)   CompositeExtract 398 1\r
-             400:    7(float)   Load 359(d6) \r
-             401:    16(bool)   FOrdLessThan 399 400\r
-                                LoopMerge 397 None\r
-                                BranchConditional 401 402 397 \r
-             402:                 Label\r
-             403:    8(fvec4)     Load 371(bigColor6) \r
-             404:    8(fvec4)     Load 10(color) \r
-             405:    8(fvec4)     FAdd 404 403\r
-                                  Store 10(color) 405 \r
-             407:    7(float)     Load 406(d7) \r
-             408:    16(bool)     FOrdLessThan 407 85\r
-                                  SelectionMerge 410 None\r
-                                  BranchConditional 408 409 410 \r
-             409:                   Label\r
-                                    Branch 397\r
-             410:                 Label\r
-                                  Branch 396\r
-             397:               Label\r
-                                Branch 395\r
-             412:               Label\r
-                                Branch 413\r
-             413:               Label\r
-             415:    8(fvec4)   Load 10(color) \r
-             416:    7(float)   CompositeExtract 415 2\r
-             417:    7(float)   Load 359(d6) \r
-             418:    16(bool)   FOrdLessThan 416 417\r
-                                LoopMerge 414 None\r
-                                BranchConditional 418 419 414 \r
-             419:                 Label\r
-             420:    8(fvec4)     Load 371(bigColor6) \r
-             421:    7(float)     CompositeExtract 420 2\r
-             422:    8(fvec4)     Load 10(color) \r
-             423:    7(float)     CompositeExtract 422 2\r
-             424:    7(float)     FAdd 423 421\r
-             425:    8(fvec4)     Load 10(color) \r
-             426:    8(fvec4)     CompositeInsert 424 425 2\r
-                                  Store 10(color) 426 \r
-                                  Branch 413\r
-             414:               Label\r
-                                Branch 395\r
-             395:             Label\r
-                              Branch 427\r
-             427:             Label\r
-                              LoopMerge 428 None\r
-                              Branch 429\r
-             429:             Label\r
-             431:    7(float) Load 406(d7) \r
-             433:    16(bool) FOrdLessThan 431 432\r
-                              SelectionMerge 435 None\r
-                              BranchConditional 433 434 435 \r
-             434:               Label\r
-                                Branch 428\r
-             435:             Label\r
-             438:    8(fvec4) Load 437(bigColor7) \r
-             439:    8(fvec4) Load 10(color) \r
-             440:    8(fvec4) FAdd 439 438\r
-                              Store 10(color) 440 \r
-             441:    7(float) Load 406(d7) \r
-             442:    16(bool) FOrdLessThan 441 85\r
-                              SelectionMerge 444 None\r
-                              BranchConditional 442 443 444 \r
-             443:               Label\r
-             445:    8(fvec4)   Load 10(color) \r
-             446:    7(float)   CompositeExtract 445 2\r
-             447:    7(float)   FAdd 446 85\r
-             448:    8(fvec4)   Load 10(color) \r
-             449:    8(fvec4)   CompositeInsert 447 448 2\r
-                                Store 10(color) 449 \r
-                                Branch 428\r
-             444:             Label\r
-             451:    8(fvec4) Load 12(BaseColor) \r
-             452:    8(fvec4) Load 10(color) \r
-             453:    8(fvec4) FAdd 452 451\r
-                              Store 10(color) 453 \r
-                              Branch 430\r
-             430:             Label\r
-                              BranchConditional 17 454 428 \r
+                              SelectionMerge 357 None\r
+                              BranchConditional 355 356 357 \r
+             356:               Label\r
+             358:    7(float)   Load 344(d5) \r
+             359:    8(fvec4)   Load 10(color) \r
+             360:    7(float)   CompositeExtract 359 1\r
+             361:    7(float)   FAdd 360 358\r
+             362:    8(fvec4)   Load 10(color) \r
+             363:    8(fvec4)   CompositeInsert 361 362 1\r
+                                Store 10(color) 363 \r
+                                Branch 357\r
+             357:             Label\r
+                              Branch 336\r
+             337:             Label\r
+             364:    8(fvec4) Load 10(color) \r
+             365:    7(float) CompositeExtract 364 0\r
+             367:    7(float) Load 366(d6) \r
+             368:    16(bool) FOrdLessThan 365 367\r
+                              SelectionMerge 370 None\r
+                              BranchConditional 368 369 382 \r
+             369:               Label\r
+                                Branch 371\r
+             371:               Label\r
+             373:    8(fvec4)   Load 10(color) \r
+             374:    7(float)   CompositeExtract 373 1\r
+             375:    7(float)   Load 366(d6) \r
+             376:    16(bool)   FOrdLessThan 374 375\r
+                                LoopMerge 372 None\r
+                                BranchConditional 376 377 372 \r
+             377:                 Label\r
+             379:    8(fvec4)     Load 378(bigColor6) \r
+             380:    8(fvec4)     Load 10(color) \r
+             381:    8(fvec4)     FAdd 380 379\r
+                                  Store 10(color) 381 \r
+                                  Branch 371\r
+             372:               Label\r
+                                Branch 370\r
+             382:               Label\r
+                                Branch 383\r
+             383:               Label\r
+             385:    8(fvec4)   Load 10(color) \r
+             386:    7(float)   CompositeExtract 385 2\r
+             387:    7(float)   Load 366(d6) \r
+             388:    16(bool)   FOrdLessThan 386 387\r
+                                LoopMerge 384 None\r
+                                BranchConditional 388 389 384 \r
+             389:                 Label\r
+             390:    8(fvec4)     Load 378(bigColor6) \r
+             391:    7(float)     CompositeExtract 390 2\r
+             392:    8(fvec4)     Load 10(color) \r
+             393:    7(float)     CompositeExtract 392 2\r
+             394:    7(float)     FAdd 393 391\r
+             395:    8(fvec4)     Load 10(color) \r
+             396:    8(fvec4)     CompositeInsert 394 395 2\r
+                                  Store 10(color) 396 \r
+                                  Branch 383\r
+             384:               Label\r
+                                Branch 370\r
+             370:             Label\r
+             397:    8(fvec4) Load 10(color) \r
+             398:    7(float) CompositeExtract 397 0\r
+             399:    7(float) Load 366(d6) \r
+             400:    16(bool) FOrdLessThan 398 399\r
+                              SelectionMerge 402 None\r
+                              BranchConditional 400 401 419 \r
+             401:               Label\r
+                                Branch 403\r
+             403:               Label\r
+             405:    8(fvec4)   Load 10(color) \r
+             406:    7(float)   CompositeExtract 405 1\r
+             407:    7(float)   Load 366(d6) \r
+             408:    16(bool)   FOrdLessThan 406 407\r
+                                LoopMerge 404 None\r
+                                BranchConditional 408 409 404 \r
+             409:                 Label\r
+             410:    8(fvec4)     Load 378(bigColor6) \r
+             411:    8(fvec4)     Load 10(color) \r
+             412:    8(fvec4)     FAdd 411 410\r
+                                  Store 10(color) 412 \r
+             414:    7(float)     Load 413(d7) \r
+             415:    16(bool)     FOrdLessThan 414 85\r
+                                  SelectionMerge 417 None\r
+                                  BranchConditional 415 416 417 \r
+             416:                   Label\r
+                                    Branch 404\r
+             417:                 Label\r
+                                  Branch 403\r
+             404:               Label\r
+                                Branch 402\r
+             419:               Label\r
+                                Branch 420\r
+             420:               Label\r
+             422:    8(fvec4)   Load 10(color) \r
+             423:    7(float)   CompositeExtract 422 2\r
+             424:    7(float)   Load 366(d6) \r
+             425:    16(bool)   FOrdLessThan 423 424\r
+                                LoopMerge 421 None\r
+                                BranchConditional 425 426 421 \r
+             426:                 Label\r
+             427:    8(fvec4)     Load 378(bigColor6) \r
+             428:    7(float)     CompositeExtract 427 2\r
+             429:    8(fvec4)     Load 10(color) \r
+             430:    7(float)     CompositeExtract 429 2\r
+             431:    7(float)     FAdd 430 428\r
+             432:    8(fvec4)     Load 10(color) \r
+             433:    8(fvec4)     CompositeInsert 431 432 2\r
+                                  Store 10(color) 433 \r
+                                  Branch 420\r
+             421:               Label\r
+                                Branch 402\r
+             402:             Label\r
+                              Branch 434\r
+             434:             Label\r
+             436:    16(bool) Phi 17 402 162 454\r
+                              LoopMerge 435 None\r
+                              Branch 437\r
+             437:             Label\r
+                              SelectionMerge 438 None\r
+                              BranchConditional 436 438 439 \r
+             439:               Label\r
+                                SelectionMerge 440 None\r
+                                BranchConditional 17 440 435 \r
+             440:               Label\r
+                                Branch 438\r
+             438:             Label\r
+             441:    7(float) Load 413(d7) \r
+             443:    16(bool) FOrdLessThan 441 442\r
+                              SelectionMerge 445 None\r
+                              BranchConditional 443 444 445 \r
+             444:               Label\r
+                                Branch 435\r
+             445:             Label\r
+             448:    8(fvec4) Load 447(bigColor7) \r
+             449:    8(fvec4) Load 10(color) \r
+             450:    8(fvec4) FAdd 449 448\r
+                              Store 10(color) 450 \r
+             451:    7(float) Load 413(d7) \r
+             452:    16(bool) FOrdLessThan 451 85\r
+                              SelectionMerge 454 None\r
+                              BranchConditional 452 453 454 \r
+             453:               Label\r
+             455:    8(fvec4)   Load 10(color) \r
+             456:    7(float)   CompositeExtract 455 2\r
+             457:    7(float)   FAdd 456 85\r
+             458:    8(fvec4)   Load 10(color) \r
+             459:    8(fvec4)   CompositeInsert 457 458 2\r
+                                Store 10(color) 459 \r
+                                Branch 435\r
              454:             Label\r
-                              Branch 427\r
-             428:             Label\r
-                              Branch 455\r
-             455:             Label\r
-                              LoopMerge 456 None\r
-                              Branch 457\r
-             457:             Label\r
-             460:    7(float) Load 459(d8) \r
-             461:    16(bool) FOrdLessThan 460 432\r
-                              SelectionMerge 463 None\r
-                              BranchConditional 461 462 463 \r
-             462:               Label\r
-                                Branch 456\r
-             463:             Label\r
-             465:    8(fvec4) Load 437(bigColor7) \r
-             466:    8(fvec4) Load 10(color) \r
-             467:    8(fvec4) FAdd 466 465\r
-                              Store 10(color) 467 \r
-             468:    7(float) Load 459(d8) \r
-             469:    16(bool) FOrdLessThan 468 85\r
-                              SelectionMerge 471 None\r
-                              BranchConditional 469 470 471 \r
-             470:               Label\r
-             472:    8(fvec4)   Load 10(color) \r
-             473:    7(float)   CompositeExtract 472 2\r
-             474:    7(float)   FAdd 473 85\r
-             475:    8(fvec4)   Load 10(color) \r
-             476:    8(fvec4)   CompositeInsert 474 475 2\r
-                                Store 10(color) 476 \r
-             477:    7(float)   Load 459(d8) \r
-             479:    16(bool)   FOrdLessThan 477 478\r
-                                SelectionMerge 481 None\r
-                                BranchConditional 479 480 487 \r
-             480:                 Label\r
-             482:    8(fvec4)     Load 10(color) \r
-             483:    7(float)     CompositeExtract 482 1\r
-             484:    7(float)     FAdd 483 85\r
-             485:    8(fvec4)     Load 10(color) \r
-             486:    8(fvec4)     CompositeInsert 484 485 1\r
-                                  Store 10(color) 486 \r
-                                  Branch 481\r
-             487:                 Label\r
-             488:    8(fvec4)     Load 10(color) \r
-             489:    7(float)     CompositeExtract 488 0\r
-             490:    7(float)     FAdd 489 85\r
-             491:    8(fvec4)     Load 10(color) \r
-             492:    8(fvec4)     CompositeInsert 490 491 0\r
-                                  Store 10(color) 492 \r
-                                  Branch 481\r
-             481:               Label\r
-                                Branch 456\r
-             471:             Label\r
-             494:    8(fvec4) Load 12(BaseColor) \r
-             495:    8(fvec4) Load 10(color) \r
-             496:    8(fvec4) FAdd 495 494\r
-                              Store 10(color) 496 \r
-                              Branch 458\r
-             458:             Label\r
-             497:    8(fvec4) Load 10(color) \r
-             498:    7(float) CompositeExtract 497 2\r
-             499:    7(float) Load 459(d8) \r
-             500:    16(bool) FOrdLessThan 498 499\r
-                              BranchConditional 500 501 456 \r
-             501:             Label\r
-                              Branch 455\r
-             456:             Label\r
-                              Branch 502\r
-             502:             Label\r
-             504:    8(fvec4) Load 10(color) \r
-             505:    7(float) CompositeExtract 504 3\r
-             507:    7(float) Load 506(d9) \r
-             508:    16(bool) FOrdLessThan 505 507\r
-                              LoopMerge 503 None\r
-                              BranchConditional 508 509 503 \r
-             509:               Label\r
-             510:    7(float)   Load 506(d9) \r
-             511:    7(float)   Load 459(d8) \r
-             512:    16(bool)   FOrdGreaterThan 510 511\r
-                                SelectionMerge 514 None\r
-                                BranchConditional 512 513 514 \r
-             513:                 Label\r
-             515:    8(fvec4)     Load 10(color) \r
-             516:    7(float)     CompositeExtract 515 0\r
-             517:    7(float)     Load 406(d7) \r
-             518:    16(bool)     FOrdLessThanEqual 516 517\r
-                                  SelectionMerge 520 None\r
-                                  BranchConditional 518 519 520 \r
-             519:                   Label\r
-             521:    8(fvec4)       Load 10(color) \r
-             522:    7(float)       CompositeExtract 521 2\r
-             524:    16(bool)       FOrdEqual 522 523\r
-                                    SelectionMerge 526 None\r
-                                    BranchConditional 524 525 532 \r
-             525:                     Label\r
-             527:    8(fvec4)         Load 10(color) \r
-             528:    7(float)         CompositeExtract 527 3\r
-             529:    7(float)         FAdd 528 85\r
-             530:    8(fvec4)         Load 10(color) \r
-             531:    8(fvec4)         CompositeInsert 529 530 3\r
-                                      Store 10(color) 531 \r
-                                      Branch 526\r
-             532:                     Label\r
-                                      Branch 503\r
-             526:                   Label\r
-                                    Branch 520\r
-             520:                 Label\r
-                                  Branch 514\r
-             514:               Label\r
-                                Branch 502\r
-             503:             Label\r
-                              Branch 534\r
-             534:             Label\r
-             536:    8(fvec4) Load 10(color) \r
-             537:    7(float) CompositeExtract 536 2\r
-             539:    7(float) Load 538(d10) \r
-             540:    16(bool) FOrdLessThan 537 539\r
-                              LoopMerge 535 None\r
-                              BranchConditional 540 541 535 \r
-             541:               Label\r
-             542:    8(fvec4)   Load 10(color) \r
-             543:    7(float)   CompositeExtract 542 1\r
-             544:    7(float)   FAdd 543 85\r
-             545:    8(fvec4)   Load 10(color) \r
-             546:    8(fvec4)   CompositeInsert 544 545 1\r
-                                Store 10(color) 546 \r
-             547:    8(fvec4)   Load 10(color) \r
-             548:    7(float)   CompositeExtract 547 1\r
-             550:    7(float)   Load 549(d11) \r
-             551:    16(bool)   FOrdLessThan 548 550\r
-                                SelectionMerge 553 None\r
-                                BranchConditional 551 552 553 \r
-             552:                 Label\r
-             554:    8(fvec4)     Load 10(color) \r
-             555:    7(float)     CompositeExtract 554 2\r
-             556:    7(float)     FAdd 555 85\r
-             557:    8(fvec4)     Load 10(color) \r
-             558:    8(fvec4)     CompositeInsert 556 557 2\r
-                                  Store 10(color) 558 \r
-             559:    8(fvec4)     Load 10(color) \r
-             560:    7(float)     CompositeExtract 559 3\r
-             562:    7(float)     Load 561(d12) \r
-             563:    16(bool)     FOrdLessThan 560 562\r
-                                  SelectionMerge 565 None\r
-                                  BranchConditional 563 564 571 \r
-             564:                   Label\r
-             566:    8(fvec4)       Load 10(color) \r
-             567:    7(float)       CompositeExtract 566 3\r
-             568:    7(float)       FAdd 567 85\r
-             569:    8(fvec4)       Load 10(color) \r
-             570:    8(fvec4)       CompositeInsert 568 569 3\r
-                                    Store 10(color) 570 \r
-                                    Branch 565\r
-             571:                   Label\r
-             572:    8(fvec4)       Load 10(color) \r
-             573:    7(float)       CompositeExtract 572 0\r
-             574:    7(float)       FAdd 573 85\r
-             575:    8(fvec4)       Load 10(color) \r
-             576:    8(fvec4)       CompositeInsert 574 575 0\r
-                                    Store 10(color) 576 \r
-                                    Branch 565\r
-             565:                 Label\r
-                                  Branch 534\r
-             553:               Label\r
-             578:    8(fvec4)   Load 10(color) \r
-             579:    8(fvec4)   CompositeConstruct 85 85 85 85\r
-             580:    8(fvec4)   FAdd 578 579\r
-                                Store 10(color) 580 \r
-                                Branch 535\r
-             535:             Label\r
-                              Branch 582\r
-             582:             Label\r
-             584:    8(fvec4) Load 10(color) \r
-             585:    7(float) CompositeExtract 584 0\r
-             587:    16(bool) FOrdLessThan 585 586\r
-                              LoopMerge 583 None\r
-                              BranchConditional 587 588 583 \r
-             588:               Label\r
-             590:    8(fvec4)   Load 589(bigColor8) \r
-             591:    8(fvec4)   Load 10(color) \r
-             592:    8(fvec4)   FAdd 591 590\r
-                                Store 10(color) 592 \r
-             593:    8(fvec4)   Load 10(color) \r
-             594:    7(float)   CompositeExtract 593 2\r
-             595:    7(float)   Load 459(d8) \r
-             596:    16(bool)   FOrdLessThan 594 595\r
-                                SelectionMerge 598 None\r
-                                BranchConditional 596 597 598 \r
-             597:                 Label\r
-             599:    8(fvec4)     Load 10(color) \r
-             600:    7(float)     CompositeExtract 599 3\r
-             601:    7(float)     Load 359(d6) \r
-             602:    16(bool)     FOrdLessThan 600 601\r
-                                  SelectionMerge 604 None\r
-                                  BranchConditional 602 603 604 \r
-             603:                   Label\r
-                                    Branch 582\r
-             604:                 Label\r
-                                  Branch 598\r
-             598:               Label\r
-             606:    8(fvec4)   Load 589(bigColor8) \r
-             607:    7(float)   CompositeExtract 606 0\r
-             608:    8(fvec4)   Load 10(color) \r
-             609:    7(float)   CompositeExtract 608 1\r
-             610:    7(float)   FAdd 609 607\r
-             611:    8(fvec4)   Load 10(color) \r
-             612:    8(fvec4)   CompositeInsert 610 611 1\r
-                                Store 10(color) 612 \r
-                                Branch 582\r
-             583:             Label\r
-             613:    8(fvec4) Load 10(color) \r
-             614:    8(fvec4) CompositeConstruct 85 85 85 85\r
-             615:    8(fvec4) FAdd 613 614\r
-                              Store 10(color) 615 \r
-             618:    8(fvec4) Load 10(color) \r
-                              Store 617(gl_FragColor) 618 \r
-                              Branch 619\r
-             619:             Label\r
-             621:    8(fvec4) Load 10(color) \r
-             622:    7(float) CompositeExtract 621 0\r
-             624:    7(float) Load 623(d14) \r
-             625:    16(bool) FOrdLessThan 622 624\r
-                              LoopMerge 620 None\r
-                              BranchConditional 625 626 620 \r
-             626:               Label\r
-             627:    8(fvec4)   Load 10(color) \r
-             628:    7(float)   CompositeExtract 627 1\r
-             630:    7(float)   Load 629(d15) \r
-             631:    16(bool)   FOrdLessThan 628 630\r
-                                SelectionMerge 633 None\r
-                                BranchConditional 631 632 635 \r
-             632:                 Label\r
+             461:    8(fvec4) Load 12(BaseColor) \r
+             462:    8(fvec4) Load 10(color) \r
+             463:    8(fvec4) FAdd 462 461\r
+                              Store 10(color) 463 \r
+                              Branch 434\r
+             435:             Label\r
+                              Branch 464\r
+             464:             Label\r
+             466:    16(bool) Phi 17 435 162 487\r
+                              LoopMerge 465 None\r
+                              Branch 467\r
+             467:             Label\r
+                              SelectionMerge 468 None\r
+                              BranchConditional 466 468 469 \r
+             469:               Label\r
+             470:    8(fvec4)   Load 10(color) \r
+             471:    7(float)   CompositeExtract 470 2\r
+             473:    7(float)   Load 472(d8) \r
+             474:    16(bool)   FOrdLessThan 471 473\r
+                                SelectionMerge 475 None\r
+                                BranchConditional 474 475 465 \r
+             475:               Label\r
+                                Branch 468\r
+             468:             Label\r
+             476:    7(float) Load 472(d8) \r
+             477:    16(bool) FOrdLessThan 476 442\r
+                              SelectionMerge 479 None\r
+                              BranchConditional 477 478 479 \r
+             478:               Label\r
+                                Branch 465\r
+             479:             Label\r
+             481:    8(fvec4) Load 447(bigColor7) \r
+             482:    8(fvec4) Load 10(color) \r
+             483:    8(fvec4) FAdd 482 481\r
+                              Store 10(color) 483 \r
+             484:    7(float) Load 472(d8) \r
+             485:    16(bool) FOrdLessThan 484 85\r
+                              SelectionMerge 487 None\r
+                              BranchConditional 485 486 487 \r
+             486:               Label\r
+             488:    8(fvec4)   Load 10(color) \r
+             489:    7(float)   CompositeExtract 488 2\r
+             490:    7(float)   FAdd 489 85\r
+             491:    8(fvec4)   Load 10(color) \r
+             492:    8(fvec4)   CompositeInsert 490 491 2\r
+                                Store 10(color) 492 \r
+             493:    7(float)   Load 472(d8) \r
+             495:    16(bool)   FOrdLessThan 493 494\r
+                                SelectionMerge 497 None\r
+                                BranchConditional 495 496 503 \r
+             496:                 Label\r
+             498:    8(fvec4)     Load 10(color) \r
+             499:    7(float)     CompositeExtract 498 1\r
+             500:    7(float)     FAdd 499 85\r
+             501:    8(fvec4)     Load 10(color) \r
+             502:    8(fvec4)     CompositeInsert 500 501 1\r
+                                  Store 10(color) 502 \r
+                                  Branch 497\r
+             503:                 Label\r
+             504:    8(fvec4)     Load 10(color) \r
+             505:    7(float)     CompositeExtract 504 0\r
+             506:    7(float)     FAdd 505 85\r
+             507:    8(fvec4)     Load 10(color) \r
+             508:    8(fvec4)     CompositeInsert 506 507 0\r
+                                  Store 10(color) 508 \r
+                                  Branch 497\r
+             497:               Label\r
+                                Branch 465\r
+             487:             Label\r
+             510:    8(fvec4) Load 12(BaseColor) \r
+             511:    8(fvec4) Load 10(color) \r
+             512:    8(fvec4) FAdd 511 510\r
+                              Store 10(color) 512 \r
+                              Branch 464\r
+             465:             Label\r
+                              Branch 513\r
+             513:             Label\r
+             515:    8(fvec4) Load 10(color) \r
+             516:    7(float) CompositeExtract 515 3\r
+             518:    7(float) Load 517(d9) \r
+             519:    16(bool) FOrdLessThan 516 518\r
+                              LoopMerge 514 None\r
+                              BranchConditional 519 520 514 \r
+             520:               Label\r
+             521:    7(float)   Load 517(d9) \r
+             522:    7(float)   Load 472(d8) \r
+             523:    16(bool)   FOrdGreaterThan 521 522\r
+                                SelectionMerge 525 None\r
+                                BranchConditional 523 524 525 \r
+             524:                 Label\r
+             526:    8(fvec4)     Load 10(color) \r
+             527:    7(float)     CompositeExtract 526 0\r
+             528:    7(float)     Load 413(d7) \r
+             529:    16(bool)     FOrdLessThanEqual 527 528\r
+                                  SelectionMerge 531 None\r
+                                  BranchConditional 529 530 531 \r
+             530:                   Label\r
+             532:    8(fvec4)       Load 10(color) \r
+             533:    7(float)       CompositeExtract 532 2\r
+             535:    16(bool)       FOrdEqual 533 534\r
+                                    SelectionMerge 537 None\r
+                                    BranchConditional 535 536 543 \r
+             536:                     Label\r
+             538:    8(fvec4)         Load 10(color) \r
+             539:    7(float)         CompositeExtract 538 3\r
+             540:    7(float)         FAdd 539 85\r
+             541:    8(fvec4)         Load 10(color) \r
+             542:    8(fvec4)         CompositeInsert 540 541 3\r
+                                      Store 10(color) 542 \r
+                                      Branch 537\r
+             543:                     Label\r
+                                      Branch 514\r
+             537:                   Label\r
+                                    Branch 531\r
+             531:                 Label\r
+                                  Branch 525\r
+             525:               Label\r
+                                Branch 513\r
+             514:             Label\r
+                              Branch 545\r
+             545:             Label\r
+             547:    8(fvec4) Load 10(color) \r
+             548:    7(float) CompositeExtract 547 2\r
+             550:    7(float) Load 549(d10) \r
+             551:    16(bool) FOrdLessThan 548 550\r
+                              LoopMerge 546 None\r
+                              BranchConditional 551 552 546 \r
+             552:               Label\r
+             553:    8(fvec4)   Load 10(color) \r
+             554:    7(float)   CompositeExtract 553 1\r
+             555:    7(float)   FAdd 554 85\r
+             556:    8(fvec4)   Load 10(color) \r
+             557:    8(fvec4)   CompositeInsert 555 556 1\r
+                                Store 10(color) 557 \r
+             558:    8(fvec4)   Load 10(color) \r
+             559:    7(float)   CompositeExtract 558 1\r
+             561:    7(float)   Load 560(d11) \r
+             562:    16(bool)   FOrdLessThan 559 561\r
+                                SelectionMerge 564 None\r
+                                BranchConditional 562 563 564 \r
+             563:                 Label\r
+             565:    8(fvec4)     Load 10(color) \r
+             566:    7(float)     CompositeExtract 565 2\r
+             567:    7(float)     FAdd 566 85\r
+             568:    8(fvec4)     Load 10(color) \r
+             569:    8(fvec4)     CompositeInsert 567 568 2\r
+                                  Store 10(color) 569 \r
+             570:    8(fvec4)     Load 10(color) \r
+             571:    7(float)     CompositeExtract 570 3\r
+             573:    7(float)     Load 572(d12) \r
+             574:    16(bool)     FOrdLessThan 571 573\r
+                                  SelectionMerge 576 None\r
+                                  BranchConditional 574 575 582 \r
+             575:                   Label\r
+             577:    8(fvec4)       Load 10(color) \r
+             578:    7(float)       CompositeExtract 577 3\r
+             579:    7(float)       FAdd 578 85\r
+             580:    8(fvec4)       Load 10(color) \r
+             581:    8(fvec4)       CompositeInsert 579 580 3\r
+                                    Store 10(color) 581 \r
+                                    Branch 576\r
+             582:                   Label\r
+             583:    8(fvec4)       Load 10(color) \r
+             584:    7(float)       CompositeExtract 583 0\r
+             585:    7(float)       FAdd 584 85\r
+             586:    8(fvec4)       Load 10(color) \r
+             587:    8(fvec4)       CompositeInsert 585 586 0\r
+                                    Store 10(color) 587 \r
+                                    Branch 576\r
+             576:                 Label\r
+                                  Branch 545\r
+             564:               Label\r
+             589:    8(fvec4)   Load 10(color) \r
+             590:    8(fvec4)   CompositeConstruct 85 85 85 85\r
+             591:    8(fvec4)   FAdd 589 590\r
+                                Store 10(color) 591 \r
+                                Branch 546\r
+             546:             Label\r
+                              Branch 593\r
+             593:             Label\r
+             595:    8(fvec4) Load 10(color) \r
+             596:    7(float) CompositeExtract 595 0\r
+             598:    16(bool) FOrdLessThan 596 597\r
+                              LoopMerge 594 None\r
+                              BranchConditional 598 599 594 \r
+             599:               Label\r
+             601:    8(fvec4)   Load 600(bigColor8) \r
+             602:    8(fvec4)   Load 10(color) \r
+             603:    8(fvec4)   FAdd 602 601\r
+                                Store 10(color) 603 \r
+             604:    8(fvec4)   Load 10(color) \r
+             605:    7(float)   CompositeExtract 604 2\r
+             606:    7(float)   Load 472(d8) \r
+             607:    16(bool)   FOrdLessThan 605 606\r
+                                SelectionMerge 609 None\r
+                                BranchConditional 607 608 609 \r
+             608:                 Label\r
+             610:    8(fvec4)     Load 10(color) \r
+             611:    7(float)     CompositeExtract 610 3\r
+             612:    7(float)     Load 366(d6) \r
+             613:    16(bool)     FOrdLessThan 611 612\r
+                                  SelectionMerge 615 None\r
+                                  BranchConditional 613 614 615 \r
+             614:                   Label\r
+                                    Branch 593\r
+             615:                 Label\r
+                                  Branch 609\r
+             609:               Label\r
+             617:    8(fvec4)   Load 600(bigColor8) \r
+             618:    7(float)   CompositeExtract 617 0\r
+             619:    8(fvec4)   Load 10(color) \r
+             620:    7(float)   CompositeExtract 619 1\r
+             621:    7(float)   FAdd 620 618\r
+             622:    8(fvec4)   Load 10(color) \r
+             623:    8(fvec4)   CompositeInsert 621 622 1\r
+                                Store 10(color) 623 \r
+                                Branch 593\r
+             594:             Label\r
+             624:    8(fvec4) Load 10(color) \r
+             625:    8(fvec4) CompositeConstruct 85 85 85 85\r
+             626:    8(fvec4) FAdd 624 625\r
+                              Store 10(color) 626 \r
+             629:    8(fvec4) Load 10(color) \r
+                              Store 628(gl_FragColor) 629 \r
+                              Branch 630\r
+             630:             Label\r
+             632:    8(fvec4) Load 10(color) \r
+             633:    7(float) CompositeExtract 632 0\r
+             635:    7(float) Load 634(d14) \r
+             636:    16(bool) FOrdLessThan 633 635\r
+                              LoopMerge 631 None\r
+                              BranchConditional 636 637 631 \r
+             637:               Label\r
+             638:    8(fvec4)   Load 10(color) \r
+             639:    7(float)   CompositeExtract 638 1\r
+             641:    7(float)   Load 640(d15) \r
+             642:    16(bool)   FOrdLessThan 639 641\r
+                                SelectionMerge 644 None\r
+                                BranchConditional 642 643 646 \r
+             643:                 Label\r
                                   Branch 6\r
-             635:                 Label\r
-             636:    8(fvec4)     Load 10(color) \r
-             637:    8(fvec4)     CompositeConstruct 85 85 85 85\r
-             638:    8(fvec4)     FAdd 636 637\r
-                                  Store 10(color) 638 \r
-                                  Branch 633\r
-             633:               Label\r
-                                Branch 619\r
-             620:             Label\r
-             639:    8(fvec4) Load 10(color) \r
-             640:    8(fvec4) CompositeConstruct 85 85 85 85\r
-             641:    8(fvec4) FAdd 639 640\r
-                              Store 10(color) 641 \r
-                              Branch 642\r
-             642:             Label\r
-             644:    8(fvec4) Load 10(color) \r
-             645:    7(float) CompositeExtract 644 3\r
-             647:    7(float) Load 646(d16) \r
-             648:    16(bool) FOrdLessThan 645 647\r
-                              LoopMerge 643 None\r
-                              BranchConditional 648 649 643 \r
-             649:               Label\r
-             650:    8(fvec4)   Load 10(color) \r
-             651:    7(float)   CompositeExtract 650 3\r
-             652:    7(float)   FAdd 651 85\r
-             653:    8(fvec4)   Load 10(color) \r
-             654:    8(fvec4)   CompositeInsert 652 653 3\r
-                                Store 10(color) 654 \r
-                                Branch 642\r
-             643:             Label\r
-                              Branch 655\r
-             655:             Label\r
-             657:    8(fvec4) Load 10(color) \r
-             658:    7(float) CompositeExtract 657 3\r
-             659:    7(float) Load 92(d2) \r
-             660:    16(bool) FOrdLessThan 658 659\r
-             661:    8(fvec4) Load 10(color) \r
-             662:    7(float) CompositeExtract 661 1\r
-             663:    7(float) Load 97(d3) \r
-             664:    16(bool) FOrdLessThan 662 663\r
-             665:    16(bool) LogicalAnd 660 664\r
-                              LoopMerge 656 None\r
-                              BranchConditional 665 666 656 \r
-             666:               Label\r
-             667:    8(fvec4)   Load 102(bigColor1_2) \r
-             668:    8(fvec4)   Load 10(color) \r
-             669:    8(fvec4)   FAdd 668 667\r
-                                Store 10(color) 669 \r
-             670:    8(fvec4)   Load 10(color) \r
-             671:    7(float)   CompositeExtract 670 2\r
-             672:    7(float)   Load 97(d3) \r
-             673:    16(bool)   FOrdLessThan 671 672\r
-                                SelectionMerge 675 None\r
-                                BranchConditional 673 674 675 \r
-             674:                 Label\r
+             646:                 Label\r
+             647:    8(fvec4)     Load 10(color) \r
+             648:    8(fvec4)     CompositeConstruct 85 85 85 85\r
+             649:    8(fvec4)     FAdd 647 648\r
+                                  Store 10(color) 649 \r
+                                  Branch 644\r
+             644:               Label\r
+                                Branch 630\r
+             631:             Label\r
+             650:    8(fvec4) Load 10(color) \r
+             651:    8(fvec4) CompositeConstruct 85 85 85 85\r
+             652:    8(fvec4) FAdd 650 651\r
+                              Store 10(color) 652 \r
+                              Branch 653\r
+             653:             Label\r
+             655:    8(fvec4) Load 10(color) \r
+             656:    7(float) CompositeExtract 655 3\r
+             658:    7(float) Load 657(d16) \r
+             659:    16(bool) FOrdLessThan 656 658\r
+                              LoopMerge 654 None\r
+                              BranchConditional 659 660 654 \r
+             660:               Label\r
+             661:    8(fvec4)   Load 10(color) \r
+             662:    7(float)   CompositeExtract 661 3\r
+             663:    7(float)   FAdd 662 85\r
+             664:    8(fvec4)   Load 10(color) \r
+             665:    8(fvec4)   CompositeInsert 663 664 3\r
+                                Store 10(color) 665 \r
+                                Branch 653\r
+             654:             Label\r
+                              Branch 666\r
+             666:             Label\r
+             668:    8(fvec4) Load 10(color) \r
+             669:    7(float) CompositeExtract 668 3\r
+             670:    7(float) Load 92(d2) \r
+             671:    16(bool) FOrdLessThan 669 670\r
+             672:    8(fvec4) Load 10(color) \r
+             673:    7(float) CompositeExtract 672 1\r
+             674:    7(float) Load 97(d3) \r
+             675:    16(bool) FOrdLessThan 673 674\r
+             676:    16(bool) LogicalAnd 671 675\r
+                              LoopMerge 667 None\r
+                              BranchConditional 676 677 667 \r
+             677:               Label\r
+             678:    8(fvec4)   Load 102(bigColor1_2) \r
+             679:    8(fvec4)   Load 10(color) \r
+             680:    8(fvec4)   FAdd 679 678\r
+                                Store 10(color) 680 \r
+             681:    8(fvec4)   Load 10(color) \r
+             682:    7(float)   CompositeExtract 681 2\r
+             683:    7(float)   Load 97(d3) \r
+             684:    16(bool)   FOrdLessThan 682 683\r
+                                SelectionMerge 686 None\r
+                                BranchConditional 684 685 686 \r
+             685:                 Label\r
                                   Branch 6\r
-             675:               Label\r
-                                Branch 655\r
-             656:             Label\r
-                              Branch 677\r
-             677:             Label\r
-                              LoopMerge 678 None\r
-                              Branch 679\r
-             679:             Label\r
-             681:    8(fvec4) Load 10(color) \r
-             682:    7(float) CompositeExtract 681 1\r
-             684:    7(float) Load 683(d18) \r
-             685:    16(bool) FOrdLessThan 682 684\r
-                              SelectionMerge 687 None\r
-                              BranchConditional 685 686 687 \r
              686:               Label\r
-                                Branch 6\r
-             687:             Label\r
-             689:    8(fvec4) Load 10(color) \r
-             690:    8(fvec4) CompositeConstruct 85 85 85 85\r
-             691:    8(fvec4) FAdd 689 690\r
-                              Store 10(color) 691 \r
-                              Branch 680\r
-             680:             Label\r
-             692:    8(fvec4) Load 10(color) \r
-             693:    7(float) CompositeExtract 692 0\r
-             695:    7(float) Load 694(d17) \r
-             696:    16(bool) FOrdLessThan 693 695\r
-                              BranchConditional 696 697 678 \r
-             697:             Label\r
-                              Branch 677\r
-             678:             Label\r
-                              Branch 698\r
-             698:             Label\r
+                                Branch 666\r
+             667:             Label\r
+                              Branch 688\r
+             688:             Label\r
+             690:    16(bool) Phi 17 667 162 706\r
+                              LoopMerge 689 None\r
+                              Branch 691\r
+             691:             Label\r
+                              SelectionMerge 692 None\r
+                              BranchConditional 690 692 693 \r
+             693:               Label\r
+             694:    8(fvec4)   Load 10(color) \r
+             695:    7(float)   CompositeExtract 694 0\r
+             697:    7(float)   Load 696(d17) \r
+             698:    16(bool)   FOrdLessThan 695 697\r
+                                SelectionMerge 699 None\r
+                                BranchConditional 698 699 689 \r
+             699:               Label\r
+                                Branch 692\r
+             692:             Label\r
              700:    8(fvec4) Load 10(color) \r
              701:    7(float) CompositeExtract 700 1\r
-             702:    7(float) Load 646(d16) \r
-             703:    16(bool) FOrdLessThan 701 702\r
-                              LoopMerge 699 None\r
-                              BranchConditional 703 704 699 \r
-             704:               Label\r
-             705:    8(fvec4)   Load 10(color) \r
-             706:    7(float)   CompositeExtract 705 3\r
-             707:    7(float)   Load 646(d16) \r
-             708:    16(bool)   FOrdLessThan 706 707\r
-                                SelectionMerge 710 None\r
-                                BranchConditional 708 709 712 \r
-             709:                 Label\r
+             703:    7(float) Load 702(d18) \r
+             704:    16(bool) FOrdLessThan 701 703\r
+                              SelectionMerge 706 None\r
+                              BranchConditional 704 705 706 \r
+             705:               Label\r
+                                Branch 6\r
+             706:             Label\r
+             708:    8(fvec4) Load 10(color) \r
+             709:    8(fvec4) CompositeConstruct 85 85 85 85\r
+             710:    8(fvec4) FAdd 708 709\r
+                              Store 10(color) 710 \r
+                              Branch 688\r
+             689:             Label\r
+                              Branch 711\r
+             711:             Label\r
+             713:    8(fvec4) Load 10(color) \r
+             714:    7(float) CompositeExtract 713 1\r
+             715:    7(float) Load 657(d16) \r
+             716:    16(bool) FOrdLessThan 714 715\r
+                              LoopMerge 712 None\r
+                              BranchConditional 716 717 712 \r
+             717:               Label\r
+             718:    8(fvec4)   Load 10(color) \r
+             719:    7(float)   CompositeExtract 718 3\r
+             720:    7(float)   Load 657(d16) \r
+             721:    16(bool)   FOrdLessThan 719 720\r
+                                SelectionMerge 723 None\r
+                                BranchConditional 721 722 725 \r
+             722:                 Label\r
                                   Kill\r
-             712:                 Label\r
-             713:    8(fvec4)     Load 10(color) \r
-             714:    8(fvec4)     CompositeConstruct 85 85 85 85\r
-             715:    8(fvec4)     FAdd 713 714\r
-                                  Store 10(color) 715 \r
-                                  Branch 710\r
-             710:               Label\r
-                                Branch 698\r
-             699:             Label\r
-             716:    8(fvec4) Load 10(color) \r
-             717:    8(fvec4) CompositeConstruct 85 85 85 85\r
-             718:    8(fvec4) FAdd 716 717\r
-                              Store 10(color) 718 \r
-             719:    8(fvec4) Load 10(color) \r
-                              Store 617(gl_FragColor) 719 \r
+             725:                 Label\r
+             726:    8(fvec4)     Load 10(color) \r
+             727:    8(fvec4)     CompositeConstruct 85 85 85 85\r
+             728:    8(fvec4)     FAdd 726 727\r
+                                  Store 10(color) 728 \r
+                                  Branch 723\r
+             723:               Label\r
+                                Branch 711\r
+             712:             Label\r
+             729:    8(fvec4) Load 10(color) \r
+             730:    8(fvec4) CompositeConstruct 85 85 85 85\r
+             731:    8(fvec4) FAdd 729 730\r
+                              Store 10(color) 731 \r
+             732:    8(fvec4) Load 10(color) \r
+                              Store 628(gl_FragColor) 732 \r
                               Branch 6\r
                6:             Label\r
                               Return\r
index 768571c..a3ad1db 100644 (file)
@@ -7,7 +7,7 @@ Linked fragment stage:
 \r
 // Module Version 99\r
 // Generated by (magic number): 51a00bb\r
-// Id's are bound by 192\r
+// Id's are bound by 196\r
 \r
                               Source GLSL 130\r
                1:             ExtInstImport  "GLSL.std.450"\r
@@ -16,98 +16,98 @@ Linked fragment stage:
                               Name 4  "main"\r
                               Name 10  "color"\r
                               Name 12  "BaseColor"\r
-                              Name 19  "bigColor4"\r
-                              Name 26  "d4"\r
-                              Name 79  "d13"\r
-                              Name 145  "gl_FragColor"\r
-                              Name 147  "bigColor"\r
-                              Name 148  "bigColor1_1"\r
-                              Name 149  "bigColor1_2"\r
-                              Name 150  "bigColor1_3"\r
-                              Name 151  "bigColor2"\r
-                              Name 152  "bigColor3"\r
-                              Name 153  "bigColor5"\r
-                              Name 154  "bigColor6"\r
-                              Name 155  "bigColor7"\r
-                              Name 156  "bigColor8"\r
-                              Name 157  "d"\r
-                              Name 158  "d2"\r
-                              Name 159  "d3"\r
-                              Name 160  "d5"\r
-                              Name 161  "d6"\r
-                              Name 162  "d7"\r
-                              Name 163  "d8"\r
-                              Name 164  "d9"\r
-                              Name 165  "d10"\r
-                              Name 166  "d11"\r
-                              Name 167  "d12"\r
-                              Name 168  "d14"\r
-                              Name 169  "d15"\r
-                              Name 170  "d16"\r
-                              Name 171  "d17"\r
-                              Name 172  "d18"\r
-                              Name 173  "d19"\r
-                              Name 174  "d20"\r
-                              Name 175  "d21"\r
-                              Name 176  "d22"\r
-                              Name 177  "d23"\r
-                              Name 178  "d24"\r
-                              Name 179  "d25"\r
-                              Name 180  "d26"\r
-                              Name 181  "d27"\r
-                              Name 182  "d28"\r
-                              Name 183  "d29"\r
-                              Name 184  "d30"\r
-                              Name 185  "d31"\r
-                              Name 186  "d32"\r
-                              Name 187  "d33"\r
-                              Name 188  "d34"\r
-                              Name 191  "Count"\r
+                              Name 25  "d4"\r
+                              Name 30  "bigColor4"\r
+                              Name 83  "d13"\r
+                              Name 149  "gl_FragColor"\r
+                              Name 151  "bigColor"\r
+                              Name 152  "bigColor1_1"\r
+                              Name 153  "bigColor1_2"\r
+                              Name 154  "bigColor1_3"\r
+                              Name 155  "bigColor2"\r
+                              Name 156  "bigColor3"\r
+                              Name 157  "bigColor5"\r
+                              Name 158  "bigColor6"\r
+                              Name 159  "bigColor7"\r
+                              Name 160  "bigColor8"\r
+                              Name 161  "d"\r
+                              Name 162  "d2"\r
+                              Name 163  "d3"\r
+                              Name 164  "d5"\r
+                              Name 165  "d6"\r
+                              Name 166  "d7"\r
+                              Name 167  "d8"\r
+                              Name 168  "d9"\r
+                              Name 169  "d10"\r
+                              Name 170  "d11"\r
+                              Name 171  "d12"\r
+                              Name 172  "d14"\r
+                              Name 173  "d15"\r
+                              Name 174  "d16"\r
+                              Name 175  "d17"\r
+                              Name 176  "d18"\r
+                              Name 177  "d19"\r
+                              Name 178  "d20"\r
+                              Name 179  "d21"\r
+                              Name 180  "d22"\r
+                              Name 181  "d23"\r
+                              Name 182  "d24"\r
+                              Name 183  "d25"\r
+                              Name 184  "d26"\r
+                              Name 185  "d27"\r
+                              Name 186  "d28"\r
+                              Name 187  "d29"\r
+                              Name 188  "d30"\r
+                              Name 189  "d31"\r
+                              Name 190  "d32"\r
+                              Name 191  "d33"\r
+                              Name 192  "d34"\r
+                              Name 195  "Count"\r
                               Decorate 12(BaseColor) Smooth \r
-                              Decorate 145(gl_FragColor) BuiltIn FragColor\r
-                              Decorate 147(bigColor) NoStaticUse \r
-                              Decorate 148(bigColor1_1) NoStaticUse \r
-                              Decorate 149(bigColor1_2) NoStaticUse \r
-                              Decorate 150(bigColor1_3) NoStaticUse \r
-                              Decorate 151(bigColor2) NoStaticUse \r
-                              Decorate 152(bigColor3) NoStaticUse \r
-                              Decorate 153(bigColor5) NoStaticUse \r
-                              Decorate 154(bigColor6) NoStaticUse \r
-                              Decorate 155(bigColor7) NoStaticUse \r
-                              Decorate 156(bigColor8) NoStaticUse \r
-                              Decorate 157(d) NoStaticUse \r
-                              Decorate 158(d2) NoStaticUse \r
-                              Decorate 159(d3) NoStaticUse \r
-                              Decorate 160(d5) NoStaticUse \r
-                              Decorate 161(d6) NoStaticUse \r
-                              Decorate 162(d7) NoStaticUse \r
-                              Decorate 163(d8) NoStaticUse \r
-                              Decorate 164(d9) NoStaticUse \r
-                              Decorate 165(d10) NoStaticUse \r
-                              Decorate 166(d11) NoStaticUse \r
-                              Decorate 167(d12) NoStaticUse \r
-                              Decorate 168(d14) NoStaticUse \r
-                              Decorate 169(d15) NoStaticUse \r
-                              Decorate 170(d16) NoStaticUse \r
-                              Decorate 171(d17) NoStaticUse \r
-                              Decorate 172(d18) NoStaticUse \r
-                              Decorate 173(d19) NoStaticUse \r
-                              Decorate 174(d20) NoStaticUse \r
-                              Decorate 175(d21) NoStaticUse \r
-                              Decorate 176(d22) NoStaticUse \r
-                              Decorate 177(d23) NoStaticUse \r
-                              Decorate 178(d24) NoStaticUse \r
-                              Decorate 179(d25) NoStaticUse \r
-                              Decorate 180(d26) NoStaticUse \r
-                              Decorate 181(d27) NoStaticUse \r
-                              Decorate 182(d28) NoStaticUse \r
-                              Decorate 183(d29) NoStaticUse \r
-                              Decorate 184(d30) NoStaticUse \r
-                              Decorate 185(d31) NoStaticUse \r
-                              Decorate 186(d32) NoStaticUse \r
-                              Decorate 187(d33) NoStaticUse \r
-                              Decorate 188(d34) NoStaticUse \r
-                              Decorate 191(Count) NoStaticUse \r
+                              Decorate 149(gl_FragColor) BuiltIn FragColor\r
+                              Decorate 151(bigColor) NoStaticUse \r
+                              Decorate 152(bigColor1_1) NoStaticUse \r
+                              Decorate 153(bigColor1_2) NoStaticUse \r
+                              Decorate 154(bigColor1_3) NoStaticUse \r
+                              Decorate 155(bigColor2) NoStaticUse \r
+                              Decorate 156(bigColor3) NoStaticUse \r
+                              Decorate 157(bigColor5) NoStaticUse \r
+                              Decorate 158(bigColor6) NoStaticUse \r
+                              Decorate 159(bigColor7) NoStaticUse \r
+                              Decorate 160(bigColor8) NoStaticUse \r
+                              Decorate 161(d) NoStaticUse \r
+                              Decorate 162(d2) NoStaticUse \r
+                              Decorate 163(d3) NoStaticUse \r
+                              Decorate 164(d5) NoStaticUse \r
+                              Decorate 165(d6) NoStaticUse \r
+                              Decorate 166(d7) NoStaticUse \r
+                              Decorate 167(d8) NoStaticUse \r
+                              Decorate 168(d9) NoStaticUse \r
+                              Decorate 169(d10) NoStaticUse \r
+                              Decorate 170(d11) NoStaticUse \r
+                              Decorate 171(d12) NoStaticUse \r
+                              Decorate 172(d14) NoStaticUse \r
+                              Decorate 173(d15) NoStaticUse \r
+                              Decorate 174(d16) NoStaticUse \r
+                              Decorate 175(d17) NoStaticUse \r
+                              Decorate 176(d18) NoStaticUse \r
+                              Decorate 177(d19) NoStaticUse \r
+                              Decorate 178(d20) NoStaticUse \r
+                              Decorate 179(d21) NoStaticUse \r
+                              Decorate 180(d22) NoStaticUse \r
+                              Decorate 181(d23) NoStaticUse \r
+                              Decorate 182(d24) NoStaticUse \r
+                              Decorate 183(d25) NoStaticUse \r
+                              Decorate 184(d26) NoStaticUse \r
+                              Decorate 185(d27) NoStaticUse \r
+                              Decorate 186(d28) NoStaticUse \r
+                              Decorate 187(d29) NoStaticUse \r
+                              Decorate 188(d30) NoStaticUse \r
+                              Decorate 189(d31) NoStaticUse \r
+                              Decorate 190(d32) NoStaticUse \r
+                              Decorate 191(d33) NoStaticUse \r
+                              Decorate 192(d34) NoStaticUse \r
+                              Decorate 195(Count) NoStaticUse \r
                2:             TypeVoid\r
                3:             TypeFunction 2 \r
                7:             TypeFloat 32\r
@@ -115,61 +115,63 @@ Linked fragment stage:
                9:             TypePointer Function 8(fvec4)\r
               11:             TypePointer Input 8(fvec4)\r
    12(BaseColor):     11(ptr) Variable Input \r
-              18:             TypePointer UniformConstant 8(fvec4)\r
-   19(bigColor4):     18(ptr) Variable UniformConstant \r
-              25:             TypePointer UniformConstant 7(float)\r
-          26(d4):     25(ptr) Variable UniformConstant \r
-              28:             TypeBool\r
-              32:    7(float) Constant 1073741824\r
-              46:    7(float) Constant 1065353216\r
-         79(d13):     25(ptr) Variable UniformConstant \r
-             144:             TypePointer Output 8(fvec4)\r
-145(gl_FragColor):    144(ptr) Variable Output \r
-   147(bigColor):     18(ptr) Variable UniformConstant \r
-148(bigColor1_1):     18(ptr) Variable UniformConstant \r
-149(bigColor1_2):     18(ptr) Variable UniformConstant \r
-150(bigColor1_3):     18(ptr) Variable UniformConstant \r
-  151(bigColor2):     18(ptr) Variable UniformConstant \r
-  152(bigColor3):     18(ptr) Variable UniformConstant \r
-  153(bigColor5):     18(ptr) Variable UniformConstant \r
-  154(bigColor6):     18(ptr) Variable UniformConstant \r
-  155(bigColor7):     18(ptr) Variable UniformConstant \r
-  156(bigColor8):     18(ptr) Variable UniformConstant \r
-          157(d):     25(ptr) Variable UniformConstant \r
-         158(d2):     25(ptr) Variable UniformConstant \r
-         159(d3):     25(ptr) Variable UniformConstant \r
-         160(d5):     25(ptr) Variable UniformConstant \r
-         161(d6):     25(ptr) Variable UniformConstant \r
-         162(d7):     25(ptr) Variable UniformConstant \r
-         163(d8):     25(ptr) Variable UniformConstant \r
-         164(d9):     25(ptr) Variable UniformConstant \r
-        165(d10):     25(ptr) Variable UniformConstant \r
-        166(d11):     25(ptr) Variable UniformConstant \r
-        167(d12):     25(ptr) Variable UniformConstant \r
-        168(d14):     25(ptr) Variable UniformConstant \r
-        169(d15):     25(ptr) Variable UniformConstant \r
-        170(d16):     25(ptr) Variable UniformConstant \r
-        171(d17):     25(ptr) Variable UniformConstant \r
-        172(d18):     25(ptr) Variable UniformConstant \r
-        173(d19):     25(ptr) Variable UniformConstant \r
-        174(d20):     25(ptr) Variable UniformConstant \r
-        175(d21):     25(ptr) Variable UniformConstant \r
-        176(d22):     25(ptr) Variable UniformConstant \r
-        177(d23):     25(ptr) Variable UniformConstant \r
-        178(d24):     25(ptr) Variable UniformConstant \r
-        179(d25):     25(ptr) Variable UniformConstant \r
-        180(d26):     25(ptr) Variable UniformConstant \r
-        181(d27):     25(ptr) Variable UniformConstant \r
-        182(d28):     25(ptr) Variable UniformConstant \r
-        183(d29):     25(ptr) Variable UniformConstant \r
-        184(d30):     25(ptr) Variable UniformConstant \r
-        185(d31):     25(ptr) Variable UniformConstant \r
-        186(d32):     25(ptr) Variable UniformConstant \r
-        187(d33):     25(ptr) Variable UniformConstant \r
-        188(d34):     25(ptr) Variable UniformConstant \r
-             189:             TypeInt 32 1\r
-             190:             TypePointer UniformConstant 189(int)\r
-      191(Count):    190(ptr) Variable UniformConstant \r
+              17:             TypeBool\r
+              18:    17(bool) ConstantTrue\r
+              24:             TypePointer UniformConstant 7(float)\r
+          25(d4):     24(ptr) Variable UniformConstant \r
+              29:             TypePointer UniformConstant 8(fvec4)\r
+   30(bigColor4):     29(ptr) Variable UniformConstant \r
+              40:    7(float) Constant 1073741824\r
+              54:    7(float) Constant 1065353216\r
+              58:    17(bool) ConstantFalse\r
+         83(d13):     24(ptr) Variable UniformConstant \r
+             148:             TypePointer Output 8(fvec4)\r
+149(gl_FragColor):    148(ptr) Variable Output \r
+   151(bigColor):     29(ptr) Variable UniformConstant \r
+152(bigColor1_1):     29(ptr) Variable UniformConstant \r
+153(bigColor1_2):     29(ptr) Variable UniformConstant \r
+154(bigColor1_3):     29(ptr) Variable UniformConstant \r
+  155(bigColor2):     29(ptr) Variable UniformConstant \r
+  156(bigColor3):     29(ptr) Variable UniformConstant \r
+  157(bigColor5):     29(ptr) Variable UniformConstant \r
+  158(bigColor6):     29(ptr) Variable UniformConstant \r
+  159(bigColor7):     29(ptr) Variable UniformConstant \r
+  160(bigColor8):     29(ptr) Variable UniformConstant \r
+          161(d):     24(ptr) Variable UniformConstant \r
+         162(d2):     24(ptr) Variable UniformConstant \r
+         163(d3):     24(ptr) Variable UniformConstant \r
+         164(d5):     24(ptr) Variable UniformConstant \r
+         165(d6):     24(ptr) Variable UniformConstant \r
+         166(d7):     24(ptr) Variable UniformConstant \r
+         167(d8):     24(ptr) Variable UniformConstant \r
+         168(d9):     24(ptr) Variable UniformConstant \r
+        169(d10):     24(ptr) Variable UniformConstant \r
+        170(d11):     24(ptr) Variable UniformConstant \r
+        171(d12):     24(ptr) Variable UniformConstant \r
+        172(d14):     24(ptr) Variable UniformConstant \r
+        173(d15):     24(ptr) Variable UniformConstant \r
+        174(d16):     24(ptr) Variable UniformConstant \r
+        175(d17):     24(ptr) Variable UniformConstant \r
+        176(d18):     24(ptr) Variable UniformConstant \r
+        177(d19):     24(ptr) Variable UniformConstant \r
+        178(d20):     24(ptr) Variable UniformConstant \r
+        179(d21):     24(ptr) Variable UniformConstant \r
+        180(d22):     24(ptr) Variable UniformConstant \r
+        181(d23):     24(ptr) Variable UniformConstant \r
+        182(d24):     24(ptr) Variable UniformConstant \r
+        183(d25):     24(ptr) Variable UniformConstant \r
+        184(d26):     24(ptr) Variable UniformConstant \r
+        185(d27):     24(ptr) Variable UniformConstant \r
+        186(d28):     24(ptr) Variable UniformConstant \r
+        187(d29):     24(ptr) Variable UniformConstant \r
+        188(d30):     24(ptr) Variable UniformConstant \r
+        189(d31):     24(ptr) Variable UniformConstant \r
+        190(d32):     24(ptr) Variable UniformConstant \r
+        191(d33):     24(ptr) Variable UniformConstant \r
+        192(d34):     24(ptr) Variable UniformConstant \r
+             193:             TypeInt 32 1\r
+             194:             TypePointer UniformConstant 193(int)\r
+      195(Count):    194(ptr) Variable UniformConstant \r
          4(main):           2 Function None 3\r
                5:             Label\r
        10(color):      9(ptr) Variable Function \r
@@ -177,173 +179,178 @@ Linked fragment stage:
                               Store 10(color) 13 \r
                               Branch 14\r
               14:             Label\r
+              16:    17(bool) Phi 18 5 58 50 58 65\r
                               LoopMerge 15 None\r
-                              Branch 16\r
-              16:             Label\r
-              20:    8(fvec4) Load 19(bigColor4) \r
-              21:    8(fvec4) Load 10(color) \r
-              22:    8(fvec4) FAdd 21 20\r
-                              Store 10(color) 22 \r
-              23:    8(fvec4) Load 10(color) \r
-              24:    7(float) CompositeExtract 23 0\r
-              27:    7(float) Load 26(d4) \r
-              29:    28(bool) FOrdLessThan 24 27\r
-                              SelectionMerge 31 None\r
-                              BranchConditional 29 30 31 \r
-              30:               Label\r
-              33:    8(fvec4)   Load 10(color) \r
-              34:    7(float)   CompositeExtract 33 2\r
-              35:    7(float)   FAdd 34 32\r
-              36:    8(fvec4)   Load 10(color) \r
-              37:    8(fvec4)   CompositeInsert 35 36 2\r
-                                Store 10(color) 37 \r
-              38:    8(fvec4)   Load 10(color) \r
-              39:    7(float)   CompositeExtract 38 2\r
-              40:    7(float)   Load 26(d4) \r
-              41:    28(bool)   FOrdLessThan 39 40\r
-                                SelectionMerge 43 None\r
-                                BranchConditional 41 42 43 \r
-              42:                 Label\r
-              44:    8(fvec4)     Load 10(color) \r
-              45:    7(float)     CompositeExtract 44 0\r
-              47:    7(float)     FAdd 45 46\r
-              48:    8(fvec4)     Load 10(color) \r
-              49:    8(fvec4)     CompositeInsert 47 48 0\r
-                                  Store 10(color) 49 \r
-                                  Branch 17\r
-              43:               Label\r
-                                Branch 31\r
-              31:             Label\r
-              51:    8(fvec4) Load 10(color) \r
-              52:    7(float) CompositeExtract 51 1\r
-              53:    7(float) Load 26(d4) \r
-              54:    28(bool) FOrdLessThan 52 53\r
-                              SelectionMerge 56 None\r
-                              BranchConditional 54 55 63 \r
-              55:               Label\r
-              57:    7(float)   Load 26(d4) \r
-              58:    8(fvec4)   Load 10(color) \r
-              59:    7(float)   CompositeExtract 58 1\r
-              60:    7(float)   FAdd 59 57\r
-              61:    8(fvec4)   Load 10(color) \r
-              62:    8(fvec4)   CompositeInsert 60 61 1\r
-                                Store 10(color) 62 \r
-                                Branch 56\r
-              63:               Label\r
-              64:    7(float)   Load 26(d4) \r
-              65:    8(fvec4)   Load 10(color) \r
-              66:    7(float)   CompositeExtract 65 0\r
-              67:    7(float)   FAdd 66 64\r
-              68:    8(fvec4)   Load 10(color) \r
-              69:    8(fvec4)   CompositeInsert 67 68 0\r
-                                Store 10(color) 69 \r
-                                Branch 56\r
-              56:             Label\r
-                              Branch 17\r
-              17:             Label\r
-              70:    8(fvec4) Load 10(color) \r
-              71:    7(float) CompositeExtract 70 2\r
-              72:    7(float) Load 26(d4) \r
-              73:    28(bool) FOrdLessThan 71 72\r
-                              BranchConditional 73 74 15 \r
-              74:             Label\r
+                              Branch 19\r
+              19:             Label\r
+                              SelectionMerge 20 None\r
+                              BranchConditional 16 20 21 \r
+              21:               Label\r
+              22:    8(fvec4)   Load 10(color) \r
+              23:    7(float)   CompositeExtract 22 2\r
+              26:    7(float)   Load 25(d4) \r
+              27:    17(bool)   FOrdLessThan 23 26\r
+                                SelectionMerge 28 None\r
+                                BranchConditional 27 28 15 \r
+              28:               Label\r
+                                Branch 20\r
+              20:             Label\r
+              31:    8(fvec4) Load 30(bigColor4) \r
+              32:    8(fvec4) Load 10(color) \r
+              33:    8(fvec4) FAdd 32 31\r
+                              Store 10(color) 33 \r
+              34:    8(fvec4) Load 10(color) \r
+              35:    7(float) CompositeExtract 34 0\r
+              36:    7(float) Load 25(d4) \r
+              37:    17(bool) FOrdLessThan 35 36\r
+                              SelectionMerge 39 None\r
+                              BranchConditional 37 38 39 \r
+              38:               Label\r
+              41:    8(fvec4)   Load 10(color) \r
+              42:    7(float)   CompositeExtract 41 2\r
+              43:    7(float)   FAdd 42 40\r
+              44:    8(fvec4)   Load 10(color) \r
+              45:    8(fvec4)   CompositeInsert 43 44 2\r
+                                Store 10(color) 45 \r
+              46:    8(fvec4)   Load 10(color) \r
+              47:    7(float)   CompositeExtract 46 2\r
+              48:    7(float)   Load 25(d4) \r
+              49:    17(bool)   FOrdLessThan 47 48\r
+                                SelectionMerge 51 None\r
+                                BranchConditional 49 50 51 \r
+              50:                 Label\r
+              52:    8(fvec4)     Load 10(color) \r
+              53:    7(float)     CompositeExtract 52 0\r
+              55:    7(float)     FAdd 53 54\r
+              56:    8(fvec4)     Load 10(color) \r
+              57:    8(fvec4)     CompositeInsert 55 56 0\r
+                                  Store 10(color) 57 \r
+                                  Branch 14\r
+              51:               Label\r
+                                Branch 39\r
+              39:             Label\r
+              60:    8(fvec4) Load 10(color) \r
+              61:    7(float) CompositeExtract 60 1\r
+              62:    7(float) Load 25(d4) \r
+              63:    17(bool) FOrdLessThan 61 62\r
+                              SelectionMerge 65 None\r
+                              BranchConditional 63 64 72 \r
+              64:               Label\r
+              66:    7(float)   Load 25(d4) \r
+              67:    8(fvec4)   Load 10(color) \r
+              68:    7(float)   CompositeExtract 67 1\r
+              69:    7(float)   FAdd 68 66\r
+              70:    8(fvec4)   Load 10(color) \r
+              71:    8(fvec4)   CompositeInsert 69 70 1\r
+                                Store 10(color) 71 \r
+                                Branch 65\r
+              72:               Label\r
+              73:    7(float)   Load 25(d4) \r
+              74:    8(fvec4)   Load 10(color) \r
+              75:    7(float)   CompositeExtract 74 0\r
+              76:    7(float)   FAdd 75 73\r
+              77:    8(fvec4)   Load 10(color) \r
+              78:    8(fvec4)   CompositeInsert 76 77 0\r
+                                Store 10(color) 78 \r
+                                Branch 65\r
+              65:             Label\r
                               Branch 14\r
               15:             Label\r
-                              Branch 75\r
-              75:             Label\r
-              77:    8(fvec4) Load 10(color) \r
-              78:    7(float) CompositeExtract 77 3\r
-              80:    7(float) Load 79(d13) \r
-              81:    28(bool) FOrdLessThan 78 80\r
-                              LoopMerge 76 None\r
-                              BranchConditional 81 82 76 \r
-              82:               Label\r
-              83:    8(fvec4)   Load 10(color) \r
-              84:    7(float)   CompositeExtract 83 2\r
-              85:    7(float)   Load 79(d13) \r
-              86:    28(bool)   FOrdLessThan 84 85\r
-                                SelectionMerge 88 None\r
-                                BranchConditional 86 87 92 \r
-              87:                 Label\r
-              89:    8(fvec4)     Load 10(color) \r
-              90:    8(fvec4)     CompositeConstruct 46 46 46 46\r
-              91:    8(fvec4)     FAdd 89 90\r
-                                  Store 10(color) 91 \r
-                                  Branch 88\r
-              92:                 Label\r
+                              Branch 79\r
+              79:             Label\r
+              81:    8(fvec4) Load 10(color) \r
+              82:    7(float) CompositeExtract 81 3\r
+              84:    7(float) Load 83(d13) \r
+              85:    17(bool) FOrdLessThan 82 84\r
+                              LoopMerge 80 None\r
+                              BranchConditional 85 86 80 \r
+              86:               Label\r
+              87:    8(fvec4)   Load 10(color) \r
+              88:    7(float)   CompositeExtract 87 2\r
+              89:    7(float)   Load 83(d13) \r
+              90:    17(bool)   FOrdLessThan 88 89\r
+                                SelectionMerge 92 None\r
+                                BranchConditional 90 91 96 \r
+              91:                 Label\r
               93:    8(fvec4)     Load 10(color) \r
-              94:    8(fvec4)     CompositeConstruct 46 46 46 46\r
-              95:    8(fvec4)     FSub 93 94\r
+              94:    8(fvec4)     CompositeConstruct 54 54 54 54\r
+              95:    8(fvec4)     FAdd 93 94\r
                                   Store 10(color) 95 \r
-                                  Branch 88\r
-              88:               Label\r
-              96:    8(fvec4)   Load 19(bigColor4\r
-              97:    8(fvec4)   Load 10(color) \r
-              98:    8(fvec4)   FAdd 97 96\r
-                                Store 10(color) 98 \r
-              99:    8(fvec4)   Load 10(color) \r
-             100:    7(float)   CompositeExtract 99 0\r
-             101:    7(float)   Load 26(d4) \r
-             102:    28(bool)   FOrdLessThan 100 101\r
-                                SelectionMerge 104 None\r
-                                BranchConditional 102 103 104 \r
-             103:                 Label\r
-             105:    8(fvec4)     Load 10(color) \r
-             106:    7(float)     CompositeExtract 105 2\r
-             107:    7(float)     FAdd 106 32\r
-             108:    8(fvec4)     Load 10(color) \r
-             109:    8(fvec4)     CompositeInsert 107 108 2\r
-                                  Store 10(color) 109 \r
-             110:    8(fvec4)     Load 10(color) \r
-             111:    7(float)     CompositeExtract 110 2\r
-             112:    7(float)     Load 26(d4) \r
-             113:    28(bool)     FOrdLessThan 111 112\r
-                                  SelectionMerge 115 None\r
-                                  BranchConditional 113 114 115 \r
-             114:                   Label\r
-             116:    8(fvec4)       Load 10(color) \r
-             117:    7(float)       CompositeExtract 116 0\r
-             118:    7(float)       FAdd 117 46\r
-             119:    8(fvec4)       Load 10(color) \r
-             120:    8(fvec4)       CompositeInsert 118 119 0\r
-                                    Store 10(color) 120 \r
-                                    Branch 75\r
-             115:                 Label\r
-                                  Branch 104\r
-             104:               Label\r
-             122:    8(fvec4)   Load 10(color) \r
-             123:    7(float)   CompositeExtract 122 1\r
-             124:    7(float)   Load 26(d4) \r
-             125:    28(bool)   FOrdLessThan 123 124\r
-                                SelectionMerge 127 None\r
-                                BranchConditional 125 126 134 \r
-             126:                 Label\r
-             128:    7(float)     Load 26(d4) \r
-             129:    8(fvec4)     Load 10(color\r
-             130:    7(float)     CompositeExtract 129 1\r
-             131:    7(float)     FAdd 130 128\r
-             132:    8(fvec4)     Load 10(color) \r
-             133:    8(fvec4)     CompositeInsert 131 132 1\r
-                                  Store 10(color) 133 \r
-                                  Branch 127\r
-             134:                 Label\r
-             135:    7(float)     Load 26(d4) \r
+                                  Branch 92\r
+              96:                 Label\r
+              97:    8(fvec4)     Load 10(color\r
+              98:    8(fvec4)     CompositeConstruct 54 54 54 54\r
+              99:    8(fvec4)     FSub 97 98\r
+                                  Store 10(color) 99 \r
+                                  Branch 92\r
+              92:               Label\r
+             100:    8(fvec4)   Load 30(bigColor4) \r
+             101:    8(fvec4)   Load 10(color) \r
+             102:    8(fvec4)   FAdd 101 100\r
+                                Store 10(color) 102 \r
+             103:    8(fvec4)   Load 10(color) \r
+             104:    7(float)   CompositeExtract 103 0\r
+             105:    7(float)   Load 25(d4) \r
+             106:    17(bool)   FOrdLessThan 104 105\r
+                                SelectionMerge 108 None\r
+                                BranchConditional 106 107 108 \r
+             107:                 Label\r
+             109:    8(fvec4)     Load 10(color) \r
+             110:    7(float)     CompositeExtract 109 2\r
+             111:    7(float)     FAdd 110 40\r
+             112:    8(fvec4)     Load 10(color) \r
+             113:    8(fvec4)     CompositeInsert 111 112 2\r
+                                  Store 10(color) 113 \r
+             114:    8(fvec4)     Load 10(color) \r
+             115:    7(float)     CompositeExtract 114 2\r
+             116:    7(float)     Load 25(d4) \r
+             117:    17(bool)     FOrdLessThan 115 116\r
+                                  SelectionMerge 119 None\r
+                                  BranchConditional 117 118 119 \r
+             118:                   Label\r
+             120:    8(fvec4)       Load 10(color) \r
+             121:    7(float)       CompositeExtract 120 0\r
+             122:    7(float)       FAdd 121 54\r
+             123:    8(fvec4)       Load 10(color) \r
+             124:    8(fvec4)       CompositeInsert 122 123 0\r
+                                    Store 10(color) 124 \r
+                                    Branch 79\r
+             119:                 Label\r
+                                  Branch 108\r
+             108:               Label\r
+             126:    8(fvec4)   Load 10(color) \r
+             127:    7(float)   CompositeExtract 126 1\r
+             128:    7(float)   Load 25(d4\r
+             129:    17(bool)   FOrdLessThan 127 128\r
+                                SelectionMerge 131 None\r
+                                BranchConditional 129 130 138 \r
+             130:                 Label\r
+             132:    7(float)     Load 25(d4) \r
+             133:    8(fvec4)     Load 10(color) \r
+             134:    7(float)     CompositeExtract 133 1\r
+             135:    7(float)     FAdd 134 132\r
              136:    8(fvec4)     Load 10(color) \r
-             137:    7(float)     CompositeExtract 136 0\r
-             138:    7(float)     FAdd 137 135\r
-             139:    8(fvec4)     Load 10(color) \r
-             140:    8(fvec4)     CompositeInsert 138 139 0\r
-                                  Store 10(color) 140 \r
-                                  Branch 127\r
-             127:               Label\r
-                                Branch 75\r
-              76:             Label\r
-             141:    8(fvec4) Load 10(color) \r
-             142:    8(fvec4) CompositeConstruct 46 46 46 46\r
-             143:    8(fvec4) FAdd 141 142\r
-                              Store 10(color) 143 \r
-             146:    8(fvec4) Load 10(color) \r
-                              Store 145(gl_FragColor) 146 \r
+             137:    8(fvec4)     CompositeInsert 135 136 1\r
+                                  Store 10(color) 137 \r
+                                  Branch 131\r
+             138:                 Label\r
+             139:    7(float)     Load 25(d4) \r
+             140:    8(fvec4)     Load 10(color) \r
+             141:    7(float)     CompositeExtract 140 0\r
+             142:    7(float)     FAdd 141 139\r
+             143:    8(fvec4)     Load 10(color) \r
+             144:    8(fvec4)     CompositeInsert 142 143 0\r
+                                  Store 10(color) 144 \r
+                                  Branch 131\r
+             131:               Label\r
+                                Branch 79\r
+              80:             Label\r
+             145:    8(fvec4) Load 10(color) \r
+             146:    8(fvec4) CompositeConstruct 54 54 54 54\r
+             147:    8(fvec4) FAdd 145 146\r
+                              Store 10(color) 147 \r
+             150:    8(fvec4) Load 10(color) \r
+                              Store 149(gl_FragColor) 150 \r
                               Branch 6\r
                6:             Label\r
                               Return\r