Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
37e83379
Commit
37e83379
authored
Jul 20, 2015
by
John Kessenich
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #22 from google/structured-do-while
Generate correctly structured do-while loops.
parents
d2762564
c22f37cf
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1436 additions
and
1323 deletions
+1436
-1323
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+4
-14
SpvBuilder.cpp
SPIRV/SpvBuilder.cpp
+102
-38
SpvBuilder.h
SPIRV/SpvBuilder.h
+27
-27
spv.do-simple.vert.out
Test/baseResults/spv.do-simple.vert.out
+31
-24
spv.do-while-continue-break.vert.out
Test/baseResults/spv.do-while-continue-break.vert.out
+75
-68
spv.doWhileLoop.frag.out
Test/baseResults/spv.doWhileLoop.frag.out
+35
-28
spv.loops.frag.out
Test/baseResults/spv.loops.frag.out
+850
-819
spv.loopsArtificial.frag.out
Test/baseResults/spv.loopsArtificial.frag.out
+312
-305
No files found.
SPIRV/GlslangToSpv.cpp
View file @
37e83379
...
@@ -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
();
...
...
SPIRV/SpvBuilder.cpp
View file @
37e83379
...
@@ -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
.
function
=
&
getBuildPoint
()
->
getParent
();
loop
.
header
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
loop
.
header
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
loop
.
merge
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
loop
.
merge
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
loop
.
test
=
NULL
;
// Delaying creation of the loop body perturbs test results less,
// which makes for easier patch review.
loops
.
push
(
loop
);
// 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
);
}
void
Builder
::
createLoopTestBranch
(
Id
condition
)
if
(
!
loopTestFirst
)
{
{
// Generate code to defer the loop test until the second and
Loop
&
loop
=
loops
.
top
();
// 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
);
// If loop.test exists, then we've already generated the LoopMerge
// Mark the end of the structured loop. This must exist in the loop header block.
// for this loop.
if
(
!
loop
.
test
)
createMerge
(
OpLoopMerge
,
loop
.
merge
,
LoopControlMaskNone
);
createMerge
(
OpLoopMerge
,
loop
.
merge
,
LoopControlMaskNone
);
// Branching to the "body" block will keep control inside
// Generate code to see if this is the first iteration of the loop.
// the loop.
// It needs to be in its own block, since the loop merge and
Block
*
body
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
// the selection merge instructions can't both be in the same
createConditionalBranch
(
condition
,
body
,
loop
.
merge
);
// (header) block.
loop
.
function
->
addBlock
(
body
);
Block
*
firstIterationCheck
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
setBuildPoint
(
body
);
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
::
endLoopHeaderWithoutTest
(
)
void
Builder
::
createLoopTestBranch
(
Id
condition
)
{
{
Loop
&
loop
=
loops
.
top
();
Loop
&
loop
=
loops
.
top
();
// 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
);
createMerge
(
OpLoopMerge
,
loop
.
merge
,
LoopControlMaskNone
);
Block
*
body
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
loop
.
body
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
createBranch
(
body
);
// Branching to the "body" block will keep control inside
loop
.
function
->
addBlock
(
body
);
// the loop.
setBuildPoint
(
body
);
createConditionalBranch
(
condition
,
loop
.
body
,
loop
.
merge
);
loop
.
function
->
addBlock
(
loop
.
body
);
assert
(
!
loop
.
test
);
setBuildPoint
(
loop
.
body
);
loop
.
test
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
}
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
::
createBranchTo
LoopTest
()
void
Builder
::
createBranchTo
Body
()
{
{
Loop
&
loop
=
loops
.
top
();
Loop
&
loop
=
loops
.
top
();
Block
*
testBlock
=
loop
.
test
;
assert
(
loop
.
body
);
assert
(
testBlock
);
createBranch
(
testBlock
);
// This is a reconvergence of control flow, so no merge instruction
loop
.
function
->
addBlock
(
testBlock
);
// is required.
setBuildPoint
(
testBlock
);
createBranch
(
loop
.
body
);
loop
.
function
->
addBlock
(
loop
.
body
);
setBuildPoint
(
loop
.
body
);
}
}
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
);
createBranch
ToLoopHeaderFromInside
(
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
;
...
...
SPIRV/SpvBuilder.h
View file @
37e83379
...
@@ -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
;
};
};
...
...
Test/baseResults/spv.do-simple.vert.out
View file @
37e83379
...
@@ -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,44 +13,51 @@ Linked vertex stage:
...
@@ -13,44 +13,51 @@ Linked vertex stage:
EntryPoint Vertex 4
EntryPoint Vertex 4
Name 4 "main"
Name 4 "main"
Name 9 "i"
Name 9 "i"
Name 2
4
"gl_VertexID"
Name 2
8
"gl_VertexID"
Name 2
5
"gl_InstanceID"
Name 2
9
"gl_InstanceID"
Decorate 9(i) PrecisionHigh
Decorate 9(i) PrecisionHigh
Decorate 2
4
(gl_VertexID) PrecisionHigh
Decorate 2
8
(gl_VertexID) PrecisionHigh
Decorate 2
4
(gl_VertexID) BuiltIn VertexId
Decorate 2
8
(gl_VertexID) BuiltIn VertexId
Decorate 2
4
(gl_VertexID) NoStaticUse
Decorate 2
8
(gl_VertexID) NoStaticUse
Decorate 2
5
(gl_InstanceID) PrecisionHigh
Decorate 2
9
(gl_InstanceID) PrecisionHigh
Decorate 2
5
(gl_InstanceID) BuiltIn InstanceId
Decorate 2
9
(gl_InstanceID) BuiltIn InstanceId
Decorate 2
5
(gl_InstanceID) NoStaticUse
Decorate 2
9
(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 17
17: Label
23: 7(int) Load 9(i)
25: 7(int) IAdd 23 24
Store 9(i) 25
Branch 11
Branch 11
12: Label
12: Label
Branch 6
Branch 6
...
...
Test/baseResults/spv.do-while-continue-break.vert.out
View file @
37e83379
...
@@ -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
1
5 "A"
Name
2
5 "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 4
3
"G"
Name 4
7
"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
1
5(A) PrecisionHigh
Decorate
2
5(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 4
3
(G) PrecisionHigh
Decorate 4
7
(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
1
5(A): 8(ptr) Variable Function
2
5(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
4
3
(G): 8(ptr) Variable Function
4
7
(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: 1
8
(bool) IEqual 26 27
28: 1
4
(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 1
2
Branch 1
1
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 4
3(G) 44
Store 4
7(G) 48
Branch 6
Branch 6
6: Label
6: Label
Return
Return
...
...
Test/baseResults/spv.doWhileLoop.frag.out
View file @
37e83379
...
@@ -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 3
4
// Id's are bound by 3
8
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 3
2
"gl_FragColor"
Name 3
6
"gl_FragColor"
Decorate 12(BaseColor) Smooth
Decorate 12(BaseColor) Smooth
Decorate 3
2
(gl_FragColor) BuiltIn FragColor
Decorate 3
6
(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
31: 8(fvec4) Load 30(bigColor)
32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31
Store 10(color) 33
Branch 14
Branch 14
15: Label
15: Label
3
3
: 8(fvec4) Load 10(color)
3
7
: 8(fvec4) Load 10(color)
Store 3
2(gl_FragColor) 33
Store 3
6(gl_FragColor) 37
Branch 6
Branch 6
6: Label
6: Label
Return
Return
...
...
Test/baseResults/spv.loops.frag.out
View file @
37e83379
...
@@ -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 7
37
// Id's are bound by 7
50
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 15
1
"bigColor3"
Name 15
8
"bigColor3"
Name 16
0
"i"
Name 16
3
"i"
Name 17
5
"i"
Name 17
8
"i"
Name 21
3
"i"
Name 21
6
"i"
Name 2
38
"i"
Name 2
41
"i"
Name 26
6
"i"
Name 26
9
"i"
Name
29
6 "bigColor4"
Name
30
6 "bigColor4"
Name 3
35 "bigColor
5"
Name 3
44 "d
5"
Name 34
1 "d
5"
Name 34
8 "bigColor
5"
Name 3
59
"d6"
Name 3
66
"d6"
Name 37
1
"bigColor6"
Name 37
8
"bigColor6"
Name 4
06
"d7"
Name 4
13
"d7"
Name 4
3
7 "bigColor7"
Name 4
4
7 "bigColor7"
Name 4
59
"d8"
Name 4
72
"d8"
Name 5
06
"d9"
Name 5
17
"d9"
Name 5
38
"d10"
Name 5
49
"d10"
Name 5
49
"d11"
Name 5
60
"d11"
Name 5
61
"d12"
Name 5
72
"d12"
Name
589
"bigColor8"
Name
600
"bigColor8"
Name 6
17
"gl_FragColor"
Name 6
28
"gl_FragColor"
Name 6
23
"d14"
Name 6
34
"d14"
Name 6
29
"d15"
Name 6
40
"d15"
Name 6
46
"d16"
Name 6
57
"d16"
Name 6
83 "d18
"
Name 6
96 "d17
"
Name
694 "d17
"
Name
702 "d18
"
Name 7
20
"d13"
Name 7
33
"d13"
Name 7
21
"d19"
Name 7
34
"d19"
Name 7
22
"d20"
Name 7
35
"d20"
Name 7
23
"d21"
Name 7
36
"d21"
Name 7
24
"d22"
Name 7
37
"d22"
Name 7
25
"d23"
Name 7
38
"d23"
Name 7
26
"d24"
Name 7
39
"d24"
Name 7
27
"d25"
Name 7
40
"d25"
Name 7
28
"d26"
Name 7
41
"d26"
Name 7
29
"d27"
Name 7
42
"d27"
Name 7
30
"d28"
Name 7
43
"d28"
Name 7
31
"d29"
Name 7
44
"d29"
Name 7
32
"d30"
Name 7
45
"d30"
Name 7
33
"d31"
Name 7
46
"d31"
Name 7
34
"d32"
Name 7
47
"d32"
Name 7
35
"d33"
Name 7
48
"d33"
Name 7
36
"d34"
Name 7
49
"d34"
Decorate 12(BaseColor) Smooth
Decorate 12(BaseColor) Smooth
Decorate 6
17
(gl_FragColor) BuiltIn FragColor
Decorate 6
28
(gl_FragColor) BuiltIn FragColor
Decorate 7
20
(d13) NoStaticUse
Decorate 7
33
(d13) NoStaticUse
Decorate 7
21
(d19) NoStaticUse
Decorate 7
34
(d19) NoStaticUse
Decorate 7
22
(d20) NoStaticUse
Decorate 7
35
(d20) NoStaticUse
Decorate 7
23
(d21) NoStaticUse
Decorate 7
36
(d21) NoStaticUse
Decorate 7
24
(d22) NoStaticUse
Decorate 7
37
(d22) NoStaticUse
Decorate 7
25
(d23) NoStaticUse
Decorate 7
38
(d23) NoStaticUse
Decorate 7
26
(d24) NoStaticUse
Decorate 7
39
(d24) NoStaticUse
Decorate 7
27
(d25) NoStaticUse
Decorate 7
40
(d25) NoStaticUse
Decorate 7
28
(d26) NoStaticUse
Decorate 7
41
(d26) NoStaticUse
Decorate 7
29
(d27) NoStaticUse
Decorate 7
42
(d27) NoStaticUse
Decorate 7
30
(d28) NoStaticUse
Decorate 7
43
(d28) NoStaticUse
Decorate 7
31
(d29) NoStaticUse
Decorate 7
44
(d29) NoStaticUse
Decorate 7
32
(d30) NoStaticUse
Decorate 7
45
(d30) NoStaticUse
Decorate 7
33
(d31) NoStaticUse
Decorate 7
46
(d31) NoStaticUse
Decorate 7
34
(d32) NoStaticUse
Decorate 7
47
(d32) NoStaticUse
Decorate 7
35
(d33) NoStaticUse
Decorate 7
48
(d33) NoStaticUse
Decorate 7
36
(d34) NoStaticUse
Decorate 7
49
(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
16
0
(i): 129(ptr) Variable Function
16
3
(i): 129(ptr) Variable Function
17
5
(i): 129(ptr) Variable Function
17
8
(i): 129(ptr) Variable Function
21
3
(i): 129(ptr) Variable Function
21
6
(i): 129(ptr) Variable Function
2
38
(i): 129(ptr) Variable Function
2
41
(i): 129(ptr) Variable Function
26
6
(i): 129(ptr) Variable Function
26
9
(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)
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
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
17
3: 128(int) Load 160(i
)
17
4: 8(fvec4) Load 10(color
)
17
4: 128(int) IAdd 173 145
17
5: 8(fvec4) CompositeInsert 173 174 2
Store 1
60(i) 174
Store 1
0(color) 175
Branch 161
176: 128(int) Load 163(i)
1
62: Label
1
77: 128(int) IAdd 176 145
Store 175(i) 131
Store 163(i) 177
Branch 176
Branch 164
1
76
: Label
1
65
: 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)
18
1: Label
18
3: 16(bool) SLessThan 181 182
182: 8(fvec4) Load 10(color)
LoopMerge 180 None
183: 7(float) CompositeExtract 182 2
BranchConditional 183 184 180
18
5: 16(bool) FOrdLessThan 183 184
18
4: Label
SelectionMerge 187 None
185: 8(fvec4) Load 10(color)
BranchConditional 185 186 193
186: 7(float) CompositeExtract 185 2
18
6: Label
18
8: 16(bool) FOrdLessThan 186 187
188: 8(fvec4) Load 10(color)
SelectionMerge 190 None
189: 7(float) CompositeExtract 188 0
BranchConditional 188 189 196
1
90: 7(float) FAdd 189 85
1
89: 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
20
2: Label
20
4: 16(bool) FOrdLessThan 203 187
204: 8(fvec4) Load 10(color)
SelectionMerge 206 None
205: 7(float) CompositeExtract 204 2
BranchConditional 204 205 206
20
6: 8(fvec4) Load 10(color)
20
5: 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
2
09: Label
2
11: 16(bool) FOrdGreaterThan 208 210
Branch 210
SelectionMerge 213 None
210: Label
BranchConditional 211 212 213
Branch 203
212: Label
203: Label
Branch 213
21
1: 128(int) Load 175(i)
21
3: 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)
2
19: Label
2
21: 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
22
3: Label
22
5: 16(bool) FOrdLessThan 224 187
225: 8(fvec4) Load 10(color)
SelectionMerge 227 None
226: 7(float) CompositeExtract 225 0
BranchConditional 225 226 233
22
7: 7(float) FAdd 226 85
22
6: 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)
2
24: Label
2
38: 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)
2
15: Label
2
40: 128(int) IAdd 239 145
Store 238(i) 131
Store 216(i) 240
Branch 239
Branch 217
2
39
: Label
2
18
: 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)
24
3: Label
24
5: 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
25
0
: 8(fvec4) Load 10(color)
25
1
: 8(fvec4) Load 10(color)
25
1: 7(float) CompositeExtract 250 0
25
2: 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)
25
4: Label
25
6: 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)
2
55: Label
2
60: 128(int) IAdd 259 145
259: 8(fvec4) Load 10(color)
Store 241(i) 260
260: 7(float) CompositeExtract 259 3
Branch 242
2
61: 7(float) FAdd 260 85
2
58: 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
26
4: 128(int) Load 238(i
)
26
5: 8(fvec4) Load 10(color
)
26
5: 128(int) IAdd 264 145
26
6: 8(fvec4) CompositeInsert 264 265 3
Store
238(i) 265
Store
10(color) 266
Branch 239
267: 128(int) Load 241(i)
2
40: Label
2
68: 128(int) IAdd 267 145
Store 266(i) 131
Store 241(i) 268
Branch 267
Branch 242
2
67
: Label
2
43
: 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)
27
1: Label
27
3: 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
27
8
: 8(fvec4) Load 10(color)
27
9
: 8(fvec4) Load 10(color)
2
79: 7(float) CompositeExtract 278 0
2
80: 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)
28
2: Label
28
4: 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
28
7: 7(float) FAdd 286 85
28
6: 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
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
Branch 295
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
305: Label
307: 8(fvec4) Load 10(color)
Branch 299
308: 7(float) CompositeExtract 307 1
299: Label
309: 7(float) Load 119(d4)
307: 8(fvec4) Load 306(bigColor4)
310: 16(bool) FOrdLessThan 308 309
308: 8(fvec4) Load 10(color)
SelectionMerge 312 None
309: 8(fvec4) FAdd 308 307
BranchConditional 310 311 319
Store 10(color) 309
311: Label
310: 8(fvec4) Load 10(color)
313: 7(float) Load 119(d4)
311: 7(float) CompositeExtract 310 0
314: 8(fvec4) Load 10(color)
312: 7(float) Load 119(d4)
315: 7(float) CompositeExtract 314 1
313: 16(bool) FOrdLessThan 311 312
316: 7(float) FAdd 315 313
SelectionMerge 315 None
BranchConditional 313 314 315
314: Label
Branch 295
315: Label
317: 8(fvec4) Load 10(color)
317: 8(fvec4) Load 10(color)
318: 8(fvec4) CompositeInsert 316 317 1
318: 7(float) CompositeExtract 317 1
Store 10(color) 318
319: 7(float) Load 119(d4)
Branch 312
320: 16(bool) FOrdLessThan 318 319
319: Label
SelectionMerge 322 None
320: 7(float) Load 119(d4)
BranchConditional 320 321 329
321: 8(fvec4) Load 10(color)
321: Label
322: 7(float) CompositeExtract 321 0
323: 7(float) Load 119(d4)
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)
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)
350: 8(fvec4) Load 10(color)
351: 8(fvec4)
CompositeInsert 349 350 1
351: 8(fvec4)
FAdd 350 349
Store 10(color) 351
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 34
1
(d5)
354: 7(float) Load 34
4
(d5)
355: 16(bool) FOrdLessThan 353 354
355: 16(bool) FOrdLessThan 353 354
BranchConditional 355 356 332
SelectionMerge 357 None
BranchConditional 355 356 357
356: Label
356: Label
Branch 331
358: 7(float) Load 344(d5)
332: Label
359: 8(fvec4) Load 10(color)
357: 8(fvec4) Load 10(color)
360: 7(float) CompositeExtract 359 1
358: 7(float) CompositeExtract 357 0
361: 7(float) FAdd 360 358
360: 7(float) Load 359(d6)
362: 8(fvec4) Load 10(color)
361: 16(bool) FOrdLessThan 358 360
363: 8(fvec4) CompositeInsert 361 362 1
SelectionMerge 363 None
Store 10(color) 363
BranchConditional 361 362 375
Branch 357
362: Label
357: Label
Branch 364
Branch 336
364: Label
337: Label
366: 8(fvec4) Load 10(color)
364: 8(fvec4) Load 10(color)
367: 7(float) CompositeExtract 366 1
365: 7(float) CompositeExtract 364 0
368: 7(float) Load 359(d6)
367: 7(float) Load 366(d6)
369: 16(bool) FOrdLessThan 367 368
368: 16(bool) FOrdLessThan 365 367
LoopMerge 365 None
SelectionMerge 370 None
BranchConditional 369 370 365
BranchConditional 368 369 382
370: Label
369: Label
372: 8(fvec4) Load 371(bigColor6)
Branch 371
371: Label
373: 8(fvec4) Load 10(color)
373: 8(fvec4) Load 10(color)
374: 8(fvec4) FAdd 373 372
374: 7(float) CompositeExtract 373 1
Store 10(color) 374
375: 7(float) Load 366(d6)
Branch 364
376: 16(bool) FOrdLessThan 374 375
365: Label
LoopMerge 372 None
Branch 363
BranchConditional 376 377 372
375: Label
377: Label
Branch 376
379: 8(fvec4) Load 378(bigColor6)
376: Label
380: 8(fvec4) Load 10(color)
378: 8(fvec4) Load 10(color)
381: 8(fvec4) FAdd 380 379
379: 7(float) CompositeExtract 378 2
Store 10(color) 381
380: 7(float) Load 359(d6)
Branch 371
381: 16(bool) FOrdLessThan 379 380
372: Label
LoopMerge 377 None
Branch 370
BranchConditional 381 382 377
382: Label
382: Label
383: 8(fvec4) Load 371(bigColor6)
Branch 383
38
4: 7(float) CompositeExtract 383 2
38
3: Label
385: 8(fvec4) Load 10(color)
385: 8(fvec4) Load 10(color)
386: 7(float) CompositeExtract 385 2
386: 7(float) CompositeExtract 385 2
387: 7(float)
FAdd 386 384
387: 7(float)
Load 366(d6)
388:
8(fvec4) Load 10(color)
388:
16(bool) FOrdLessThan 386 387
389: 8(fvec4) CompositeInsert 387 388 2
LoopMerge 384 None
Store 10(color) 389
BranchConditional 388 389 384
Branch 376
389: Label
3
77: Label
3
90: 8(fvec4) Load 378(bigColor6)
Branch 363
391: 7(float) CompositeExtract 390 2
3
63: Label
3
92: 8(fvec4) Load 10(color)
39
0: 8(fvec4) Load 10(color)
39
3: 7(float) CompositeExtract 392 2
39
1: 7(float) CompositeExtract 390 0
39
4: 7(float) FAdd 393 391
39
2: 7(float) Load 359(d6
)
39
5: 8(fvec4) Load 10(color
)
39
3: 16(bool) FOrdLessThan 391 39
2
39
6: 8(fvec4) CompositeInsert 394 395
2
SelectionMerge 395 None
Store 10(color) 396
BranchConditional 393 394 412
Branch 383
3
9
4: Label
3
8
4: Label
Branch 3
96
Branch 3
70
3
96:
Label
3
70:
Label
39
8: 8(fvec4)
Load 10(color)
39
7: 8(fvec4)
Load 10(color)
39
9: 7(float) CompositeExtract 398 1
39
8: 7(float) CompositeExtract 397 0
400: 7(float) Load 359
(d6)
399: 7(float) Load 366
(d6)
40
1: 16(bool) FOrdLessThan 399 400
40
0: 16(bool) FOrdLessThan 398 399
LoopMerge 397
None
SelectionMerge 402
None
BranchConditional 401 402 397
BranchConditional 400 401 419
40
2:
Label
40
1:
Label
403: 8(fvec4) Load 371(bigColor6)
Branch 403
40
4: 8(fvec4) Load 10(color)
40
3: Label
405: 8(fvec4)
FAdd 404 403
405: 8(fvec4)
Load 10(color)
Store 10(color) 405
406: 7(float) CompositeExtract 405 1
407: 7(float)
Load 406(d7
)
407: 7(float)
Load 366(d6
)
408: 16(bool)
FOrdLessThan 407 85
408: 16(bool)
FOrdLessThan 406 407
SelectionMerge 410
None
LoopMerge 404
None
BranchConditional 408 409 410
BranchConditional 408 409 404
409: Label
409: Label
Branch 397
410: 8(fvec4) Load 378(bigColor6)
41
0: Label
41
1: 8(fvec4) Load 10(color)
Branch 396
412: 8(fvec4) FAdd 411 410
397: Label
Store 10(color) 412
Branch 395
414: 7(float) Load 413(d7)
41
2: Label
41
5: 16(bool) FOrdLessThan 414 85
Branch 413
SelectionMerge 417 None
413: Label
BranchConditional 415 416 417
41
5: 8(fvec4) Load 10(color)
41
6: Label
416: 7(float) CompositeExtract 415 2
Branch 404
417:
7(float) Load 359(d6)
417:
Label
418: 16(bool) FOrdLessThan 416 417
Branch 403
LoopMerge 414 None
404: Label
Branch
Conditional 418 419 414
Branch
402
419: Label
419: Label
420: 8(fvec4) Load 371(bigColor6)
Branch 420
42
1: 7(float) CompositeExtract 420 2
42
0: Label
422: 8(fvec4) Load 10(color)
422: 8(fvec4) Load 10(color)
423: 7(float) CompositeExtract 422 2
423: 7(float) CompositeExtract 422 2
424: 7(float) FAdd 423 421
424: 7(float) Load 366(d6)
425: 8(fvec4) Load 10(color)
425: 16(bool) FOrdLessThan 423 424
426: 8(fvec4) CompositeInsert 424 425 2
LoopMerge 421 None
Store 10(color) 426
BranchConditional 425 426 421
Branch 413
426: Label
414: Label
427: 8(fvec4) Load 378(bigColor6)
Branch 395
428: 7(float) CompositeExtract 427 2
395: Label
429: 8(fvec4) Load 10(color)
Branch 427
430: 7(float) CompositeExtract 429 2
427: Label
431: 7(float) FAdd 430 428
LoopMerge 428 None
432: 8(fvec4) Load 10(color)
Branch 429
433: 8(fvec4) CompositeInsert 431 432 2
429: Label
Store 10(color) 433
431: 7(float) Load 406(d7)
Branch 420
433: 16(bool) FOrdLessThan 431 432
421: Label
SelectionMerge 435 None
Branch 402
BranchConditional 433 434 435
402: Label
Branch 434
434: Label
434: Label
Branch 428
436: 16(bool) Phi 17 402 162 454
435: Label
LoopMerge 435 None
438: 8(fvec4) Load 437(bigColor7)
Branch 437
439: 8(fvec4) Load 10(color)
437: Label
440: 8(fvec4) FAdd 439 438
SelectionMerge 438 None
Store 10(color) 440
BranchConditional 436 438 439
441: 7(float) Load 406(d7)
439: Label
442: 16(bool) FOrdLessThan 441 85
SelectionMerge 440 None
SelectionMerge 444 None
BranchConditional 17 440 435
BranchConditional 442 443 444
440: Label
443: Label
Branch 438
445: 8(fvec4) Load 10(color)
438: Label
446: 7(float) CompositeExtract 445 2
441: 7(float) Load 413(d7)
447: 7(float) FAdd 446 85
443: 16(bool) FOrdLessThan 441 442
448: 8(fvec4) Load 10(color)
SelectionMerge 445 None
449: 8(fvec4) CompositeInsert 447 448 2
BranchConditional 443 444 445
Store 10(color) 449
Branch 428
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
480: Label
482: 8(fvec4) Load 10(color)
482: 8(fvec4) Load 10(color)
483:
7(float) CompositeExtract 482
1
483:
8(fvec4) FAdd 482 48
1
484: 7(float) FAdd 483 85
Store 10(color) 483
48
5: 8(fvec4) Load 10(color
)
48
4: 7(float) Load 472(d8
)
48
6: 8(fvec4) CompositeInsert 484 485 1
48
5: 16(bool) FOrdLessThan 484 85
Store 10(color) 486
SelectionMerge 487 None
Branch 481
BranchConditional 485 486 487
48
7:
Label
48
6:
Label
488: 8(fvec4) Load 10(color)
488: 8(fvec4) Load 10(color)
489: 7(float)
CompositeExtract 488 0
489: 7(float)
CompositeExtract 488 2
490: 7(float) FAdd 489 85
490: 7(float) FAdd 489 85
491: 8(fvec4) Load 10(color)
491: 8(fvec4) Load 10(color)
492: 8(fvec4)
CompositeInsert 490 491 0
492: 8(fvec4)
CompositeInsert 490 491 2
Store 10(color) 492
Store 10(color) 492
Branch 481
493: 7(float) Load 472(d8)
481: Label
495: 16(bool) FOrdLessThan 493 494
Branch 456
SelectionMerge 497 None
471: Label
BranchConditional 495 496 503
494: 8(fvec4) Load 12(BaseColor)
496: Label
495: 8(fvec4) Load 10(color)
498: 8(fvec4) Load 10(color)
496: 8(fvec4) FAdd 495 494
499: 7(float) CompositeExtract 498 1
Store 10(color) 496
500: 7(float) FAdd 499 85
Branch 458
501: 8(fvec4) Load 10(color)
458: Label
502: 8(fvec4) CompositeInsert 500 501 1
497: 8(fvec4) Load 10(color)
Store 10(color) 502
498: 7(float) CompositeExtract 497 2
Branch 497
499: 7(float) Load 459(d8)
503: Label
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)
504: 8(fvec4) Load 10(color)
505: 7(float) CompositeExtract 504 3
505: 7(float) CompositeExtract 504 0
507: 7(float) Load 506(d9)
506: 7(float) FAdd 505 85
508: 16(bool) FOrdLessThan 505 507
507: 8(fvec4) Load 10(color)
LoopMerge 503 None
508: 8(fvec4) CompositeInsert 506 507 0
BranchConditional 508 509 503
Store 10(color) 508
509: Label
Branch 497
510: 7(float) Load 506(d9)
497: Label
511: 7(float) Load 459(d8)
Branch 465
512: 16(bool) FOrdGreaterThan 510 511
487: Label
SelectionMerge 514 None
510: 8(fvec4) Load 12(BaseColor)
BranchConditional 512 513 514
511: 8(fvec4) Load 10(color)
512: 8(fvec4) FAdd 511 510
Store 10(color) 512
Branch 464
465: Label
Branch 513
513: Label
513: Label
515: 8(fvec4) Load 10(color)
515: 8(fvec4) Load 10(color)
516: 7(float) CompositeExtract 515 0
516: 7(float) CompositeExtract 515 3
517: 7(float) Load 406(d7)
518: 7(float) Load 517(d9)
518: 16(bool) FOrdLessThanEqual 516 517
519: 16(bool) FOrdLessThan 516 518
SelectionMerge 520 None
LoopMerge 514 None
BranchConditional 518 519 520
BranchConditional 519 520 514
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
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
Branch 514
537: Label
Branch 531
531: Label
Branch 525
525: Label
Branch 513
514: Label
514: Label
Branch 502
Branch 545
503: Label
545: 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)
547: 8(fvec4) Load 10(color)
548: 7(float)
CompositeExtract 547 1
548: 7(float)
CompositeExtract 547 2
550: 7(float)
Load 549(d11
)
550: 7(float)
Load 549(d10
)
551: 16(bool) FOrdLessThan 548 550
551: 16(bool) FOrdLessThan 548 550
SelectionMerge 553
None
LoopMerge 546
None
BranchConditional 551 552 553
BranchConditional 551 552 546
552: Label
552: Label
554: 8(fvec4) Load 10(color)
553: 8(fvec4) Load 10(color)
555: 7(float) CompositeExtract 554 2
554: 7(float) CompositeExtract 553 1
556: 7(float) FAdd 555 85
555: 7(float) FAdd 554 85
557: 8(fvec4) Load 10(color)
556: 8(fvec4) Load 10(color)
558: 8(fvec4) CompositeInsert 556 557 2
557: 8(fvec4) CompositeInsert 555 556 1
Store 10(color) 558
Store 10(color) 557
559: 8(fvec4) Load 10(color)
558: 8(fvec4) Load 10(color)
560: 7(float) CompositeExtract 559 3
559: 7(float) CompositeExtract 558 1
562: 7(float) Load 561(d12)
561: 7(float) Load 560(d11)
563: 16(bool) FOrdLessThan 560 562
562: 16(bool) FOrdLessThan 559 561
SelectionMerge 565 None
SelectionMerge 564 None
BranchConditional 563 564 571
BranchConditional 562 563 564
564: Label
563: Label
566: 8(fvec4) Load 10(color)
565: 8(fvec4) Load 10(color)
567: 7(float) CompositeExtract 566 3
566: 7(float) CompositeExtract 565 2
568: 7(float) FAdd 567 85
567: 7(float) FAdd 566 85
569: 8(fvec4) Load 10(color)
568: 8(fvec4) Load 10(color)
570: 8(fvec4) CompositeInsert 568 569 3
569: 8(fvec4) CompositeInsert 567 568 2
Store 10(color) 570
Store 10(color) 569
Branch 565
570: 8(fvec4) Load 10(color)
571: Label
571: 7(float) CompositeExtract 570 3
572: 8(fvec4) Load 10(color)
573: 7(float) Load 572(d12)
573: 7(float) CompositeExtract 572 0
574: 16(bool) FOrdLessThan 571 573
574: 7(float) FAdd 573 85
SelectionMerge 576 None
575: 8(fvec4) Load 10(color)
BranchConditional 574 575 582
576: 8(fvec4) CompositeInsert 574 575 0
575: Label
Store 10(color) 576
577: 8(fvec4) Load 10(color)
Branch 565
578: 7(float) CompositeExtract 577 3
565: Label
579: 7(float) FAdd 578 85
Branch 534
580: 8(fvec4) Load 10(color)
553: Label
581: 8(fvec4) CompositeInsert 579 580 3
578: 8(fvec4) Load 10(color)
Store 10(color) 581
579: 8(fvec4) CompositeConstruct 85 85 85 85
Branch 576
580: 8(fvec4) FAdd 578 579
Store 10(color) 580
Branch 535
535: Label
Branch 582
582: Label
582: Label
584: 8(fvec4) Load 10(color)
583: 8(fvec4) Load 10(color)
585: 7(float) CompositeExtract 584 0
584: 7(float) CompositeExtract 583 0
587: 16(bool) FOrdLessThan 585 586
585: 7(float) FAdd 584 85
LoopMerge 583 None
586: 8(fvec4) Load 10(color)
BranchConditional 587 588 583
587: 8(fvec4) CompositeInsert 585 586 0
588: Label
Store 10(color) 587
590: 8(fvec4) Load 589(bigColor8)
Branch 576
591: 8(fvec4) Load 10(color)
576: Label
592: 8(fvec4) FAdd 591 590
Branch 545
Store 10(color) 592
564: Label
593: 8(fvec4) Load 10(color)
589: 8(fvec4) Load 10(color)
594: 7(float) CompositeExtract 593 2
590: 8(fvec4) CompositeConstruct 85 85 85 85
595: 7(float) Load 459(d8)
591: 8(fvec4) FAdd 589 590
596: 16(bool) FOrdLessThan 594 595
Store 10(color) 591
SelectionMerge 598 None
Branch 546
BranchConditional 596 597 598
546: Label
597: Label
Branch 593
599: 8(fvec4) Load 10(color)
593: Label
600: 7(float) CompositeExtract 599 3
595: 8(fvec4) Load 10(color)
601: 7(float) Load 359(d6)
596: 7(float) CompositeExtract 595 0
602: 16(bool) FOrdLessThan 600 601
598: 16(bool) FOrdLessThan 596 597
SelectionMerge 604 None
LoopMerge 594 None
BranchConditional 602 603 604
BranchConditional 598 599 594
603: Label
599: Label
Branch 582
601: 8(fvec4) Load 600(bigColor8)
604: Label
602: 8(fvec4) Load 10(color)
Branch 598
603: 8(fvec4) FAdd 602 601
598: Label
Store 10(color) 603
606: 8(fvec4) Load 589(bigColor8)
604: 8(fvec4) Load 10(color)
607: 7(float) CompositeExtract 606 0
605: 7(float) CompositeExtract 604 2
608: 8(fvec4) Load 10(color)
606: 7(float) Load 472(d8)
609: 7(float) CompositeExtract 608 1
607: 16(bool) FOrdLessThan 605 606
610: 7(float) FAdd 609 607
SelectionMerge 609 None
611: 8(fvec4) Load 10(color)
BranchConditional 607 608 609
612: 8(fvec4) CompositeInsert 610 611 1
608: Label
Store 10(color) 612
610: 8(fvec4) Load 10(color)
Branch 582
611: 7(float) CompositeExtract 610 3
583: Label
612: 7(float) Load 366(d6)
613: 8(fvec4) Load 10(color)
613: 16(bool) FOrdLessThan 611 612
614: 8(fvec4) CompositeConstruct 85 85 85 85
SelectionMerge 615 None
615: 8(fvec4) FAdd 613 614
BranchConditional 613 614 615
Store 10(color) 615
614: Label
618: 8(fvec4) Load 10(color)
Branch 593
Store 617(gl_FragColor) 618
615: Label
Branch 619
Branch 609
619: Label
609: Label
621: 8(fvec4) Load 10(color)
617: 8(fvec4) Load 600(bigColor8)
622: 7(float) CompositeExtract 621 0
618: 7(float) CompositeExtract 617 0
624: 7(float) Load 623(d14)
619: 8(fvec4) Load 10(color)
625: 16(bool) FOrdLessThan 622 624
620: 7(float) CompositeExtract 619 1
LoopMerge 620 None
621: 7(float) FAdd 620 618
BranchConditional 625 626 620
622: 8(fvec4) Load 10(color)
626: Label
623: 8(fvec4) CompositeInsert 621 622 1
627: 8(fvec4) Load 10(color)
Store 10(color) 623
628: 7(float) CompositeExtract 627 1
Branch 593
630: 7(float) Load 629(d15)
594: Label
631: 16(bool) FOrdLessThan 628 630
624: 8(fvec4) Load 10(color)
SelectionMerge 633 None
625: 8(fvec4) CompositeConstruct 85 85 85 85
BranchConditional 631 632 635
626: 8(fvec4) FAdd 624 625
632: Label
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
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)
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)
650: 8(fvec4) Load 10(color)
651: 7(float) CompositeExtract 650 3
651: 8(fvec4) CompositeConstruct 85 85 85 85
652: 7(float) FAdd 651 85
652: 8(fvec4) FAdd 650 651
653: 8(fvec4) Load 10(color)
Store 10(color) 652
654: 8(fvec4) CompositeInsert 652 653 3
Branch 653
Store 10(color) 654
653: Label
Branch 642
655: 8(fvec4) Load 10(color)
643: Label
656: 7(float) CompositeExtract 655 3
Branch 655
658: 7(float) Load 657(d16)
655: Label
659: 16(bool) FOrdLessThan 656 658
657: 8(fvec4) Load 10(color)
LoopMerge 654 None
658: 7(float) CompositeExtract 657 3
BranchConditional 659 660 654
659: 7(float) Load 92(d2)
660: Label
660: 16(bool) FOrdLessThan 658 659
661: 8(fvec4) Load 10(color)
661: 8(fvec4) Load 10(color)
662: 7(float) CompositeExtract 661 1
662: 7(float) CompositeExtract 661 3
663: 7(float) Load 97(d3)
663: 7(float) FAdd 662 85
664: 16(bool) FOrdLessThan 662 663
664: 8(fvec4) Load 10(color)
665: 16(bool) LogicalAnd 660 664
665: 8(fvec4) CompositeInsert 663 664 3
LoopMerge 656 None
Store 10(color) 665
BranchConditional 665 666 656
Branch 653
654: Label
Branch 666
666: Label
666: Label
667: 8(fvec4) Load 102(bigColor1_2)
668: 8(fvec4) Load 10(color)
668: 8(fvec4) Load 10(color)
669: 8(fvec4) FAdd 668 667
669: 7(float) CompositeExtract 668 3
Store 10(color) 669
670: 7(float) Load 92(d2)
670: 8(fvec4) Load 10(color)
671: 16(bool) FOrdLessThan 669 670
671: 7(float) CompositeExtract 670 2
672: 8(fvec4) Load 10(color)
672: 7(float) Load 97(d3)
673: 7(float) CompositeExtract 672 1
673: 16(bool) FOrdLessThan 671 672
674: 7(float) Load 97(d3)
SelectionMerge 675 None
675: 16(bool) FOrdLessThan 673 674
BranchConditional 673 674 675
676: 16(bool) LogicalAnd 671 675
674: Label
LoopMerge 667 None
Branch 6
BranchConditional 676 677 667
675: Label
Branch 655
656: Label
Branch 677
677: Label
677: Label
LoopMerge 678 None
678: 8(fvec4) Load 102(bigColor1_2)
Branch 679
679: 8(fvec4) Load 10(color)
679: Label
680: 8(fvec4) FAdd 679 678
Store 10(color) 680
681: 8(fvec4) Load 10(color)
681: 8(fvec4) Load 10(color)
682: 7(float)
CompositeExtract 681 1
682: 7(float)
CompositeExtract 681 2
68
4: 7(float) Load 683(d18
)
68
3: 7(float) Load 97(d3
)
68
5: 16(bool) FOrdLessThan 682 684
68
4: 16(bool) FOrdLessThan 682 683
SelectionMerge 687
None
SelectionMerge 686
None
BranchConditional 685 686 687
BranchConditional 684 685 686
68
6:
Label
68
5:
Label
Branch 6
Branch 6
687: Label
686: Label
689: 8(fvec4) Load 10(color)
Branch 666
690: 8(fvec4) CompositeConstruct 85 85 85 85
667: Label
691: 8(fvec4) FAdd 689 690
Branch 688
Store 10(color) 691
688: Label
Branch 680
690: 16(bool) Phi 17 667 162 706
680: Label
LoopMerge 689 None
692: 8(fvec4) Load 10(color)
Branch 691
693: 7(float) CompositeExtract 692 0
691: Label
695: 7(float) Load 694(d17)
SelectionMerge 692 None
696: 16(bool) FOrdLessThan 693 695
BranchConditional 690 692 693
BranchConditional 696 697 678
693: Label
697: Label
694: 8(fvec4) Load 10(color)
Branch 677
695: 7(float) CompositeExtract 694 0
678: Label
697: 7(float) Load 696(d17)
Branch 698
698: 16(bool) FOrdLessThan 695 697
698: Label
SelectionMerge 699 None
BranchConditional 698 699 689
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
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
712: Label
713: 8(fvec4) Load 10(color)
729: 8(fvec4) Load 10(color)
714: 8(fvec4) CompositeConstruct 85 85 85 85
730: 8(fvec4) CompositeConstruct 85 85 85 85
715: 8(fvec4) FAdd 713 714
731: 8(fvec4) FAdd 729 730
Store 10(color) 715
Store 10(color) 731
Branch 710
732: 8(fvec4) Load 10(color)
710: Label
Store 628(gl_FragColor) 732
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
Branch 6
Branch 6
6: Label
6: Label
Return
Return
...
...
Test/baseResults/spv.loopsArtificial.frag.out
View file @
37e83379
...
@@ -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 19
2
// Id's are bound by 19
6
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 "bigColor
4"
Name
25 "d
4"
Name
26 "d
4"
Name
30 "bigColor
4"
Name
79
"d13"
Name
83
"d13"
Name 14
5
"gl_FragColor"
Name 14
9
"gl_FragColor"
Name 1
47
"bigColor"
Name 1
51
"bigColor"
Name 1
48
"bigColor1_1"
Name 1
52
"bigColor1_1"
Name 1
49
"bigColor1_2"
Name 1
53
"bigColor1_2"
Name 15
0
"bigColor1_3"
Name 15
4
"bigColor1_3"
Name 15
1
"bigColor2"
Name 15
5
"bigColor2"
Name 15
2
"bigColor3"
Name 15
6
"bigColor3"
Name 15
3
"bigColor5"
Name 15
7
"bigColor5"
Name 15
4
"bigColor6"
Name 15
8
"bigColor6"
Name 15
5
"bigColor7"
Name 15
9
"bigColor7"
Name 1
56
"bigColor8"
Name 1
60
"bigColor8"
Name 1
57
"d"
Name 1
61
"d"
Name 1
58
"d2"
Name 1
62
"d2"
Name 1
59
"d3"
Name 1
63
"d3"
Name 16
0
"d5"
Name 16
4
"d5"
Name 16
1
"d6"
Name 16
5
"d6"
Name 16
2
"d7"
Name 16
6
"d7"
Name 16
3
"d8"
Name 16
7
"d8"
Name 16
4
"d9"
Name 16
8
"d9"
Name 16
5
"d10"
Name 16
9
"d10"
Name 1
66
"d11"
Name 1
70
"d11"
Name 1
67
"d12"
Name 1
71
"d12"
Name 1
68
"d14"
Name 1
72
"d14"
Name 1
69
"d15"
Name 1
73
"d15"
Name 17
0
"d16"
Name 17
4
"d16"
Name 17
1
"d17"
Name 17
5
"d17"
Name 17
2
"d18"
Name 17
6
"d18"
Name 17
3
"d19"
Name 17
7
"d19"
Name 17
4
"d20"
Name 17
8
"d20"
Name 17
5
"d21"
Name 17
9
"d21"
Name 1
76
"d22"
Name 1
80
"d22"
Name 1
77
"d23"
Name 1
81
"d23"
Name 1
78
"d24"
Name 1
82
"d24"
Name 1
79
"d25"
Name 1
83
"d25"
Name 18
0
"d26"
Name 18
4
"d26"
Name 18
1
"d27"
Name 18
5
"d27"
Name 18
2
"d28"
Name 18
6
"d28"
Name 18
3
"d29"
Name 18
7
"d29"
Name 18
4
"d30"
Name 18
8
"d30"
Name 18
5
"d31"
Name 18
9
"d31"
Name 1
86
"d32"
Name 1
90
"d32"
Name 1
87
"d33"
Name 1
91
"d33"
Name 1
88
"d34"
Name 1
92
"d34"
Name 19
1
"Count"
Name 19
5
"Count"
Decorate 12(BaseColor) Smooth
Decorate 12(BaseColor) Smooth
Decorate 14
5
(gl_FragColor) BuiltIn FragColor
Decorate 14
9
(gl_FragColor) BuiltIn FragColor
Decorate 1
47
(bigColor) NoStaticUse
Decorate 1
51
(bigColor) NoStaticUse
Decorate 1
48
(bigColor1_1) NoStaticUse
Decorate 1
52
(bigColor1_1) NoStaticUse
Decorate 1
49
(bigColor1_2) NoStaticUse
Decorate 1
53
(bigColor1_2) NoStaticUse
Decorate 15
0
(bigColor1_3) NoStaticUse
Decorate 15
4
(bigColor1_3) NoStaticUse
Decorate 15
1
(bigColor2) NoStaticUse
Decorate 15
5
(bigColor2) NoStaticUse
Decorate 15
2
(bigColor3) NoStaticUse
Decorate 15
6
(bigColor3) NoStaticUse
Decorate 15
3
(bigColor5) NoStaticUse
Decorate 15
7
(bigColor5) NoStaticUse
Decorate 15
4
(bigColor6) NoStaticUse
Decorate 15
8
(bigColor6) NoStaticUse
Decorate 15
5
(bigColor7) NoStaticUse
Decorate 15
9
(bigColor7) NoStaticUse
Decorate 1
56
(bigColor8) NoStaticUse
Decorate 1
60
(bigColor8) NoStaticUse
Decorate 1
57
(d) NoStaticUse
Decorate 1
61
(d) NoStaticUse
Decorate 1
58
(d2) NoStaticUse
Decorate 1
62
(d2) NoStaticUse
Decorate 1
59
(d3) NoStaticUse
Decorate 1
63
(d3) NoStaticUse
Decorate 16
0
(d5) NoStaticUse
Decorate 16
4
(d5) NoStaticUse
Decorate 16
1
(d6) NoStaticUse
Decorate 16
5
(d6) NoStaticUse
Decorate 16
2
(d7) NoStaticUse
Decorate 16
6
(d7) NoStaticUse
Decorate 16
3
(d8) NoStaticUse
Decorate 16
7
(d8) NoStaticUse
Decorate 16
4
(d9) NoStaticUse
Decorate 16
8
(d9) NoStaticUse
Decorate 16
5
(d10) NoStaticUse
Decorate 16
9
(d10) NoStaticUse
Decorate 1
66
(d11) NoStaticUse
Decorate 1
70
(d11) NoStaticUse
Decorate 1
67
(d12) NoStaticUse
Decorate 1
71
(d12) NoStaticUse
Decorate 1
68
(d14) NoStaticUse
Decorate 1
72
(d14) NoStaticUse
Decorate 1
69
(d15) NoStaticUse
Decorate 1
73
(d15) NoStaticUse
Decorate 17
0
(d16) NoStaticUse
Decorate 17
4
(d16) NoStaticUse
Decorate 17
1
(d17) NoStaticUse
Decorate 17
5
(d17) NoStaticUse
Decorate 17
2
(d18) NoStaticUse
Decorate 17
6
(d18) NoStaticUse
Decorate 17
3
(d19) NoStaticUse
Decorate 17
7
(d19) NoStaticUse
Decorate 17
4
(d20) NoStaticUse
Decorate 17
8
(d20) NoStaticUse
Decorate 17
5
(d21) NoStaticUse
Decorate 17
9
(d21) NoStaticUse
Decorate 1
76
(d22) NoStaticUse
Decorate 1
80
(d22) NoStaticUse
Decorate 1
77
(d23) NoStaticUse
Decorate 1
81
(d23) NoStaticUse
Decorate 1
78
(d24) NoStaticUse
Decorate 1
82
(d24) NoStaticUse
Decorate 1
79
(d25) NoStaticUse
Decorate 1
83
(d25) NoStaticUse
Decorate 18
0
(d26) NoStaticUse
Decorate 18
4
(d26) NoStaticUse
Decorate 18
1
(d27) NoStaticUse
Decorate 18
5
(d27) NoStaticUse
Decorate 18
2
(d28) NoStaticUse
Decorate 18
6
(d28) NoStaticUse
Decorate 18
3
(d29) NoStaticUse
Decorate 18
7
(d29) NoStaticUse
Decorate 18
4
(d30) NoStaticUse
Decorate 18
8
(d30) NoStaticUse
Decorate 18
5
(d31) NoStaticUse
Decorate 18
9
(d31) NoStaticUse
Decorate 1
86
(d32) NoStaticUse
Decorate 1
90
(d32) NoStaticUse
Decorate 1
87
(d33) NoStaticUse
Decorate 1
91
(d33) NoStaticUse
Decorate 1
88
(d34) NoStaticUse
Decorate 1
92
(d34) NoStaticUse
Decorate 19
1
(Count) NoStaticUse
Decorate 19
5
(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)
42: 7(float) CompositeExtract 41 2
43: 7(float) FAdd 42 40
44: 8(fvec4) Load 10(color)
44: 8(fvec4) Load 10(color)
45: 7(float) CompositeExtract 44 0
45: 8(fvec4) CompositeInsert 43 44 2
47: 7(float) FAdd 45 46
Store 10(color) 45
48: 8(fvec4) Load 10(color)
46: 8(fvec4) Load 10(color)
49: 8(fvec4) CompositeInsert 47 48 0
47: 7(float) CompositeExtract 46 2
Store 10(color) 49
48: 7(float) Load 25(d4)
Branch 17
49: 17(bool) FOrdLessThan 47 48
43: Label
SelectionMerge 51 None
Branch 31
BranchConditional 49 50 51
31: Label
50: Label
51: 8(fvec4) Load 10(color)
52: 8(fvec4) Load 10(color)
52: 7(float) CompositeExtract 51 1
53: 7(float) CompositeExtract 52 0
53: 7(float) Load 26(d4)
55: 7(float) FAdd 53 54
54: 28(bool) FOrdLessThan 52 53
56: 8(fvec4) Load 10(color)
SelectionMerge 56 None
57: 8(fvec4) CompositeInsert 55 56 0
BranchConditional 54 55 63
Store 10(color) 57
55: Label
Branch 14
57: 7(float) Load 26(d4)
51: Label
58: 8(fvec4) Load 10(color)
Branch 39
59: 7(float) CompositeExtract 58 1
39: Label
60: 7(float) FAdd 59 57
60: 8(fvec4) Load 10(color)
61: 8(fvec4) Load 10(color)
61: 7(float) CompositeExtract 60 1
62: 8(fvec4) CompositeInsert 60 61 1
62: 7(float) Load 25(d4)
Store 10(color) 62
63: 17(bool) FOrdLessThan 61 62
Branch 56
SelectionMerge 65 None
63: Label
BranchConditional 63 64 72
64: 7(float) Load 26(d4)
64: Label
65: 8(fvec4) Load 10(color)
66: 7(float) Load 25(d4)
66: 7(float) CompositeExtract 65 0
67: 8(fvec4) Load 10(color)
67: 7(float) FAdd 66 64
68: 7(float) CompositeExtract 67 1
68: 8(fvec4) Load 10(color)
69: 7(float) FAdd 68 66
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)
70: 8(fvec4) Load 10(color)
71: 7(float) CompositeExtract 70 2
71: 8(fvec4) CompositeInsert 69 70 1
72: 7(float) Load 26(d4)
Store 10(color) 71
73: 28(bool) FOrdLessThan 71 72
Branch 65
BranchConditional 73 74 15
72: Label
74: 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
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) F
Sub
93 94
95: 8(fvec4) F
Add
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) FAdd 97 96
98: 8(fvec4) CompositeConstruct 54 54 54 54
Store 10(color) 98
99: 8(fvec4) FSub 97 98
99: 8(fvec4) Load 10(color)
Store 10(color) 99
100: 7(float) CompositeExtract 99 0
Branch 92
101: 7(float) Load 26(d4)
92: Label
102: 28(bool) FOrdLessThan 100 101
100: 8(fvec4) Load 30(bigColor4)
SelectionMerge 104 None
101: 8(fvec4) Load 10(color)
BranchConditional 102 103 104
102: 8(fvec4) FAdd 101 100
103: Label
Store 10(color) 102
105: 8(fvec4) Load 10(color)
103: 8(fvec4) Load 10(color)
106: 7(float) CompositeExtract 105 2
104: 7(float) CompositeExtract 103 0
107: 7(float) FAdd 106 32
105: 7(float) Load 25(d4)
108: 8(fvec4) Load 10(color)
106: 17(bool) FOrdLessThan 104 105
109: 8(fvec4) CompositeInsert 107 108 2
SelectionMerge 108 None
Store 10(color) 109
BranchConditional 106 107 108
110: 8(fvec4) Load 10(color)
107: Label
111: 7(float) CompositeExtract 110 2
109: 8(fvec4) Load 10(color)
112: 7(float) Load 26(d4)
110: 7(float) CompositeExtract 109 2
113: 28(bool) FOrdLessThan 111 112
111: 7(float) FAdd 110 40
SelectionMerge 115 None
112: 8(fvec4) Load 10(color)
BranchConditional 113 114 115
113: 8(fvec4) CompositeInsert 111 112 2
114: Label
Store 10(color) 113
116: 8(fvec4) Load 10(color)
114: 8(fvec4) Load 10(color)
117: 7(float) CompositeExtract 116 0
115: 7(float) CompositeExtract 114 2
118: 7(float) FAdd 117 46
116: 7(float) Load 25(d4)
119: 8(fvec4) Load 10(color)
117: 17(bool) FOrdLessThan 115 116
120: 8(fvec4) CompositeInsert 118 119 0
SelectionMerge 119 None
Store 10(color) 120
BranchConditional 117 118 119
Branch 75
118: Label
115: Label
120: 8(fvec4) Load 10(color)
Branch 104
121: 7(float) CompositeExtract 120 0
104: Label
122: 7(float) FAdd 121 54
122: 8(fvec4) Load 10(color)
123: 8(fvec4) Load 10(color)
123: 7(float) CompositeExtract 122 1
124: 8(fvec4) CompositeInsert 122 123 0
124: 7(float) Load 26(d4)
Store 10(color) 124
125: 28(bool) FOrdLessThan 123 124
Branch 79
SelectionMerge 127 None
119: Label
BranchConditional 125 126 134
Branch 108
126: Label
108: Label
128: 7(float) Load 26(d4)
126: 8(fvec4) Load 10(color)
129: 8(fvec4) Load 10(color)
127: 7(float) CompositeExtract 126 1
130: 7(float) CompositeExtract 129 1
128: 7(float) Load 25(d4)
131: 7(float) FAdd 130 128
129: 17(bool) FOrdLessThan 127 128
132: 8(fvec4) Load 10(color)
SelectionMerge 131 None
133: 8(fvec4) CompositeInsert 131 132 1
BranchConditional 129 130 138
Store 10(color) 133
130: Label
Branch 127
132: 7(float) Load 25(d4)
134: Label
133: 8(fvec4) Load 10(color)
135: 7(float) Load 26(d4)
134: 7(float) CompositeExtract 133 1
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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment