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