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
f4984009
Commit
f4984009
authored
Jul 22, 2015
by
John Kessenich
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #33 from google/spv-builder-loop-ctor-inits-all-members
spv::Builder::Loop constructor inits all members.
parents
8ba301c7
3e6a33ce
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
186 additions
and
181 deletions
+186
-181
SpvBuilder.cpp
SPIRV/SpvBuilder.cpp
+16
-20
SpvBuilder.h
SPIRV/SpvBuilder.h
+17
-8
spv.dataOutIndirect.vert.out
Test/baseResults/spv.dataOutIndirect.vert.out
+6
-6
spv.do-simple.vert.out
Test/baseResults/spv.do-simple.vert.out
+11
-11
spv.do-while-continue-break.vert.out
Test/baseResults/spv.do-while-continue-break.vert.out
+13
-13
spv.doWhileLoop.frag.out
Test/baseResults/spv.doWhileLoop.frag.out
+11
-11
spv.for-continue-break.vert.out
Test/baseResults/spv.for-continue-break.vert.out
+8
-8
spv.for-simple.vert.out
Test/baseResults/spv.for-simple.vert.out
+6
-6
spv.forLoop.frag.out
Test/baseResults/spv.forLoop.frag.out
+29
-29
spv.localAggregates.frag.out
Test/baseResults/spv.localAggregates.frag.out
+5
-5
spv.loops.frag.out
Test/baseResults/spv.loops.frag.out
+0
-0
spv.loopsArtificial.frag.out
Test/baseResults/spv.loopsArtificial.frag.out
+27
-27
spv.switch.frag.out
Test/baseResults/spv.switch.frag.out
+13
-13
spv.while-continue-break.vert.out
Test/baseResults/spv.while-continue-break.vert.out
+8
-8
spv.while-simple.vert.out
Test/baseResults/spv.while-simple.vert.out
+6
-6
spv.whileLoop.frag.out
Test/baseResults/spv.whileLoop.frag.out
+10
-10
No files found.
SPIRV/SpvBuilder.cpp
View file @
f4984009
...
...
@@ -1738,19 +1738,8 @@ void Builder::endSwitch(std::vector<Block*>& /*segmentBlock*/)
// Comments in header
void
Builder
::
makeNewLoop
(
bool
loopTestFirst
)
{
loops
.
push
(
Loop
());
Loop
&
loop
=
loops
.
top
();
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
;
loops
.
push
(
Loop
(
*
this
,
loopTestFirst
));
const
Loop
&
loop
=
loops
.
top
();
// The loop test is always emitted before the loop body.
// But if the loop test executes at the bottom of the loop, then
...
...
@@ -1771,8 +1760,6 @@ void Builder::makeNewLoop(bool 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.
...
...
@@ -1792,7 +1779,6 @@ void Builder::makeNewLoop(bool loopTestFirst)
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.
...
...
@@ -1808,14 +1794,13 @@ void Builder::makeNewLoop(bool loopTestFirst)
void
Builder
::
createLoopTestBranch
(
Id
condition
)
{
Loop
&
loop
=
loops
.
top
();
const
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
);
loop
.
body
=
new
Block
(
getUniqueId
(),
*
loop
.
function
);
// Branching to the "body" block will keep control inside
// the loop.
createConditionalBranch
(
condition
,
loop
.
body
,
loop
.
merge
);
...
...
@@ -1842,7 +1827,7 @@ void Builder::createLoopTestBranch(Id condition)
void
Builder
::
createBranchToBody
()
{
Loop
&
loop
=
loops
.
top
();
const
Loop
&
loop
=
loops
.
top
();
assert
(
loop
.
body
);
// This is a reconvergence of control flow, so no merge instruction
...
...
@@ -1870,7 +1855,7 @@ void Builder::createLoopExit()
// Close the innermost loop
void
Builder
::
closeLoop
()
{
Loop
&
loop
=
loops
.
top
();
const
Loop
&
loop
=
loops
.
top
();
// Branch back to the top
createBranchToLoopHeaderFromInside
(
loop
);
...
...
@@ -2198,4 +2183,15 @@ void ValidationError(const char* error)
printf
(
"Validation Error: %s
\n
"
,
error
);
}
Builder
::
Loop
::
Loop
(
Builder
&
builder
,
bool
testFirstArg
)
:
function
(
&
builder
.
getBuildPoint
()
->
getParent
()),
header
(
new
Block
(
builder
.
getUniqueId
(),
*
function
)),
merge
(
new
Block
(
builder
.
getUniqueId
(),
*
function
)),
body
(
new
Block
(
builder
.
getUniqueId
(),
*
function
)),
testFirst
(
testFirstArg
),
isFirstIteration
(
testFirst
?
nullptr
:
new
Instruction
(
builder
.
getUniqueId
(),
builder
.
makeBoolType
(),
OpPhi
))
{}
};
// end spv namespace
SPIRV/SpvBuilder.h
View file @
f4984009
...
...
@@ -524,7 +524,18 @@ protected:
// Data that needs to be kept in order to properly handle loops.
struct
Loop
{
Loop
()
:
header
(
nullptr
),
merge
(
nullptr
),
body
(
nullptr
),
testFirst
(
false
),
isFirstIteration
(
nullptr
),
function
(
nullptr
)
{
}
// Constructs a default Loop structure containing new header, merge, and
// body blocks for the current function.
// The testFirst argument indicates whether the loop test executes at
// the top of the loop rather than at the bottom. In the latter case,
// also create a phi instruction whose value indicates whether we're on
// the first iteration of the loop. The phi instruction is initialized
// with no values or predecessor operands.
Loop
(
Builder
&
builder
,
bool
testFirst
);
Loop
(
const
Loop
&
)
=
default
;
// The function containing the loop.
Function
*
const
function
;
// The header is the first block generated for the loop.
// It dominates all the blocks in the loop, i.e. it is always
// executed before any others.
...
...
@@ -532,24 +543,22 @@ protected:
// "for" loops), then the header begins with the test code.
// Otherwise, the loop is a "do-while" loop and the header contains the
// start of the body of the loop (if the body exists).
Block
*
header
;
Block
*
const
header
;
// The merge block marks the end of the loop. Control is transferred
// to the merge block when either the loop test fails, or when a
// nested "break" is encountered.
Block
*
merge
;
Block
*
const
merge
;
// 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
;
Block
*
const
body
;
// True when the loop test executes before the body.
bool
testFirst
;
const
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
;
Instruction
*
const
isFirstIteration
;
};
// Our loop stack.
...
...
Test/baseResults/spv.dataOutIndirect.vert.out
View file @
f4984009
...
...
@@ -29,8 +29,8 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 1
1
4
: 7(int) Constant 5
1
5
: TypeBool
1
5
: 7(int) Constant 5
1
6
: TypeBool
18: TypeFloat 32
19: TypeVector 18(float) 4
20: TypeInt 32 0
...
...
@@ -51,11 +51,11 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3
: 7(int) Load 9(i)
1
6: 15(bool) SLessThan 13 14
1
4
: 7(int) Load 9(i)
1
7: 16(bool) SLessThan 14 15
LoopMerge 12 None
BranchConditional 1
6 17
12
1
7
: Label
BranchConditional 1
7 13
12
1
3
: Label
25: 7(int) Load 9(i)
28: 19(fvec4) Load 27(color)
30: 29(ptr) AccessChain 24(colorOut) 25
...
...
Test/baseResults/spv.do-simple.vert.out
View file @
f4984009
...
...
@@ -27,11 +27,11 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: TypeBool
1
5: 14
(bool) ConstantTrue
1
5
: TypeBool
1
6: 15
(bool) ConstantTrue
20: 7(int) Constant 10
24: 7(int) Constant 1
26: 1
4
(bool) ConstantFalse
26: 1
5
(bool) ConstantFalse
27: TypePointer Input 7(int)
28(gl_VertexID): 27(ptr) Variable Input
29(gl_InstanceID): 27(ptr) Variable Input
...
...
@@ -41,20 +41,20 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3: 14(bool) Phi 15 5 26 17
1
4: 15(bool) Phi 16 5 26 13
LoopMerge 12 None
Branch 1
6
1
6
: Label
SelectionMerge 1
7
None
BranchConditional 1
3 17
18
Branch 1
7
1
7
: Label
SelectionMerge 1
3
None
BranchConditional 1
4 13
18
18: Label
19: 7(int) Load 9(i)
21: 1
4
(bool) SLessThan 19 20
21: 1
5
(bool) SLessThan 19 20
SelectionMerge 22 None
BranchConditional 21 22 12
22: Label
Branch 1
7
1
7
: Label
Branch 1
3
1
3
: Label
23: 7(int) Load 9(i)
25: 7(int) IAdd 23 24
Store 9(i) 25
...
...
Test/baseResults/spv.do-while-continue-break.vert.out
View file @
f4984009
...
...
@@ -41,12 +41,12 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: TypeBool
1
5: 14
(bool) ConstantTrue
1
5
: TypeBool
1
6: 15
(bool) ConstantTrue
20: 7(int) Constant 1
22: 7(int) Constant 19
27: 7(int) Constant 2
32: 1
4
(bool) ConstantFalse
32: 1
5
(bool) ConstantFalse
36: 7(int) Constant 5
41: 7(int) Constant 3
44: 7(int) Constant 42
...
...
@@ -68,25 +68,25 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3: 14(bool) Phi 15
5 32 29 32 39
1
4: 15(bool) Phi 16
5 32 29 32 39
LoopMerge 12 None
Branch 1
6
1
6
: Label
SelectionMerge 1
7
None
BranchConditional 1
3 17
18
Branch 1
7
1
7
: Label
SelectionMerge 1
3
None
BranchConditional 1
4 13
18
18: Label
19: 7(int) Load 9(i)
21: 7(int) IAdd 19 20
Store 9(i) 21
23: 1
4
(bool) SLessThan 21 22
23: 1
5
(bool) SLessThan 21 22
SelectionMerge 24 None
BranchConditional 23 24 12
24: Label
Branch 1
7
1
7
: Label
Branch 1
3
1
3
: Label
Store 25(A) 10
26: 7(int) Load 9(i)
28: 1
4
(bool) IEqual 26 27
28: 1
5
(bool) IEqual 26 27
SelectionMerge 30 None
BranchConditional 28 29 30
29: Label
...
...
@@ -97,7 +97,7 @@ Linked vertex stage:
Branch 30
30: Label
35: 7(int) Load 9(i)
37: 1
4
(bool) IEqual 35 36
37: 1
5
(bool) IEqual 35 36
SelectionMerge 39 None
BranchConditional 37 38 39
38: Label
...
...
Test/baseResults/spv.doWhileLoop.frag.out
View file @
f4984009
...
...
@@ -26,13 +26,13 @@ Linked fragment stage:
9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input
1
7
: TypeBool
1
8: 17
(bool) ConstantTrue
1
8
: TypeBool
1
9: 18
(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: 1
7
(bool) ConstantFalse
34: 1
8
(bool) ConstantFalse
35: TypePointer Output 8(fvec4)
36(gl_FragColor): 35(ptr) Variable Output
4(main): 2 Function None 3
...
...
@@ -42,22 +42,22 @@ Linked fragment stage:
Store 10(color) 13
Branch 14
14: Label
1
6: 17(bool) Phi 18 5 34 20
1
7: 18(bool) Phi 19 5 34 16
LoopMerge 15 None
Branch
19
19
: Label
SelectionMerge
20
None
BranchConditional 1
6 20
21
Branch
20
20
: Label
SelectionMerge
16
None
BranchConditional 1
7 16
21
21: Label
22: 8(fvec4) Load 10(color)
23: 7(float) CompositeExtract 22 0
26: 7(float) Load 25(d)
27: 1
7
(bool) FOrdLessThan 23 26
27: 1
8
(bool) FOrdLessThan 23 26
SelectionMerge 28 None
BranchConditional 27 28 15
28: Label
Branch
20
20
: Label
Branch
16
16
: Label
31: 8(fvec4) Load 30(bigColor)
32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31
...
...
Test/baseResults/spv.for-continue-break.vert.out
View file @
f4984009
...
...
@@ -41,8 +41,8 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: 7(int) Constant 10
1
5
: TypeBool
1
5
: 7(int) Constant 10
1
6
: TypeBool
19: 7(int) Constant 1
21: 7(int) Constant 2
32: 7(int) Constant 3
...
...
@@ -64,15 +64,15 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3
: 7(int) Load 9(i)
1
6: 15(bool) SLessThan 13 14
1
4
: 7(int) Load 9(i)
1
7: 16(bool) SLessThan 14 15
LoopMerge 12 None
BranchConditional 1
6 17
12
1
7
: Label
BranchConditional 1
7 13
12
1
3
: Label
Store 18(A) 19
20: 7(int) Load 9(i)
22: 7(int) SMod 20 21
23: 1
5
(bool) IEqual 22 10
23: 1
6
(bool) IEqual 22 10
SelectionMerge 25 None
BranchConditional 23 24 25
24: Label
...
...
@@ -87,7 +87,7 @@ Linked vertex stage:
25: Label
31: 7(int) Load 9(i)
33: 7(int) SMod 31 32
34: 1
5
(bool) IEqual 33 10
34: 1
6
(bool) IEqual 33 10
SelectionMerge 36 None
BranchConditional 34 35 36
35: Label
...
...
Test/baseResults/spv.for-simple.vert.out
View file @
f4984009
...
...
@@ -29,8 +29,8 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: 7(int) Constant 10
1
5
: TypeBool
1
5
: 7(int) Constant 10
1
6
: TypeBool
19: 7(int) Constant 12
21: 7(int) Constant 1
23: TypePointer Input 7(int)
...
...
@@ -43,11 +43,11 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3
: 7(int) Load 9(i)
1
6: 15(bool) SLessThan 13 14
1
4
: 7(int) Load 9(i)
1
7: 16(bool) SLessThan 14 15
LoopMerge 12 None
BranchConditional 1
6 17
12
1
7
: Label
BranchConditional 1
7 13
12
1
3
: Label
Store 18(j) 19
20: 7(int) Load 9(i)
22: 7(int) IAdd 20 21
...
...
Test/baseResults/spv.forLoop.frag.out
View file @
f4984009
...
...
@@ -15,7 +15,7 @@ Linked fragment stage:
Name 10 "color"
Name 12 "BaseColor"
Name 16 "i"
Name 2
2
"Count"
Name 2
3
"Count"
Name 28 "bigColor"
Name 36 "gl_FragColor"
Name 39 "sum"
...
...
@@ -40,9 +40,9 @@ Linked fragment stage:
14: TypeInt 32 1
15: TypePointer Function 14(int)
17: 14(int) Constant 0
2
1
: TypePointer UniformConstant 14(int)
2
2(Count): 21
(ptr) Variable UniformConstant
2
4
: TypeBool
2
2
: TypePointer UniformConstant 14(int)
2
3(Count): 22
(ptr) Variable UniformConstant
2
5
: TypeBool
27: TypePointer UniformConstant 8(fvec4)
28(bigColor): 27(ptr) Variable UniformConstant
33: 14(int) Constant 1
...
...
@@ -50,7 +50,7 @@ Linked fragment stage:
36(gl_FragColor): 35(ptr) Variable Output
38: TypePointer Function 7(float)
40: 7(float) Constant 0
4
5
: 14(int) Constant 4
4
6
: 14(int) Constant 4
48: TypeInt 32 0
49: TypeVector 48(int) 4
50: TypePointer UniformConstant 49(ivec4)
...
...
@@ -59,7 +59,7 @@ Linked fragment stage:
86: TypeVector 7(float) 3
97: TypePointer Input 7(float)
98(f): 97(ptr) Variable Input
11
5
: 14(int) Constant 16
11
6
: 14(int) Constant 16
4(main): 2 Function None 3
5: Label
10(color): 9(ptr) Variable Function
...
...
@@ -76,12 +76,12 @@ Linked fragment stage:
Store 16(i) 17
Branch 18
18: Label
2
0
: 14(int) Load 16(i)
2
3: 14(int) Load 22
(Count)
2
5: 24(bool) SLessThan 20 23
2
1
: 14(int) Load 16(i)
2
4: 14(int) Load 23
(Count)
2
6: 25(bool) SLessThan 21 24
LoopMerge 19 None
BranchConditional 2
5 26
19
2
6
: Label
BranchConditional 2
6 20
19
2
0
: Label
29: 8(fvec4) Load 28(bigColor)
30: 8(fvec4) Load 10(color)
31: 8(fvec4) FAdd 30 29
...
...
@@ -97,11 +97,11 @@ Linked fragment stage:
Store 41(i) 17
Branch 42
42: Label
4
4
: 14(int) Load 41(i)
4
6: 24(bool) SLessThan 44 45
4
5
: 14(int) Load 41(i)
4
7: 25(bool) SLessThan 45 46
LoopMerge 43 None
BranchConditional 4
6 47
43
4
7
: Label
BranchConditional 4
7 44
43
4
4
: Label
52: 14(int) Load 41(i)
53: 49(ivec4) Load 51(v4)
54: 48(int) VectorExtractDynamic 53 52
...
...
@@ -117,11 +117,11 @@ Linked fragment stage:
Store 60(i) 17
Branch 61
61: Label
6
3
: 14(int) Load 60(i)
6
4: 24(bool) SLessThan 63 45
6
4
: 14(int) Load 60(i)
6
5: 25(bool) SLessThan 64 46
LoopMerge 62 None
BranchConditional 6
4 65
62
6
5
: Label
BranchConditional 6
5 63
62
6
3
: Label
67: 14(int) Load 60(i)
68: 14(int) Load 60(i)
69: 49(ivec4) Load 51(v4)
...
...
@@ -151,12 +151,12 @@ Linked fragment stage:
Store 90(i) 17
Branch 91
91: Label
9
3
: 14(int) Load 90(i)
9
4: 14(int) Load 22
(Count)
9
5: 24(bool) SLessThan 93 94
9
4
: 14(int) Load 90(i)
9
5: 14(int) Load 23
(Count)
9
6: 25(bool) SLessThan 94 95
LoopMerge 92 None
BranchConditional 9
5 96
92
9
6
: Label
BranchConditional 9
6 93
92
9
3
: Label
99: 7(float) Load 98(f)
100: 8(fvec4) Load 84(r)
101: 8(fvec4) CompositeInsert 99 100 3
...
...
@@ -177,17 +177,17 @@ Linked fragment stage:
Store 111(i) 17
Branch 112
112: Label
11
4
: 14(int) Load 111(i)
11
6: 24(bool) SLessThan 114 115
11
5
: 14(int) Load 111(i)
11
7: 25(bool) SLessThan 115 116
LoopMerge 113 None
BranchConditional 11
6 117
113
11
7
: Label
BranchConditional 11
7 114
113
11
4
: Label
118: 7(float) Load 98(f)
119: 8(fvec4) Load 36(gl_FragColor)
120: 8(fvec4) VectorTimesScalar 119 118
Store 36(gl_FragColor) 120
121: 14(int) Load 111(i)
122: 14(int) IAdd 121 4
5
122: 14(int) IAdd 121 4
6
Store 111(i) 122
Branch 112
113: Label
...
...
Test/baseResults/spv.localAggregates.frag.out
View file @
f4984009
...
...
@@ -82,7 +82,7 @@ Linked fragment stage:
47: TypePointer Function 46
51: TypePointer Function 7(int)
68: 7(int) Constant 5
7
8
: 7(int) Constant 16
7
9
: 7(int) Constant 16
83: 8(float) Constant 0
87(condition): 21(ptr) Variable UniformConstant
93: 7(int) Constant 3
...
...
@@ -160,11 +160,11 @@ Linked fragment stage:
Store 74(i) 17
Branch 75
75: Label
7
7
: 7(int) Load 74(i)
79: 24(bool) SLessThan 77 78
7
8
: 7(int) Load 74(i)
80: 24(bool) SLessThan 78 79
LoopMerge 76 None
BranchConditional
79 80
76
80
: Label
BranchConditional
80 77
76
77
: Label
82: 7(int) Load 74(i)
84: 31(ptr) AccessChain 81(a) 82
Store 84 83
...
...
Test/baseResults/spv.loops.frag.out
View file @
f4984009
This diff is collapsed.
Click to expand it.
Test/baseResults/spv.loopsArtificial.frag.out
View file @
f4984009
...
...
@@ -18,7 +18,7 @@ Linked fragment stage:
Name 12 "BaseColor"
Name 25 "d4"
Name 30 "bigColor4"
Name 8
3
"d13"
Name 8
4
"d13"
Name 149 "gl_FragColor"
Name 151 "bigColor"
Name 152 "bigColor1_1"
...
...
@@ -115,16 +115,16 @@ Linked fragment stage:
9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input
1
7
: TypeBool
1
8: 17
(bool) ConstantTrue
1
8
: TypeBool
1
9: 18
(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: 1
7
(bool) ConstantFalse
8
3
(d13): 24(ptr) Variable UniformConstant
58: 1
8
(bool) ConstantFalse
8
4
(d13): 24(ptr) Variable UniformConstant
148: TypePointer Output 8(fvec4)
149(gl_FragColor): 148(ptr) Variable Output
151(bigColor): 29(ptr) Variable UniformConstant
...
...
@@ -179,22 +179,22 @@ Linked fragment stage:
Store 10(color) 13
Branch 14
14: Label
1
6: 17(bool) Phi 18
5 58 50 58 65
1
7: 18(bool) Phi 19
5 58 50 58 65
LoopMerge 15 None
Branch
19
19
: Label
SelectionMerge
20
None
BranchConditional 1
6 20
21
Branch
20
20
: Label
SelectionMerge
16
None
BranchConditional 1
7 16
21
21: Label
22: 8(fvec4) Load 10(color)
23: 7(float) CompositeExtract 22 2
26: 7(float) Load 25(d4)
27: 1
7
(bool) FOrdLessThan 23 26
27: 1
8
(bool) FOrdLessThan 23 26
SelectionMerge 28 None
BranchConditional 27 28 15
28: Label
Branch
20
20
: Label
Branch
16
16
: Label
31: 8(fvec4) Load 30(bigColor4)
32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31
...
...
@@ -202,7 +202,7 @@ Linked fragment stage:
34: 8(fvec4) Load 10(color)
35: 7(float) CompositeExtract 34 0
36: 7(float) Load 25(d4)
37: 1
7
(bool) FOrdLessThan 35 36
37: 1
8
(bool) FOrdLessThan 35 36
SelectionMerge 39 None
BranchConditional 37 38 39
38: Label
...
...
@@ -215,7 +215,7 @@ Linked fragment stage:
46: 8(fvec4) Load 10(color)
47: 7(float) CompositeExtract 46 2
48: 7(float) Load 25(d4)
49: 1
7
(bool) FOrdLessThan 47 48
49: 1
8
(bool) FOrdLessThan 47 48
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
...
...
@@ -232,7 +232,7 @@ Linked fragment stage:
60: 8(fvec4) Load 10(color)
61: 7(float) CompositeExtract 60 1
62: 7(float) Load 25(d4)
63: 1
7
(bool) FOrdLessThan 61 62
63: 1
8
(bool) FOrdLessThan 61 62
SelectionMerge 65 None
BranchConditional 63 64 72
64: Label
...
...
@@ -258,17 +258,17 @@ Linked fragment stage:
15: Label
Branch 79
79: Label
8
1
: 8(fvec4) Load 10(color)
8
2: 7(float) CompositeExtract 81
3
8
4: 7(float) Load 83
(d13)
8
5: 17(bool) FOrdLessThan 82 84
8
2
: 8(fvec4) Load 10(color)
8
3: 7(float) CompositeExtract 82
3
8
5: 7(float) Load 84
(d13)
8
6: 18(bool) FOrdLessThan 83 85
LoopMerge 80 None
BranchConditional 8
5 86
80
8
6
: Label
BranchConditional 8
6 81
80
8
1
: Label
87: 8(fvec4) Load 10(color)
88: 7(float) CompositeExtract 87 2
89: 7(float) Load 8
3
(d13)
90: 1
7
(bool) FOrdLessThan 88 89
89: 7(float) Load 8
4
(d13)
90: 1
8
(bool) FOrdLessThan 88 89
SelectionMerge 92 None
BranchConditional 90 91 96
91: Label
...
...
@@ -291,7 +291,7 @@ Linked fragment stage:
103: 8(fvec4) Load 10(color)
104: 7(float) CompositeExtract 103 0
105: 7(float) Load 25(d4)
106: 1
7
(bool) FOrdLessThan 104 105
106: 1
8
(bool) FOrdLessThan 104 105
SelectionMerge 108 None
BranchConditional 106 107 108
107: Label
...
...
@@ -304,7 +304,7 @@ Linked fragment stage:
114: 8(fvec4) Load 10(color)
115: 7(float) CompositeExtract 114 2
116: 7(float) Load 25(d4)
117: 1
7
(bool) FOrdLessThan 115 116
117: 1
8
(bool) FOrdLessThan 115 116
SelectionMerge 119 None
BranchConditional 117 118 119
118: Label
...
...
@@ -321,7 +321,7 @@ Linked fragment stage:
126: 8(fvec4) Load 10(color)
127: 7(float) CompositeExtract 126 1
128: 7(float) Load 25(d4)
129: 1
7
(bool) FOrdLessThan 127 128
129: 1
8
(bool) FOrdLessThan 127 128
SelectionMerge 131 None
BranchConditional 129 130 138
130: Label
...
...
Test/baseResults/spv.switch.frag.out
View file @
f4984009
...
...
@@ -70,10 +70,10 @@ Linked fragment stage:
74(x): 73(ptr) Variable Input
128(d): 60(ptr) Variable UniformConstant
155: 10(int) Constant 0
1
59
: 10(int) Constant 10
16
0
: TypeBool
1
60
: 10(int) Constant 10
16
1
: TypeBool
173: 10(int) Constant 20
17
7
: 10(int) Constant 30
17
8
: 10(int) Constant 30
183: 7(float) Constant 1120429670
203: 7(float) Constant 1079739679
221: TypePointer Output 7(float)
...
...
@@ -214,11 +214,11 @@ Linked fragment stage:
Store 154(i) 155
Branch 156
156: Label
15
8
: 10(int) Load 154(i)
16
1: 160(bool) SLessThan 158 159
15
9
: 10(int) Load 154(i)
16
2: 161(bool) SLessThan 159 160
LoopMerge 157 None
BranchConditional 16
1 162
157
1
62
: Label
BranchConditional 16
2 158
157
1
58
: Label
163: 10(int) Load 61(c)
SelectionMerge 167 None
Switch 163 166
...
...
@@ -233,16 +233,16 @@ Linked fragment stage:
Store 172(j) 173
Branch 174
174: Label
17
6
: 10(int) Load 172(j)
17
8: 160(bool) SLessThan 176 177
17
7
: 10(int) Load 172(j)
17
9: 161(bool) SLessThan 177 178
LoopMerge 175 None
BranchConditional 17
8 179
175
17
9
: Label
BranchConditional 17
9 176
175
17
6
: Label
180: 7(float) Load 72(f)
181: 7(float) FAdd 180 48
Store 72(f) 181
182: 7(float) Load 72(f)
184: 16
0
(bool) FOrdLessThan 182 183
184: 16
1
(bool) FOrdLessThan 182 183
SelectionMerge 186 None
BranchConditional 184 185 186
185: Label
...
...
@@ -270,7 +270,7 @@ Linked fragment stage:
Branch 167
167: Label
202: 7(float) Load 72(f)
204: 16
0
(bool) FOrdLessThan 202 203
204: 16
1
(bool) FOrdLessThan 202 203
SelectionMerge 206 None
BranchConditional 204 205 206
205: Label
...
...
Test/baseResults/spv.while-continue-break.vert.out
View file @
f4984009
...
...
@@ -35,8 +35,8 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: 7(int) Constant 10
1
5
: TypeBool
1
5
: 7(int) Constant 10
1
6
: TypeBool
19: 7(int) Constant 1
21: 7(int) Constant 2
30: 7(int) Constant 5
...
...
@@ -54,15 +54,15 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3
: 7(int) Load 9(i)
1
6: 15(bool) SLessThan 13 14
1
4
: 7(int) Load 9(i)
1
7: 16(bool) SLessThan 14 15
LoopMerge 12 None
BranchConditional 1
6 17
12
1
7
: Label
BranchConditional 1
7 13
12
1
3
: Label
Store 18(A) 19
20: 7(int) Load 9(i)
22: 7(int) SMod 20 21
23: 1
5
(bool) IEqual 22 10
23: 1
6
(bool) IEqual 22 10
SelectionMerge 25 None
BranchConditional 23 24 25
24: Label
...
...
@@ -74,7 +74,7 @@ Linked vertex stage:
25: Label
29: 7(int) Load 9(i)
31: 7(int) SMod 29 30
32: 1
5
(bool) IEqual 31 10
32: 1
6
(bool) IEqual 31 10
SelectionMerge 34 None
BranchConditional 32 33 34
33: Label
...
...
Test/baseResults/spv.while-simple.vert.out
View file @
f4984009
...
...
@@ -27,8 +27,8 @@ Linked vertex stage:
7: TypeInt 32 1
8: TypePointer Function 7(int)
10: 7(int) Constant 0
1
4
: 7(int) Constant 10
1
5
: TypeBool
1
5
: 7(int) Constant 10
1
6
: TypeBool
19: 7(int) Constant 1
21: TypePointer Input 7(int)
22(gl_VertexID): 21(ptr) Variable Input
...
...
@@ -39,11 +39,11 @@ Linked vertex stage:
Store 9(i) 10
Branch 11
11: Label
1
3
: 7(int) Load 9(i)
1
6: 15(bool) SLessThan 13 14
1
4
: 7(int) Load 9(i)
1
7: 16(bool) SLessThan 14 15
LoopMerge 12 None
BranchConditional 1
6 17
12
1
7
: Label
BranchConditional 1
7 13
12
1
3
: Label
18: 7(int) Load 9(i)
20: 7(int) IAdd 18 19
Store 9(i) 20
...
...
Test/baseResults/spv.whileLoop.frag.out
View file @
f4984009
...
...
@@ -14,7 +14,7 @@ Linked fragment stage:
Name 4 "main"
Name 10 "color"
Name 12 "BaseColor"
Name
19
"d"
Name
20
"d"
Name 25 "bigColor"
Name 30 "gl_FragColor"
Decorate 12(BaseColor) Smooth
...
...
@@ -26,9 +26,9 @@ Linked fragment stage:
9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input
1
8
: TypePointer UniformConstant 7(float)
19(d): 18
(ptr) Variable UniformConstant
2
1
: TypeBool
1
9
: TypePointer UniformConstant 7(float)
20(d): 19
(ptr) Variable UniformConstant
2
2
: TypeBool
24: TypePointer UniformConstant 8(fvec4)
25(bigColor): 24(ptr) Variable UniformConstant
29: TypePointer Output 8(fvec4)
...
...
@@ -40,13 +40,13 @@ Linked fragment stage:
Store 10(color) 13
Branch 14
14: Label
1
6
: 8(fvec4) Load 10(color)
1
7: 7(float) CompositeExtract 16
0
2
0: 7(float) Load 19
(d)
2
2: 21(bool) FOrdLessThan 17 20
1
7
: 8(fvec4) Load 10(color)
1
8: 7(float) CompositeExtract 17
0
2
1: 7(float) Load 20
(d)
2
3: 22(bool) FOrdLessThan 18 21
LoopMerge 15 None
BranchConditional 2
2 23
15
23
: Label
BranchConditional 2
3 16
15
16
: Label
26: 8(fvec4) Load 25(bigColor)
27: 8(fvec4) Load 10(color)
28: 8(fvec4) FAdd 27 26
...
...
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