Commit c22f37cf by David Neto

Generate correctly structured do-while loops.

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