Merge pull request #136 from dekimir/no-block-removal

SPV: Don't remove SPIR-V blocks before codegen, use new InReadableOrder instead.
This commit is contained in:
John Kessenich 2016-01-19 19:26:08 -07:00
commit 7349eab099
17 changed files with 1233 additions and 1252 deletions

View File

@ -1412,9 +1412,11 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
builder.createBranch(&blocks.head);
} else {
// Spec requires back edges to target header blocks, and every header
// block must dominate its merge block. Create an empty header block
// here to ensure these conditions are met even when body contains
// non-trivial control flow.
// block must dominate its merge block. Make a header block first to
// ensure these conditions are met. By definition, it will contain
// OpLoopMerge, followed by a block-ending branch. But we don't want to
// put any other body instructions in it, since the body may have
// arbitrary instructions, including merges of its own.
builder.setBuildPoint(&blocks.head);
builder.createLoopMerge(&blocks.merge, &blocks.continue_target, spv::LoopControlMaskNone);
builder.createBranch(&blocks.body);
@ -1435,12 +1437,9 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn
builder.accessChainLoad(convertGlslangToSpvType(node->getTest()->getType()));
builder.createConditionalBranch(condition, &blocks.head, &blocks.merge);
} else {
// TODO: unless there was a break instruction somewhere in the body,
// this is an infinite loop, so we should abort code generation with
// a warning. As it stands now, nothing will jump to the merge
// block, and it may be dropped as unreachable by the SPIR-V dumper.
// That, in turn, will result in a non-existing %ID in the LoopMerge
// above.
// TODO: unless there was a break/return/discard instruction
// somewhere in the body, this is an infinite loop, so we should
// issue a warning.
builder.createBranch(&blocks.head);
}
}

View File

@ -855,24 +855,10 @@ void Builder::leaveFunction()
// If our function did not contain a return, add a return void now.
if (! block->isTerminated()) {
// Whether we're in an unreachable (non-entry) block.
bool unreachable = function.getEntryBlock() != block && block->getPredecessors().empty();
if (unreachable) {
// Given that this block is at the end of a function, it must be right after an
// explicit return, just remove it.
function.removeBlock(block);
} else {
// We'll add a return instruction at the end of the current block,
// which for a non-void function is really error recovery (?), as the source
// being translated should have had an explicit return, which would have been
// followed by an unreachable block, which was handled above.
if (function.getReturnType() == makeVoidType())
makeReturn(true);
else {
makeReturn(true, createUndefined(function.getReturnType()));
}
if (function.getReturnType() == makeVoidType())
makeReturn(true);
else {
makeReturn(true, createUndefined(function.getReturnType()));
}
}
}

View File

@ -205,12 +205,6 @@ public:
void dump(std::vector<unsigned int>& out) const
{
// skip the degenerate unreachable blocks
// TODO: code gen: skip all unreachable blocks (transitive closure)
// (but, until that's done safer to keep non-degenerate unreachable blocks, in case others depend on something)
if (unreachable && instructions.size() <= 2)
return;
instructions[0]->dump(out);
for (int i = 0; i < (int)localVariables.size(); ++i)
localVariables[i]->dump(out);

View File

@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 47
// Id's are bound by 48
Capability Shader
1: ExtInstImport "GLSL.std.450"

View File

@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 100
// Id's are bound by 101
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -23,40 +23,40 @@ Linked fragment stage:
Name 43 "k"
Name 55 "sampR"
Name 63 "sampB"
Name 86 "samp2Da"
Name 91 "bn"
MemberName 91(bn) 0 "matra"
MemberName 91(bn) 1 "matca"
MemberName 91(bn) 2 "matr"
MemberName 91(bn) 3 "matc"
MemberName 91(bn) 4 "matrdef"
Name 93 ""
Name 96 "bi"
MemberName 96(bi) 0 "v"
Name 99 "bname"
Name 87 "samp2Da"
Name 92 "bn"
MemberName 92(bn) 0 "matra"
MemberName 92(bn) 1 "matca"
MemberName 92(bn) 2 "matr"
MemberName 92(bn) 3 "matc"
MemberName 92(bn) 4 "matrdef"
Name 94 ""
Name 97 "bi"
MemberName 97(bi) 0 "v"
Name 100 "bname"
Decorate 16(gl_FrontFacing) BuiltIn FrontFacing
Decorate 33(gl_ClipDistance) BuiltIn ClipDistance
Decorate 89 ArrayStride 64
Decorate 90 ArrayStride 64
MemberDecorate 91(bn) 0 RowMajor
MemberDecorate 91(bn) 0 Offset 0
MemberDecorate 91(bn) 0 MatrixStride 16
MemberDecorate 91(bn) 1 ColMajor
MemberDecorate 91(bn) 1 Offset 256
MemberDecorate 91(bn) 1 MatrixStride 16
MemberDecorate 91(bn) 2 RowMajor
MemberDecorate 91(bn) 2 Offset 512
MemberDecorate 91(bn) 2 MatrixStride 16
MemberDecorate 91(bn) 3 ColMajor
MemberDecorate 91(bn) 3 Offset 576
MemberDecorate 91(bn) 3 MatrixStride 16
MemberDecorate 91(bn) 4 RowMajor
MemberDecorate 91(bn) 4 Offset 640
MemberDecorate 91(bn) 4 MatrixStride 16
Decorate 91(bn) Block
Decorate 95 ArrayStride 16
MemberDecorate 96(bi) 0 Offset 0
Decorate 96(bi) Block
Decorate 91 ArrayStride 64
MemberDecorate 92(bn) 0 RowMajor
MemberDecorate 92(bn) 0 Offset 0
MemberDecorate 92(bn) 0 MatrixStride 16
MemberDecorate 92(bn) 1 ColMajor
MemberDecorate 92(bn) 1 Offset 256
MemberDecorate 92(bn) 1 MatrixStride 16
MemberDecorate 92(bn) 2 RowMajor
MemberDecorate 92(bn) 2 Offset 512
MemberDecorate 92(bn) 2 MatrixStride 16
MemberDecorate 92(bn) 3 ColMajor
MemberDecorate 92(bn) 3 Offset 576
MemberDecorate 92(bn) 3 MatrixStride 16
MemberDecorate 92(bn) 4 RowMajor
MemberDecorate 92(bn) 4 Offset 640
MemberDecorate 92(bn) 4 MatrixStride 16
Decorate 92(bn) Block
Decorate 96 ArrayStride 16
MemberDecorate 97(bi) 0 Offset 0
Decorate 97(bi) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -100,24 +100,24 @@ Linked fragment stage:
69: TypeVector 6(float) 2
72: 6(float) Constant 1120403456
74: 29(int) Constant 3
82: TypeImage 6(float) 2D sampled format:Unknown
83: TypeSampledImage 82
84: TypeArray 83 74
85: TypePointer UniformConstant 84
86(samp2Da): 85(ptr) Variable UniformConstant
87: TypeMatrix 26(fvec4) 4
88: 29(int) Constant 4
89: TypeArray 87 88
90: TypeArray 87 88
91(bn): TypeStruct 89 90 87 87 87
92: TypePointer Uniform 91(bn)
93: 92(ptr) Variable Uniform
94: TypeVector 6(float) 3
95: TypeArray 94(fvec3) 50
96(bi): TypeStruct 95
97: TypeArray 96(bi) 88
98: TypePointer Uniform 97
99(bname): 98(ptr) Variable Uniform
83: TypeImage 6(float) 2D sampled format:Unknown
84: TypeSampledImage 83
85: TypeArray 84 74
86: TypePointer UniformConstant 85
87(samp2Da): 86(ptr) Variable UniformConstant
88: TypeMatrix 26(fvec4) 4
89: 29(int) Constant 4
90: TypeArray 88 89
91: TypeArray 88 89
92(bn): TypeStruct 90 91 88 88 88
93: TypePointer Uniform 92(bn)
94: 93(ptr) Variable Uniform
95: TypeVector 6(float) 3
96: TypeArray 95(fvec3) 50
97(bi): TypeStruct 96
98: TypeArray 97(bi) 89
99: TypePointer Uniform 98
100(bname): 99(ptr) Variable Uniform
4(main): 2 Function None 3
5: Label
13: 12(ptr) Variable Function

View File

@ -7,34 +7,34 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 103
// Id's are bound by 104
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 38 43 77
EntryPoint Fragment 4 "main" 39 44 78
ExecutionMode 4 OriginLowerLeft
Source GLSL 430
Name 4 "main"
Name 17 "foo(f1[5][7];"
Name 16 "a"
Name 20 "r"
Name 38 "outfloat"
Name 41 "g4"
Name 43 "g5"
Name 44 "param"
Name 47 "u"
Name 51 "param"
Name 65 "many"
Name 67 "i"
Name 69 "j"
Name 71 "k"
Name 77 "infloat"
Name 93 "uAofA"
MemberName 93(uAofA) 0 "f"
Name 97 "nameAofA"
Decorate 93(uAofA) GLSLShared
Decorate 93(uAofA) Block
Name 39 "outfloat"
Name 42 "g4"
Name 44 "g5"
Name 45 "param"
Name 48 "u"
Name 52 "param"
Name 66 "many"
Name 68 "i"
Name 70 "j"
Name 72 "k"
Name 78 "infloat"
Name 94 "uAofA"
MemberName 94(uAofA) 0 "f"
Name 98 "nameAofA"
Decorate 94(uAofA) GLSLShared
Decorate 94(uAofA) Block
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -53,82 +53,82 @@ Linked fragment stage:
25: 21(int) Constant 0
28: 21(int) Constant 1
32: 21(int) Constant 3
37: TypePointer Output 6(float)
38(outfloat): 37(ptr) Variable Output
39: 6(float) Constant 0
40: TypePointer Private 14
41(g4): 40(ptr) Variable Private
42: TypePointer Input 11
43(g5): 42(ptr) Variable Input
48: 6(float) Constant 1077936128
49: TypePointer Function 6(float)
54: 7(int) Constant 6
55: TypeArray 6(float) 54
56: TypeArray 55 10
57: TypeArray 56 13
58: 7(int) Constant 3
59: TypeArray 57 58
60: 7(int) Constant 2
61: TypeArray 59 60
62: 7(int) Constant 1
63: TypeArray 61 62
64: TypePointer Private 63
65(many): 64(ptr) Variable Private
66: TypePointer UniformConstant 21(int)
67(i): 66(ptr) Variable UniformConstant
69(j): 66(ptr) Variable UniformConstant
71(k): 66(ptr) Variable UniformConstant
76: TypePointer Input 6(float)
77(infloat): 76(ptr) Variable Input
79: TypePointer Private 6(float)
91: TypeArray 6(float) 13
92: TypeArray 91 60
93(uAofA): TypeStruct 92
94: TypeArray 93(uAofA) 10
95: TypeArray 94 58
96: TypePointer Uniform 95
97(nameAofA): 96(ptr) Variable Uniform
98: TypePointer Uniform 6(float)
38: TypePointer Output 6(float)
39(outfloat): 38(ptr) Variable Output
40: 6(float) Constant 0
41: TypePointer Private 14
42(g4): 41(ptr) Variable Private
43: TypePointer Input 11
44(g5): 43(ptr) Variable Input
49: 6(float) Constant 1077936128
50: TypePointer Function 6(float)
55: 7(int) Constant 6
56: TypeArray 6(float) 55
57: TypeArray 56 10
58: TypeArray 57 13
59: 7(int) Constant 3
60: TypeArray 58 59
61: 7(int) Constant 2
62: TypeArray 60 61
63: 7(int) Constant 1
64: TypeArray 62 63
65: TypePointer Private 64
66(many): 65(ptr) Variable Private
67: TypePointer UniformConstant 21(int)
68(i): 67(ptr) Variable UniformConstant
70(j): 67(ptr) Variable UniformConstant
72(k): 67(ptr) Variable UniformConstant
77: TypePointer Input 6(float)
78(infloat): 77(ptr) Variable Input
80: TypePointer Private 6(float)
92: TypeArray 6(float) 13
93: TypeArray 92 61
94(uAofA): TypeStruct 93
95: TypeArray 94(uAofA) 10
96: TypeArray 95 59
97: TypePointer Uniform 96
98(nameAofA): 97(ptr) Variable Uniform
99: TypePointer Uniform 6(float)
4(main): 2 Function None 3
5: Label
44(param): 12(ptr) Variable Function
47(u): 12(ptr) Variable Function
51(param): 12(ptr) Variable Function
Store 38(outfloat) 39
45: 11 Load 43(g5)
Store 44(param) 45
46: 14 FunctionCall 17(foo(f1[5][7];) 44(param)
Store 41(g4) 46
50: 49(ptr) AccessChain 47(u) 22 22
Store 50 48
52: 11 Load 47(u)
Store 51(param) 52
53: 14 FunctionCall 17(foo(f1[5][7];) 51(param)
68: 21(int) Load 67(i)
70: 21(int) Load 69(j)
72: 21(int) Load 71(k)
73: 21(int) Load 67(i)
74: 21(int) Load 69(j)
75: 21(int) Load 71(k)
78: 6(float) Load 77(infloat)
80: 79(ptr) AccessChain 65(many) 68 70 72 73 74 75
Store 80 78
81: 21(int) Load 69(j)
82: 21(int) Load 69(j)
83: 21(int) Load 69(j)
84: 21(int) Load 69(j)
85: 21(int) Load 69(j)
86: 21(int) Load 69(j)
87: 79(ptr) AccessChain 65(many) 81 82 83 84 85 86
88: 6(float) Load 87
89: 6(float) Load 38(outfloat)
90: 6(float) FAdd 89 88
Store 38(outfloat) 90
99: 98(ptr) AccessChain 97(nameAofA) 28 22 25 25 32
100: 6(float) Load 99
101: 6(float) Load 38(outfloat)
102: 6(float) FAdd 101 100
Store 38(outfloat) 102
45(param): 12(ptr) Variable Function
48(u): 12(ptr) Variable Function
52(param): 12(ptr) Variable Function
Store 39(outfloat) 40
46: 11 Load 44(g5)
Store 45(param) 46
47: 14 FunctionCall 17(foo(f1[5][7];) 45(param)
Store 42(g4) 47
51: 50(ptr) AccessChain 48(u) 22 22
Store 51 49
53: 11 Load 48(u)
Store 52(param) 53
54: 14 FunctionCall 17(foo(f1[5][7];) 52(param)
69: 21(int) Load 68(i)
71: 21(int) Load 70(j)
73: 21(int) Load 72(k)
74: 21(int) Load 68(i)
75: 21(int) Load 70(j)
76: 21(int) Load 72(k)
79: 6(float) Load 78(infloat)
81: 80(ptr) AccessChain 66(many) 69 71 73 74 75 76
Store 81 79
82: 21(int) Load 70(j)
83: 21(int) Load 70(j)
84: 21(int) Load 70(j)
85: 21(int) Load 70(j)
86: 21(int) Load 70(j)
87: 21(int) Load 70(j)
88: 80(ptr) AccessChain 66(many) 82 83 84 85 86 87
89: 6(float) Load 88
90: 6(float) Load 39(outfloat)
91: 6(float) FAdd 90 89
Store 39(outfloat) 91
100: 99(ptr) AccessChain 98(nameAofA) 28 22 25 25 32
101: 6(float) Load 100
102: 6(float) Load 39(outfloat)
103: 6(float) FAdd 102 101
Store 39(outfloat) 103
Return
FunctionEnd
17(foo(f1[5][7];): 14 Function None 15

View File

@ -8,7 +8,7 @@ Linked compute stage:
TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 74
// Id's are bound by 75
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -20,28 +20,28 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
Name 10 "func(au1;"
Name 9 "c"
Name 12 "atoms("
Name 20 "counter"
Name 21 "param"
Name 24 "val"
Name 28 "countArr"
Name 35 "origi"
Name 37 "atomi"
Name 40 "origu"
Name 42 "atomu"
Name 44 "value"
Name 61 "dataSSB"
MemberName 61(dataSSB) 0 "f"
MemberName 61(dataSSB) 1 "n_frames_rendered"
Name 63 "result"
Name 71 "arrX"
Name 72 "arrY"
Name 73 "arrZ"
Decorate 20(counter) Binding 0
Decorate 28(countArr) Binding 0
MemberDecorate 61(dataSSB) 0 Offset 0
MemberDecorate 61(dataSSB) 1 Offset 16
Decorate 61(dataSSB) BufferBlock
Decorate 63(result) Binding 0
Name 21 "counter"
Name 22 "param"
Name 25 "val"
Name 29 "countArr"
Name 36 "origi"
Name 38 "atomi"
Name 41 "origu"
Name 43 "atomu"
Name 45 "value"
Name 62 "dataSSB"
MemberName 62(dataSSB) 0 "f"
MemberName 62(dataSSB) 1 "n_frames_rendered"
Name 64 "result"
Name 72 "arrX"
Name 73 "arrY"
Name 74 "arrZ"
Decorate 21(counter) Binding 0
Decorate 29(countArr) Binding 0
MemberDecorate 62(dataSSB) 0 Offset 0
MemberDecorate 62(dataSSB) 1 Offset 16
Decorate 62(dataSSB) BufferBlock
Decorate 64(result) Binding 0
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -49,51 +49,51 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
8: TypeFunction 6(int) 7(ptr)
14: 6(int) Constant 1
15: 6(int) Constant 0
18: 6(int) Constant 1024
19: TypePointer AtomicCounter 6(int)
20(counter): 19(ptr) Variable AtomicCounter
25: 6(int) Constant 4
26: TypeArray 6(int) 25
27: TypePointer AtomicCounter 26
28(countArr): 27(ptr) Variable AtomicCounter
29: TypeInt 32 1
30: 29(int) Constant 2
34: TypePointer Function 29(int)
36: TypePointer Workgroup 29(int)
37(atomi): 36(ptr) Variable Workgroup
38: 29(int) Constant 3
41: TypePointer Workgroup 6(int)
42(atomu): 41(ptr) Variable Workgroup
43: TypePointer UniformConstant 6(int)
44(value): 43(ptr) Variable UniformConstant
47: 6(int) Constant 7
52: 29(int) Constant 7
56: 6(int) Constant 10
59: TypeFloat 32
60: TypeVector 29(int) 4
61(dataSSB): TypeStruct 59(float) 60(ivec4)
62: TypePointer Uniform 61(dataSSB)
63(result): 62(ptr) Variable Uniform
64: 29(int) Constant 1
65: 6(int) Constant 2
66: TypePointer Uniform 29(int)
69: TypeArray 29(int) 14
70: TypePointer Private 69
71(arrX): 70(ptr) Variable Private
72(arrY): 70(ptr) Variable Private
73(arrZ): 70(ptr) Variable Private
19: 6(int) Constant 1024
20: TypePointer AtomicCounter 6(int)
21(counter): 20(ptr) Variable AtomicCounter
26: 6(int) Constant 4
27: TypeArray 6(int) 26
28: TypePointer AtomicCounter 27
29(countArr): 28(ptr) Variable AtomicCounter
30: TypeInt 32 1
31: 30(int) Constant 2
35: TypePointer Function 30(int)
37: TypePointer Workgroup 30(int)
38(atomi): 37(ptr) Variable Workgroup
39: 30(int) Constant 3
42: TypePointer Workgroup 6(int)
43(atomu): 42(ptr) Variable Workgroup
44: TypePointer UniformConstant 6(int)
45(value): 44(ptr) Variable UniformConstant
48: 6(int) Constant 7
53: 30(int) Constant 7
57: 6(int) Constant 10
60: TypeFloat 32
61: TypeVector 30(int) 4
62(dataSSB): TypeStruct 60(float) 61(ivec4)
63: TypePointer Uniform 62(dataSSB)
64(result): 63(ptr) Variable Uniform
65: 30(int) Constant 1
66: 6(int) Constant 2
67: TypePointer Uniform 30(int)
70: TypeArray 30(int) 14
71: TypePointer Private 70
72(arrX): 71(ptr) Variable Private
73(arrY): 71(ptr) Variable Private
74(arrZ): 71(ptr) Variable Private
4(main): 2 Function None 3
5: Label
21(param): 7(ptr) Variable Function
24(val): 7(ptr) Variable Function
MemoryBarrier 14 18
22: 6(int) Load 20(counter)
Store 21(param) 22
23: 6(int) FunctionCall 10(func(au1;) 21(param)
31: 19(ptr) AccessChain 28(countArr) 30
32: 6(int) AtomicLoad 31 14 15
Store 24(val) 32
33: 6(int) AtomicIDecrement 20(counter) 14 15
22(param): 7(ptr) Variable Function
25(val): 7(ptr) Variable Function
MemoryBarrier 14 19
23: 6(int) Load 21(counter)
Store 22(param) 23
24: 6(int) FunctionCall 10(func(au1;) 22(param)
32: 20(ptr) AccessChain 29(countArr) 31
33: 6(int) AtomicLoad 32 14 15
Store 25(val) 33
34: 6(int) AtomicIDecrement 21(counter) 14 15
Return
FunctionEnd
10(func(au1;): 6(int) Function None 8
@ -104,29 +104,29 @@ TBD functionality: Is atomic_uint an opaque handle in the uniform storage class,
FunctionEnd
12(atoms(): 2 Function None 3
13: Label
35(origi): 34(ptr) Variable Function
40(origu): 7(ptr) Variable Function
39: 29(int) AtomicIAdd 37(atomi) 14 15 38
Store 35(origi) 39
45: 6(int) Load 44(value)
46: 6(int) AtomicAnd 42(atomu) 14 15 45
Store 40(origu) 46
48: 6(int) AtomicOr 42(atomu) 14 15 47
Store 40(origu) 48
49: 6(int) AtomicXor 42(atomu) 14 15 47
Store 40(origu) 49
50: 6(int) Load 44(value)
51: 6(int) AtomicUMin 42(atomu) 14 15 50
Store 40(origu) 51
53: 29(int) AtomicSMax 37(atomi) 14 15 52
Store 35(origi) 53
54: 29(int) Load 35(origi)
55: 29(int) AtomicExchange 37(atomi) 14 15 54
Store 35(origi) 55
57: 6(int) Load 44(value)
58: 6(int) AtomicCompareExchange 42(atomu) 14 15 15 57 56
Store 40(origu) 58
67: 66(ptr) AccessChain 63(result) 64 65
68: 29(int) AtomicIAdd 67 14 15 64
36(origi): 35(ptr) Variable Function
41(origu): 7(ptr) Variable Function
40: 30(int) AtomicIAdd 38(atomi) 14 15 39
Store 36(origi) 40
46: 6(int) Load 45(value)
47: 6(int) AtomicAnd 43(atomu) 14 15 46
Store 41(origu) 47
49: 6(int) AtomicOr 43(atomu) 14 15 48
Store 41(origu) 49
50: 6(int) AtomicXor 43(atomu) 14 15 48
Store 41(origu) 50
51: 6(int) Load 45(value)
52: 6(int) AtomicUMin 43(atomu) 14 15 51
Store 41(origu) 52
54: 30(int) AtomicSMax 38(atomi) 14 15 53
Store 36(origi) 54
55: 30(int) Load 36(origi)
56: 30(int) AtomicExchange 38(atomi) 14 15 55
Store 36(origi) 56
58: 6(int) Load 45(value)
59: 6(int) AtomicCompareExchange 43(atomu) 14 15 15 58 57
Store 41(origu) 59
68: 67(ptr) AccessChain 64(result) 65 66
69: 30(int) AtomicIAdd 68 14 15 65
Return
FunctionEnd

View File

@ -7,86 +7,86 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 49
// Id's are bound by 50
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 23 47 48
EntryPoint Vertex 4 "main" 24 48 49
Source GLSL 450
Name 4 "main"
Name 10 "foo(b1;"
Name 9 "b"
Name 21 "gl_PerVertex"
MemberName 21(gl_PerVertex) 0 "gl_Position"
MemberName 21(gl_PerVertex) 1 "gl_PointSize"
MemberName 21(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 21(gl_PerVertex) 3 "gl_CullDistance"
Name 23 ""
Name 28 "ubname"
MemberName 28(ubname) 0 "b"
Name 30 "ubinst"
Name 31 "param"
Name 47 "gl_VertexID"
Name 48 "gl_InstanceID"
MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 21(gl_PerVertex) Block
Decorate 28(ubname) GLSLShared
Decorate 28(ubname) Block
Decorate 47(gl_VertexID) BuiltIn VertexId
Decorate 48(gl_InstanceID) BuiltIn InstanceId
Name 22 "gl_PerVertex"
MemberName 22(gl_PerVertex) 0 "gl_Position"
MemberName 22(gl_PerVertex) 1 "gl_PointSize"
MemberName 22(gl_PerVertex) 2 "gl_ClipDistance"
MemberName 22(gl_PerVertex) 3 "gl_CullDistance"
Name 24 ""
Name 29 "ubname"
MemberName 29(ubname) 0 "b"
Name 31 "ubinst"
Name 32 "param"
Name 48 "gl_VertexID"
Name 49 "gl_InstanceID"
MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position
MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize
MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance
MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance
Decorate 22(gl_PerVertex) Block
Decorate 29(ubname) GLSLShared
Decorate 29(ubname) Block
Decorate 48(gl_VertexID) BuiltIn VertexId
Decorate 49(gl_InstanceID) BuiltIn InstanceId
2: TypeVoid
3: TypeFunction 2
6: TypeBool
7: TypePointer Function 6(bool)
8: TypeFunction 6(bool) 7(ptr)
13: 6(bool) ConstantFalse
16: TypeFloat 32
17: TypeVector 16(float) 4
18: TypeInt 32 0
19: 18(int) Constant 1
20: TypeArray 16(float) 19
21(gl_PerVertex): TypeStruct 17(fvec4) 16(float) 20 20
22: TypePointer Output 21(gl_PerVertex)
23: 22(ptr) Variable Output
24: TypeInt 32 1
25: 24(int) Constant 0
26: TypePointer Function 17(fvec4)
28(ubname): TypeStruct 6(bool)
29: TypePointer Uniform 28(ubname)
30(ubinst): 29(ptr) Variable Uniform
32: TypePointer Uniform 6(bool)
38: 16(float) Constant 0
39: 17(fvec4) ConstantComposite 38 38 38 38
41: 16(float) Constant 1065353216
42: 17(fvec4) ConstantComposite 41 41 41 41
44: TypePointer Output 17(fvec4)
46: TypePointer Input 24(int)
47(gl_VertexID): 46(ptr) Variable Input
48(gl_InstanceID): 46(ptr) Variable Input
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeInt 32 0
20: 19(int) Constant 1
21: TypeArray 17(float) 20
22(gl_PerVertex): TypeStruct 18(fvec4) 17(float) 21 21
23: TypePointer Output 22(gl_PerVertex)
24: 23(ptr) Variable Output
25: TypeInt 32 1
26: 25(int) Constant 0
27: TypePointer Function 18(fvec4)
29(ubname): TypeStruct 6(bool)
30: TypePointer Uniform 29(ubname)
31(ubinst): 30(ptr) Variable Uniform
33: TypePointer Uniform 6(bool)
39: 17(float) Constant 0
40: 18(fvec4) ConstantComposite 39 39 39 39
42: 17(float) Constant 1065353216
43: 18(fvec4) ConstantComposite 42 42 42 42
45: TypePointer Output 18(fvec4)
47: TypePointer Input 25(int)
48(gl_VertexID): 47(ptr) Variable Input
49(gl_InstanceID): 47(ptr) Variable Input
4(main): 2 Function None 3
5: Label
27: 26(ptr) Variable Function
31(param): 7(ptr) Variable Function
33: 32(ptr) AccessChain 30(ubinst) 25
34: 6(bool) Load 33
Store 31(param) 34
35: 6(bool) FunctionCall 10(foo(b1;) 31(param)
SelectionMerge 37 None
BranchConditional 35 36 40
36: Label
Store 27 39
Branch 37
40: Label
Store 27 42
Branch 37
37: Label
43: 17(fvec4) Load 27
45: 44(ptr) AccessChain 23 25
Store 45 43
28: 27(ptr) Variable Function
32(param): 7(ptr) Variable Function
34: 33(ptr) AccessChain 31(ubinst) 26
35: 6(bool) Load 34
Store 32(param) 35
36: 6(bool) FunctionCall 10(foo(b1;) 32(param)
SelectionMerge 38 None
BranchConditional 36 37 41
37: Label
Store 28 40
Branch 38
41: Label
Store 28 43
Branch 38
38: Label
44: 18(fvec4) Load 28
46: 45(ptr) AccessChain 24 26
Store 46 44
Return
FunctionEnd
10(foo(b1;): 6(bool) Function None 8

View File

@ -50,4 +50,6 @@ Linked vertex stage:
19: 6(int) IAdd 17 18
Store 8(i) 19
Branch 10
12: Label
Return
FunctionEnd

View File

@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 60
// Id's are bound by 61
Capability Shader
1: ExtInstImport "GLSL.std.450"
@ -24,13 +24,13 @@ Linked fragment stage:
Name 27 "f"
Name 30 "gl_FragColor"
Name 36 "d"
Name 59 "bigColor"
Name 60 "bigColor"
Decorate 18(color) RelaxedPrecision
Decorate 20(BaseColor) RelaxedPrecision
Decorate 27(f) RelaxedPrecision
Decorate 30(gl_FragColor) RelaxedPrecision
Decorate 36(d) RelaxedPrecision
Decorate 59(bigColor) RelaxedPrecision
Decorate 60(bigColor) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
8: TypeFloat 32
@ -52,8 +52,8 @@ Linked fragment stage:
49: TypeInt 32 0
50: 49(int) Constant 0
53: 49(int) Constant 1
58: TypePointer UniformConstant 12(fvec4)
59(bigColor): 58(ptr) Variable UniformConstant
59: TypePointer UniformConstant 12(fvec4)
60(bigColor): 59(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
18(color): 13(ptr) Variable Function

View File

@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 76
// Id's are bound by 77
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 57 68
EntryPoint Fragment 4 "main" 58 69
ExecutionMode 4 OriginLowerLeft
Source GLSL 130
Name 4 "main"
@ -22,14 +22,14 @@ Linked fragment stage:
Name 16 "unreachableReturn("
Name 18 "missingReturn("
Name 21 "h"
Name 34 "d"
Name 55 "color"
Name 57 "BaseColor"
Name 58 "param"
Name 63 "f"
Name 65 "g"
Name 68 "gl_FragColor"
Name 75 "bigColor"
Name 35 "d"
Name 56 "color"
Name 58 "BaseColor"
Name 59 "param"
Name 64 "f"
Name 66 "g"
Name 69 "gl_FragColor"
Name 76 "bigColor"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -44,42 +44,42 @@ Linked fragment stage:
24: 23(int) Constant 0
25: TypePointer Function 6(float)
28: 23(int) Constant 1
33: TypePointer UniformConstant 6(float)
34(d): 33(ptr) Variable UniformConstant
36: 6(float) Constant 1082549862
37: TypeBool
41: 6(float) Constant 1067030938
44: 6(float) Constant 1083179008
52: 6(float) Constant 1081711002
56: TypePointer Input 7(fvec4)
57(BaseColor): 56(ptr) Variable Input
67: TypePointer Output 7(fvec4)
68(gl_FragColor): 67(ptr) Variable Output
74: TypePointer UniformConstant 7(fvec4)
75(bigColor): 74(ptr) Variable UniformConstant
34: TypePointer UniformConstant 6(float)
35(d): 34(ptr) Variable UniformConstant
37: 6(float) Constant 1082549862
38: TypeBool
42: 6(float) Constant 1067030938
45: 6(float) Constant 1083179008
53: 6(float) Constant 1081711002
57: TypePointer Input 7(fvec4)
58(BaseColor): 57(ptr) Variable Input
68: TypePointer Output 7(fvec4)
69(gl_FragColor): 68(ptr) Variable Output
75: TypePointer UniformConstant 7(fvec4)
76(bigColor): 75(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
55(color): 8(ptr) Variable Function
58(param): 8(ptr) Variable Function
63(f): 25(ptr) Variable Function
65(g): 25(ptr) Variable Function
56(color): 8(ptr) Variable Function
59(param): 8(ptr) Variable Function
64(f): 25(ptr) Variable Function
66(g): 25(ptr) Variable Function
Store 21(h) 22
59: 7(fvec4) Load 57(BaseColor)
Store 58(param) 59
60: 6(float) FunctionCall 11(foo(vf4;) 58(param)
61: 7(fvec4) CompositeConstruct 60 60 60 60
Store 55(color) 61
62: 2 FunctionCall 13(bar()
64: 6(float) FunctionCall 16(unreachableReturn()
Store 63(f) 64
66: 6(float) FunctionCall 18(missingReturn()
Store 65(g) 66
69: 7(fvec4) Load 55(color)
70: 6(float) Load 63(f)
71: 7(fvec4) VectorTimesScalar 69 70
72: 6(float) Load 21(h)
73: 7(fvec4) VectorTimesScalar 71 72
Store 68(gl_FragColor) 73
60: 7(fvec4) Load 58(BaseColor)
Store 59(param) 60
61: 6(float) FunctionCall 11(foo(vf4;) 59(param)
62: 7(fvec4) CompositeConstruct 61 61 61 61
Store 56(color) 62
63: 2 FunctionCall 13(bar()
65: 6(float) FunctionCall 16(unreachableReturn()
Store 64(f) 65
67: 6(float) FunctionCall 18(missingReturn()
Store 66(g) 67
70: 7(fvec4) Load 56(color)
71: 6(float) Load 64(f)
72: 7(fvec4) VectorTimesScalar 70 71
73: 6(float) Load 21(h)
74: 7(fvec4) VectorTimesScalar 72 73
Store 69(gl_FragColor) 74
Return
FunctionEnd
11(foo(vf4;): 6(float) Function None 9
@ -98,29 +98,29 @@ Linked fragment stage:
FunctionEnd
16(unreachableReturn(): 6(float) Function None 15
17: Label
35: 6(float) Load 34(d)
38: 37(bool) FOrdLessThan 35 36
SelectionMerge 40 None
BranchConditional 38 39 43
39: Label
ReturnValue 41
43: Label
ReturnValue 44
40: Label
46: 6(float) Undef
ReturnValue 46
36: 6(float) Load 35(d)
39: 38(bool) FOrdLessThan 36 37
SelectionMerge 41 None
BranchConditional 39 40 44
40: Label
ReturnValue 42
44: Label
ReturnValue 45
41: Label
47: 6(float) Undef
ReturnValue 47
FunctionEnd
18(missingReturn(): 6(float) Function None 15
19: Label
47: 6(float) Load 34(d)
48: 37(bool) FOrdLessThan 47 44
SelectionMerge 50 None
BranchConditional 48 49 50
49: Label
51: 6(float) Load 34(d)
Store 21(h) 51
ReturnValue 52
50: Label
54: 6(float) Undef
ReturnValue 54
48: 6(float) Load 35(d)
49: 38(bool) FOrdLessThan 48 45
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
52: 6(float) Load 35(d)
Store 21(h) 52
ReturnValue 53
51: Label
55: 6(float) Undef
ReturnValue 55
FunctionEnd

View File

@ -7,12 +7,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 153
// Id's are bound by 156
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 149
EntryPoint Fragment 4 "main" 152
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"
@ -29,25 +29,25 @@ Linked fragment stage:
Name 24 "r"
Name 28 "foo3("
Name 30 "sum"
Name 74 "u"
Name 86 "t"
Name 89 "s"
MemberName 89(s) 0 "t"
Name 91 "f"
Name 95 "color"
Name 101 "e"
Name 102 "param"
Name 103 "param"
Name 104 "param"
Name 76 "u"
Name 89 "t"
Name 92 "s"
MemberName 92(s) 0 "t"
Name 94 "f"
Name 98 "color"
Name 104 "e"
Name 105 "param"
Name 120 "ret"
Name 122 "tempReturn"
Name 127 "tempArg"
Name 128 "param"
Name 129 "param"
Name 130 "param"
Name 133 "arg"
Name 149 "gl_FragColor"
Name 106 "param"
Name 107 "param"
Name 108 "param"
Name 123 "ret"
Name 125 "tempReturn"
Name 130 "tempArg"
Name 131 "param"
Name 132 "param"
Name 133 "param"
Name 136 "arg"
Name 152 "gl_FragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
@ -61,103 +61,103 @@ Linked fragment stage:
27: TypeFunction 6(int)
38: 6(int) Constant 64
43: 6(int) Constant 1024
61: 17(float) Constant 1077936128
65: 17(float) Constant 1084227584
66: TypeInt 32 0
67: 66(int) Constant 1
73: TypePointer UniformConstant 17(float)
74(u): 73(ptr) Variable UniformConstant
76: 17(float) Constant 1078774989
77: TypeBool
82: 6(int) Constant 1000000
84: 6(int) Constant 2000000
87: 6(int) Constant 2
88: TypeVector 6(int) 4
89(s): TypeStruct 88(ivec4)
90: TypePointer Function 89(s)
92: 6(int) Constant 0
93: 6(int) Constant 32
96: 6(int) Constant 1
100: 6(int) Constant 8
112: 6(int) Constant 128
121: TypePointer Private 6(int)
122(tempReturn): 121(ptr) Variable Private
123: 17(float) Constant 1082130432
124: 17(float) Constant 1065353216
125: 17(float) Constant 1073741824
126: 19(fvec3) ConstantComposite 124 125 61
147: TypeVector 17(float) 4
148: TypePointer Output 147(fvec4)
149(gl_FragColor): 148(ptr) Variable Output
62: 17(float) Constant 1077936128
66: 17(float) Constant 1084227584
67: TypeInt 32 0
68: 67(int) Constant 1
75: TypePointer UniformConstant 17(float)
76(u): 75(ptr) Variable UniformConstant
78: 17(float) Constant 1078774989
79: TypeBool
84: 6(int) Constant 1000000
86: 6(int) Constant 2000000
90: 6(int) Constant 2
91: TypeVector 6(int) 4
92(s): TypeStruct 91(ivec4)
93: TypePointer Function 92(s)
95: 6(int) Constant 0
96: 6(int) Constant 32
99: 6(int) Constant 1
103: 6(int) Constant 8
115: 6(int) Constant 128
124: TypePointer Private 6(int)
125(tempReturn): 124(ptr) Variable Private
126: 17(float) Constant 1082130432
127: 17(float) Constant 1065353216
128: 17(float) Constant 1073741824
129: 19(fvec3) ConstantComposite 127 128 62
150: TypeVector 17(float) 4
151: TypePointer Output 150(fvec4)
152(gl_FragColor): 151(ptr) Variable Output
4(main): 2 Function None 3
5: Label
86(t): 7(ptr) Variable Function
91(f): 90(ptr) Variable Function
95(color): 7(ptr) Variable Function
101(e): 7(ptr) Variable Function
102(param): 7(ptr) Variable Function
103(param): 7(ptr) Variable Function
104(param): 7(ptr) Variable Function
89(t): 7(ptr) Variable Function
94(f): 93(ptr) Variable Function
98(color): 7(ptr) Variable Function
104(e): 7(ptr) Variable Function
105(param): 7(ptr) Variable Function
120(ret): 18(ptr) Variable Function
127(tempArg): 7(ptr) Variable Function
128(param): 18(ptr) Variable Function
129(param): 20(ptr) Variable Function
130(param): 7(ptr) Variable Function
133(arg): 18(ptr) Variable Function
Store 86(t) 87
94: 7(ptr) AccessChain 91(f) 92 67
Store 94 93
97: 6(int) Load 86(t)
98: 6(int) Load 86(t)
99: 6(int) IAdd 97 98
Store 102(param) 96
Store 103(param) 99
106: 7(ptr) AccessChain 91(f) 92 67
107: 6(int) Load 106
Store 105(param) 107
108: 6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 102(param) 87 103(param) 100 104(param) 105(param)
109: 6(int) Load 104(param)
Store 101(e) 109
110: 6(int) Load 105(param)
111: 7(ptr) AccessChain 91(f) 92 67
Store 111 110
Store 95(color) 108
113: 6(int) Load 101(e)
114: 7(ptr) AccessChain 91(f) 92 67
115: 6(int) Load 114
116: 6(int) IAdd 113 115
117: 6(int) IMul 112 116
118: 6(int) Load 95(color)
119: 6(int) IAdd 118 117
Store 95(color) 119
Store 128(param) 123
Store 129(param) 126
131: 6(int) FunctionCall 25(foo2(f1;vf3;i1;) 128(param) 129(param) 130(param)
132: 6(int) Load 130(param)
Store 127(tempArg) 132
Store 122(tempReturn) 131
134: 6(int) Load 127(tempArg)
135: 17(float) ConvertSToF 134
Store 133(arg) 135
136: 6(int) Load 122(tempReturn)
137: 17(float) ConvertSToF 136
Store 120(ret) 137
138: 17(float) Load 120(ret)
139: 17(float) Load 133(arg)
140: 17(float) FAdd 138 139
141: 6(int) ConvertFToS 140
142: 6(int) Load 95(color)
143: 6(int) IAdd 142 141
Store 95(color) 143
144: 6(int) FunctionCall 28(foo3()
145: 6(int) Load 95(color)
106(param): 7(ptr) Variable Function
107(param): 7(ptr) Variable Function
108(param): 7(ptr) Variable Function
123(ret): 18(ptr) Variable Function
130(tempArg): 7(ptr) Variable Function
131(param): 18(ptr) Variable Function
132(param): 20(ptr) Variable Function
133(param): 7(ptr) Variable Function
136(arg): 18(ptr) Variable Function
Store 89(t) 90
97: 7(ptr) AccessChain 94(f) 95 68
Store 97 96
100: 6(int) Load 89(t)
101: 6(int) Load 89(t)
102: 6(int) IAdd 100 101
Store 105(param) 99
Store 106(param) 102
109: 7(ptr) AccessChain 94(f) 95 68
110: 6(int) Load 109
Store 108(param) 110
111: 6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 105(param) 90 106(param) 103 107(param) 108(param)
112: 6(int) Load 107(param)
Store 104(e) 112
113: 6(int) Load 108(param)
114: 7(ptr) AccessChain 94(f) 95 68
Store 114 113
Store 98(color) 111
116: 6(int) Load 104(e)
117: 7(ptr) AccessChain 94(f) 95 68
118: 6(int) Load 117
119: 6(int) IAdd 116 118
120: 6(int) IMul 115 119
121: 6(int) Load 98(color)
122: 6(int) IAdd 121 120
Store 98(color) 122
Store 131(param) 126
Store 132(param) 129
134: 6(int) FunctionCall 25(foo2(f1;vf3;i1;) 131(param) 132(param) 133(param)
135: 6(int) Load 133(param)
Store 130(tempArg) 135
Store 125(tempReturn) 134
137: 6(int) Load 130(tempArg)
138: 17(float) ConvertSToF 137
Store 136(arg) 138
139: 6(int) Load 125(tempReturn)
140: 17(float) ConvertSToF 139
Store 123(ret) 140
141: 17(float) Load 123(ret)
142: 17(float) Load 136(arg)
143: 17(float) FAdd 141 142
144: 6(int) ConvertFToS 143
145: 6(int) Load 98(color)
146: 6(int) IAdd 145 144
Store 95(color) 146
150: 6(int) Load 95(color)
151: 17(float) ConvertSToF 150
152: 147(fvec4) CompositeConstruct 151 151 151 151
Store 149(gl_FragColor) 152
Store 98(color) 146
147: 6(int) FunctionCall 28(foo3()
148: 6(int) Load 98(color)
149: 6(int) IAdd 148 147
Store 98(color) 149
153: 6(int) Load 98(color)
154: 17(float) ConvertSToF 153
155: 150(fvec4) CompositeConstruct 154 154 154 154
Store 152(gl_FragColor) 155
Return
FunctionEnd
15(foo(i1;i1;i1;i1;i1;i1;): 6(int) Function None 8
@ -209,24 +209,24 @@ Linked fragment stage:
23(b): 20(ptr) FunctionParameter
24(r): 7(ptr) FunctionParameter
26: Label
62: 17(float) Load 22(a)
63: 17(float) FMul 61 62
64: 6(int) ConvertFToS 63
Store 24(r) 64
68: 18(ptr) AccessChain 23(b) 67
69: 17(float) Load 68
70: 17(float) FMul 65 69
71: 6(int) ConvertFToS 70
ReturnValue 71
63: 17(float) Load 22(a)
64: 17(float) FMul 62 63
65: 6(int) ConvertFToS 64
Store 24(r) 65
69: 18(ptr) AccessChain 23(b) 68
70: 17(float) Load 69
71: 17(float) FMul 66 70
72: 6(int) ConvertFToS 71
ReturnValue 72
FunctionEnd
28(foo3(): 6(int) Function None 27
29: Label
75: 17(float) Load 74(u)
78: 77(bool) FOrdGreaterThan 75 76
SelectionMerge 80 None
BranchConditional 78 79 80
79: Label
77: 17(float) Load 76(u)
80: 79(bool) FOrdGreaterThan 77 78
SelectionMerge 82 None
BranchConditional 80 81 82
81: Label
Kill
80: Label
ReturnValue 84
82: Label
ReturnValue 86
FunctionEnd

View File

@ -5,12 +5,12 @@ Linked vertex stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 93
// Id's are bound by 96
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Vertex 4 "main" 69 73 92
EntryPoint Vertex 4 "main" 72 76 95
Source GLSL 130
Name 4 "main"
Name 14 "xf(mf33;vf3;"
@ -21,18 +21,18 @@ Linked vertex stage:
Name 26 "mxv(mf44;vf3;"
Name 24 "m4"
Name 25 "v"
Name 63 "param"
Name 69 "gl_Position"
Name 71 "m4"
Name 73 "v3"
Name 74 "param"
Name 76 "param"
Name 80 "m3"
Name 81 "param"
Name 83 "param"
Name 92 "gl_VertexID"
Decorate 69(gl_Position) BuiltIn Position
Decorate 92(gl_VertexID) BuiltIn VertexId
Name 65 "param"
Name 72 "gl_Position"
Name 74 "m4"
Name 76 "v3"
Name 77 "param"
Name 79 "param"
Name 83 "m3"
Name 84 "param"
Name 86 "param"
Name 95 "gl_VertexID"
Decorate 72(gl_Position) BuiltIn Position
Decorate 95(gl_VertexID) BuiltIn VertexId
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -46,45 +46,45 @@ Linked vertex stage:
18: TypePointer Function 17
19: TypeFunction 8 18(ptr)
23: TypeFunction 7(fvec3) 18(ptr) 10(ptr)
32: TypeInt 32 1
33: 32(int) Constant 0
34: TypePointer Function 16(fvec4)
38: 32(int) Constant 1
42: 32(int) Constant 2
46: 6(float) Constant 1065353216
47: 6(float) Constant 0
68: TypePointer Output 16(fvec4)
69(gl_Position): 68(ptr) Variable Output
70: TypePointer UniformConstant 17
71(m4): 70(ptr) Variable UniformConstant
72: TypePointer Input 7(fvec3)
73(v3): 72(ptr) Variable Input
79: TypePointer UniformConstant 8
80(m3): 79(ptr) Variable UniformConstant
91: TypePointer Input 32(int)
92(gl_VertexID): 91(ptr) Variable Input
33: TypeInt 32 1
34: 33(int) Constant 0
35: TypePointer Function 16(fvec4)
39: 33(int) Constant 1
43: 33(int) Constant 2
47: 6(float) Constant 1065353216
48: 6(float) Constant 0
71: TypePointer Output 16(fvec4)
72(gl_Position): 71(ptr) Variable Output
73: TypePointer UniformConstant 17
74(m4): 73(ptr) Variable UniformConstant
75: TypePointer Input 7(fvec3)
76(v3): 75(ptr) Variable Input
82: TypePointer UniformConstant 8
83(m3): 82(ptr) Variable UniformConstant
94: TypePointer Input 33(int)
95(gl_VertexID): 94(ptr) Variable Input
4(main): 2 Function None 3
5: Label
74(param): 18(ptr) Variable Function
76(param): 10(ptr) Variable Function
81(param): 9(ptr) Variable Function
83(param): 10(ptr) Variable Function
75: 17 Load 71(m4)
Store 74(param) 75
77: 7(fvec3) Load 73(v3)
Store 76(param) 77
78: 7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 74(param) 76(param)
82: 8 Load 80(m3)
Store 81(param) 82
84: 7(fvec3) Load 73(v3)
Store 83(param) 84
85: 7(fvec3) FunctionCall 14(xf(mf33;vf3;) 81(param) 83(param)
86: 7(fvec3) FAdd 78 85
87: 6(float) CompositeExtract 86 0
88: 6(float) CompositeExtract 86 1
89: 6(float) CompositeExtract 86 2
90: 16(fvec4) CompositeConstruct 87 88 89 46
Store 69(gl_Position) 90
77(param): 18(ptr) Variable Function
79(param): 10(ptr) Variable Function
84(param): 9(ptr) Variable Function
86(param): 10(ptr) Variable Function
78: 17 Load 74(m4)
Store 77(param) 78
80: 7(fvec3) Load 76(v3)
Store 79(param) 80
81: 7(fvec3) FunctionCall 26(mxv(mf44;vf3;) 77(param) 79(param)
85: 8 Load 83(m3)
Store 84(param) 85
87: 7(fvec3) Load 76(v3)
Store 86(param) 87
88: 7(fvec3) FunctionCall 14(xf(mf33;vf3;) 84(param) 86(param)
89: 7(fvec3) FAdd 81 88
90: 6(float) CompositeExtract 89 0
91: 6(float) CompositeExtract 89 1
92: 6(float) CompositeExtract 89 2
93: 16(fvec4) CompositeConstruct 90 91 92 47
Store 72(gl_Position) 93
Return
FunctionEnd
14(xf(mf33;vf3;): 7(fvec3) Function None 11
@ -99,39 +99,39 @@ Linked vertex stage:
21(Mat3(mf44;): 8 Function None 19
20(m): 18(ptr) FunctionParameter
22: Label
35: 34(ptr) AccessChain 20(m) 33
36: 16(fvec4) Load 35
37: 7(fvec3) VectorShuffle 36 36 0 1 2
39: 34(ptr) AccessChain 20(m) 38
40: 16(fvec4) Load 39
41: 7(fvec3) VectorShuffle 40 40 0 1 2
43: 34(ptr) AccessChain 20(m) 42
44: 16(fvec4) Load 43
45: 7(fvec3) VectorShuffle 44 44 0 1 2
48: 6(float) CompositeExtract 37 0
49: 6(float) CompositeExtract 37 1
50: 6(float) CompositeExtract 37 2
51: 6(float) CompositeExtract 41 0
52: 6(float) CompositeExtract 41 1
53: 6(float) CompositeExtract 41 2
54: 6(float) CompositeExtract 45 0
55: 6(float) CompositeExtract 45 1
56: 6(float) CompositeExtract 45 2
57: 7(fvec3) CompositeConstruct 48 49 50
58: 7(fvec3) CompositeConstruct 51 52 53
59: 7(fvec3) CompositeConstruct 54 55 56
60: 8 CompositeConstruct 57 58 59
ReturnValue 60
36: 35(ptr) AccessChain 20(m) 34
37: 16(fvec4) Load 36
38: 7(fvec3) VectorShuffle 37 37 0 1 2
40: 35(ptr) AccessChain 20(m) 39
41: 16(fvec4) Load 40
42: 7(fvec3) VectorShuffle 41 41 0 1 2
44: 35(ptr) AccessChain 20(m) 43
45: 16(fvec4) Load 44
46: 7(fvec3) VectorShuffle 45 45 0 1 2
49: 6(float) CompositeExtract 38 0
50: 6(float) CompositeExtract 38 1
51: 6(float) CompositeExtract 38 2
52: 6(float) CompositeExtract 42 0
53: 6(float) CompositeExtract 42 1
54: 6(float) CompositeExtract 42 2
55: 6(float) CompositeExtract 46 0
56: 6(float) CompositeExtract 46 1
57: 6(float) CompositeExtract 46 2
58: 7(fvec3) CompositeConstruct 49 50 51
59: 7(fvec3) CompositeConstruct 52 53 54
60: 7(fvec3) CompositeConstruct 55 56 57
61: 8 CompositeConstruct 58 59 60
ReturnValue 61
FunctionEnd
26(mxv(mf44;vf3;): 7(fvec3) Function None 23
24(m4): 18(ptr) FunctionParameter
25(v): 10(ptr) FunctionParameter
27: Label
63(param): 18(ptr) Variable Function
62: 7(fvec3) Load 25(v)
64: 17 Load 24(m4)
Store 63(param) 64
65: 8 FunctionCall 21(Mat3(mf44;) 63(param)
66: 7(fvec3) VectorTimesMatrix 62 65
ReturnValue 66
65(param): 18(ptr) Variable Function
64: 7(fvec3) Load 25(v)
66: 17 Load 24(m4)
Store 65(param) 66
67: 8 FunctionCall 21(Mat3(mf44;) 65(param)
68: 7(fvec3) VectorTimesMatrix 64 67
ReturnValue 68
FunctionEnd

View File

@ -5,12 +5,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 112
// Id's are bound by 114
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 23 57 59 71
EntryPoint Fragment 4 "main" 23 59 61 73
ExecutionMode 4 OriginLowerLeft
Source ESSL 300
Name 4 "main"
@ -19,29 +19,29 @@ Linked fragment stage:
Name 19 "boolfun(vb2;"
Name 18 "bv2"
Name 23 "highfin"
Name 36 "sum"
Name 38 "uniform_medium"
Name 40 "uniform_high"
Name 46 "uniform_low"
Name 51 "arg1"
Name 53 "arg2"
Name 55 "d"
Name 57 "lowfin"
Name 59 "mediumfin"
Name 63 "global_highp"
Name 67 "local_highp"
Name 71 "mediumfout"
Name 102 "ub2"
Name 103 "param"
Decorate 36(sum) RelaxedPrecision
Decorate 38(uniform_medium) RelaxedPrecision
Decorate 46(uniform_low) RelaxedPrecision
Decorate 51(arg1) RelaxedPrecision
Decorate 53(arg2) RelaxedPrecision
Decorate 55(d) RelaxedPrecision
Decorate 57(lowfin) RelaxedPrecision
Decorate 59(mediumfin) RelaxedPrecision
Decorate 71(mediumfout) RelaxedPrecision
Name 38 "sum"
Name 40 "uniform_medium"
Name 42 "uniform_high"
Name 48 "uniform_low"
Name 53 "arg1"
Name 55 "arg2"
Name 57 "d"
Name 59 "lowfin"
Name 61 "mediumfin"
Name 65 "global_highp"
Name 69 "local_highp"
Name 73 "mediumfout"
Name 104 "ub2"
Name 105 "param"
Decorate 38(sum) RelaxedPrecision
Decorate 40(uniform_medium) RelaxedPrecision
Decorate 48(uniform_low) RelaxedPrecision
Decorate 53(arg1) RelaxedPrecision
Decorate 55(arg2) RelaxedPrecision
Decorate 57(d) RelaxedPrecision
Decorate 59(lowfin) RelaxedPrecision
Decorate 61(mediumfin) RelaxedPrecision
Decorate 73(mediumfout) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -56,105 +56,105 @@ Linked fragment stage:
21: TypeVector 6(float) 4
22: TypePointer Input 21(fvec4)
23(highfin): 22(ptr) Variable Input
28: 14(bool) ConstantFalse
29: 14(bool) ConstantTrue
30: 15(bvec2) ConstantComposite 28 29
34: TypeInt 32 1
35: TypePointer Function 34(int)
37: TypePointer UniformConstant 34(int)
38(uniform_medium): 37(ptr) Variable UniformConstant
40(uniform_high): 37(ptr) Variable UniformConstant
46(uniform_low): 37(ptr) Variable UniformConstant
50: TypePointer Function 6(float)
52: 6(float) Constant 1078774989
54: 6(float) Constant 1232730691
56: TypePointer Input 6(float)
57(lowfin): 56(ptr) Variable Input
59(mediumfin): 56(ptr) Variable Input
62: TypePointer Private 6(float)
63(global_highp): 62(ptr) Variable Private
66: TypePointer Function 21(fvec4)
70: TypePointer Output 21(fvec4)
71(mediumfout): 70(ptr) Variable Output
80: 34(int) Constant 4
82: TypeVector 34(int) 2
90: TypeInt 32 0
91: 90(int) Constant 0
101: TypePointer UniformConstant 15(bvec2)
102(ub2): 101(ptr) Variable UniformConstant
109: 6(float) Constant 1065353216
29: 14(bool) ConstantFalse
30: 14(bool) ConstantTrue
31: 15(bvec2) ConstantComposite 29 30
36: TypeInt 32 1
37: TypePointer Function 36(int)
39: TypePointer UniformConstant 36(int)
40(uniform_medium): 39(ptr) Variable UniformConstant
42(uniform_high): 39(ptr) Variable UniformConstant
48(uniform_low): 39(ptr) Variable UniformConstant
52: TypePointer Function 6(float)
54: 6(float) Constant 1078774989
56: 6(float) Constant 1232730691
58: TypePointer Input 6(float)
59(lowfin): 58(ptr) Variable Input
61(mediumfin): 58(ptr) Variable Input
64: TypePointer Private 6(float)
65(global_highp): 64(ptr) Variable Private
68: TypePointer Function 21(fvec4)
72: TypePointer Output 21(fvec4)
73(mediumfout): 72(ptr) Variable Output
82: 36(int) Constant 4
84: TypeVector 36(int) 2
92: TypeInt 32 0
93: 92(int) Constant 0
103: TypePointer UniformConstant 15(bvec2)
104(ub2): 103(ptr) Variable UniformConstant
111: 6(float) Constant 1065353216
4(main): 2 Function None 3
5: Label
36(sum): 35(ptr) Variable Function
51(arg1): 50(ptr) Variable Function
53(arg2): 50(ptr) Variable Function
55(d): 50(ptr) Variable Function
67(local_highp): 66(ptr) Variable Function
103(param): 16(ptr) Variable Function
39: 34(int) Load 38(uniform_medium)
41: 34(int) Load 40(uniform_high)
42: 34(int) IAdd 39 41
Store 36(sum) 42
43: 34(int) Load 40(uniform_high)
44: 34(int) Load 36(sum)
45: 34(int) IAdd 44 43
Store 36(sum) 45
47: 34(int) Load 46(uniform_low)
48: 34(int) Load 36(sum)
49: 34(int) IAdd 48 47
Store 36(sum) 49
Store 51(arg1) 52
Store 53(arg2) 54
58: 6(float) Load 57(lowfin)
60: 6(float) Load 59(mediumfin)
61: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 58 60
Store 55(d) 61
64: 21(fvec4) Load 23(highfin)
65: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 64
Store 63(global_highp) 65
68: 6(float) Load 63(global_highp)
69: 21(fvec4) CompositeConstruct 68 68 68 68
Store 67(local_highp) 69
72: 6(float) Load 55(d)
73: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 72
74: 21(fvec4) CompositeConstruct 73 73 73 73
75: 6(float) Load 53(arg2)
38(sum): 37(ptr) Variable Function
53(arg1): 52(ptr) Variable Function
55(arg2): 52(ptr) Variable Function
57(d): 52(ptr) Variable Function
69(local_highp): 68(ptr) Variable Function
105(param): 16(ptr) Variable Function
41: 36(int) Load 40(uniform_medium)
43: 36(int) Load 42(uniform_high)
44: 36(int) IAdd 41 43
Store 38(sum) 44
45: 36(int) Load 42(uniform_high)
46: 36(int) Load 38(sum)
47: 36(int) IAdd 46 45
Store 38(sum) 47
49: 36(int) Load 48(uniform_low)
50: 36(int) Load 38(sum)
51: 36(int) IAdd 50 49
Store 38(sum) 51
Store 53(arg1) 54
Store 55(arg2) 56
60: 6(float) Load 59(lowfin)
62: 6(float) Load 61(mediumfin)
63: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 60 62
Store 57(d) 63
66: 21(fvec4) Load 23(highfin)
67: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 66
Store 65(global_highp) 67
70: 6(float) Load 65(global_highp)
71: 21(fvec4) CompositeConstruct 70 70 70 70
Store 69(local_highp) 71
74: 6(float) Load 57(d)
75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
76: 21(fvec4) CompositeConstruct 75 75 75 75
77: 21(fvec4) FAdd 74 76
78: 21(fvec4) Load 67(local_highp)
79: 21(fvec4) FAdd 77 78
Store 71(mediumfout) 79
81: 34(int) Load 46(uniform_low)
83: 82(ivec2) CompositeConstruct 81 81
84: 34(int) Load 40(uniform_high)
85: 82(ivec2) CompositeConstruct 84 84
86: 82(ivec2) IMul 83 85
87: 34(int) Load 40(uniform_high)
88: 82(ivec2) CompositeConstruct 87 87
89: 82(ivec2) IAdd 86 88
92: 34(int) CompositeExtract 89 0
93: 34(int) IAdd 80 92
94: 34(int) Load 36(sum)
95: 34(int) IAdd 94 93
Store 36(sum) 95
96: 34(int) Load 36(sum)
97: 6(float) ConvertSToF 96
98: 21(fvec4) CompositeConstruct 97 97 97 97
99: 21(fvec4) Load 71(mediumfout)
100: 21(fvec4) FAdd 99 98
Store 71(mediumfout) 100
104: 15(bvec2) Load 102(ub2)
Store 103(param) 104
105: 14(bool) FunctionCall 19(boolfun(vb2;) 103(param)
SelectionMerge 107 None
BranchConditional 105 106 107
106: Label
108: 21(fvec4) Load 71(mediumfout)
110: 21(fvec4) CompositeConstruct 109 109 109 109
111: 21(fvec4) FAdd 108 110
Store 71(mediumfout) 111
Branch 107
107: Label
77: 6(float) Load 55(arg2)
78: 21(fvec4) CompositeConstruct 77 77 77 77
79: 21(fvec4) FAdd 76 78
80: 21(fvec4) Load 69(local_highp)
81: 21(fvec4) FAdd 79 80
Store 73(mediumfout) 81
83: 36(int) Load 48(uniform_low)
85: 84(ivec2) CompositeConstruct 83 83
86: 36(int) Load 42(uniform_high)
87: 84(ivec2) CompositeConstruct 86 86
88: 84(ivec2) IMul 85 87
89: 36(int) Load 42(uniform_high)
90: 84(ivec2) CompositeConstruct 89 89
91: 84(ivec2) IAdd 88 90
94: 36(int) CompositeExtract 91 0
95: 36(int) IAdd 82 94
96: 36(int) Load 38(sum)
97: 36(int) IAdd 96 95
Store 38(sum) 97
98: 36(int) Load 38(sum)
99: 6(float) ConvertSToF 98
100: 21(fvec4) CompositeConstruct 99 99 99 99
101: 21(fvec4) Load 73(mediumfout)
102: 21(fvec4) FAdd 101 100
Store 73(mediumfout) 102
106: 15(bvec2) Load 104(ub2)
Store 105(param) 106
107: 14(bool) FunctionCall 19(boolfun(vb2;) 105(param)
SelectionMerge 109 None
BranchConditional 107 108 109
108: Label
110: 21(fvec4) Load 73(mediumfout)
112: 21(fvec4) CompositeConstruct 111 111 111 111
113: 21(fvec4) FAdd 110 112
Store 73(mediumfout) 113
Branch 109
109: Label
Return
FunctionEnd
12(foo(vf3;): 9(fvec2) Function None 10
@ -167,8 +167,8 @@ Linked fragment stage:
19(boolfun(vb2;): 14(bool) Function None 17
18(bv2): 16(ptr) FunctionParameter
20: Label
27: 15(bvec2) Load 18(bv2)
31: 15(bvec2) LogicalEqual 27 30
32: 14(bool) All 31
ReturnValue 32
28: 15(bvec2) Load 18(bv2)
32: 15(bvec2) LogicalEqual 28 31
33: 14(bool) All 32
ReturnValue 33
FunctionEnd

View File

@ -7,26 +7,26 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 143
// Id's are bound by 144
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 23
EntryPoint Fragment 4 "main" 12 24
ExecutionMode 4 OriginLowerLeft
Source GLSL 400
Name 4 "main"
Name 8 "foo("
Name 12 "of1"
Name 23 "of4"
Name 26 "ub"
Name 30 "ui"
Name 40 "uba"
Name 109 "uf"
Name 136 "uiv4"
Name 138 "uv4"
Name 141 "ub41"
Name 142 "ub42"
Name 24 "of4"
Name 27 "ub"
Name 31 "ui"
Name 41 "uba"
Name 110 "uf"
Name 137 "uiv4"
Name 139 "uv4"
Name 142 "ub41"
Name 143 "ub42"
2: TypeVoid
3: TypeFunction 2
6: TypeBool
@ -36,190 +36,190 @@ Linked fragment stage:
12(of1): 11(ptr) Variable Output
14: 10(float) Constant 1065353216
17: 10(float) Constant 1092616192
20: 10(float) Constant 0
21: TypeVector 10(float) 4
22: TypePointer Output 21(fvec4)
23(of4): 22(ptr) Variable Output
24: 21(fvec4) ConstantComposite 20 20 20 20
25: TypePointer UniformConstant 6(bool)
26(ub): 25(ptr) Variable UniformConstant
28: TypeInt 32 1
29: TypePointer UniformConstant 28(int)
30(ui): 29(ptr) Variable UniformConstant
32: 28(int) Constant 2
40(uba): 25(ptr) Variable UniformConstant
108: TypePointer UniformConstant 10(float)
109(uf): 108(ptr) Variable UniformConstant
112: 10(float) Constant 1082130432
134: TypeVector 28(int) 4
135: TypePointer UniformConstant 134(ivec4)
136(uiv4): 135(ptr) Variable UniformConstant
137: TypePointer UniformConstant 21(fvec4)
138(uv4): 137(ptr) Variable UniformConstant
139: TypeVector 6(bool) 4
140: TypePointer UniformConstant 139(bvec4)
141(ub41): 140(ptr) Variable UniformConstant
142(ub42): 140(ptr) Variable UniformConstant
21: 10(float) Constant 0
22: TypeVector 10(float) 4
23: TypePointer Output 22(fvec4)
24(of4): 23(ptr) Variable Output
25: 22(fvec4) ConstantComposite 21 21 21 21
26: TypePointer UniformConstant 6(bool)
27(ub): 26(ptr) Variable UniformConstant
29: TypeInt 32 1
30: TypePointer UniformConstant 29(int)
31(ui): 30(ptr) Variable UniformConstant
33: 29(int) Constant 2
41(uba): 26(ptr) Variable UniformConstant
109: TypePointer UniformConstant 10(float)
110(uf): 109(ptr) Variable UniformConstant
113: 10(float) Constant 1082130432
135: TypeVector 29(int) 4
136: TypePointer UniformConstant 135(ivec4)
137(uiv4): 136(ptr) Variable UniformConstant
138: TypePointer UniformConstant 22(fvec4)
139(uv4): 138(ptr) Variable UniformConstant
140: TypeVector 6(bool) 4
141: TypePointer UniformConstant 140(bvec4)
142(ub41): 141(ptr) Variable UniformConstant
143(ub42): 141(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
Store 12(of1) 20
Store 23(of4) 24
27: 6(bool) Load 26(ub)
31: 28(int) Load 30(ui)
33: 6(bool) SGreaterThan 31 32
34: 6(bool) LogicalOr 27 33
SelectionMerge 36 None
BranchConditional 34 35 36
35: Label
37: 10(float) Load 12(of1)
38: 10(float) FAdd 37 14
Store 12(of1) 38
Branch 36
36: Label
39: 6(bool) Load 26(ub)
41: 6(bool) Load 40(uba)
42: 6(bool) LogicalNot 41
43: 6(bool) LogicalAnd 39 42
SelectionMerge 45 None
BranchConditional 43 44 45
44: Label
46: 10(float) Load 12(of1)
47: 10(float) FAdd 46 14
Store 12(of1) 47
Branch 45
45: Label
48: 6(bool) Load 26(ub)
49: 6(bool) LogicalNot 48
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
52: 6(bool) FunctionCall 8(foo()
Branch 51
51: Label
53: 6(bool) Phi 48 45 52 50
SelectionMerge 55 None
BranchConditional 53 54 55
54: Label
56: 10(float) Load 12(of1)
57: 10(float) FAdd 56 14
Store 12(of1) 57
Branch 55
55: Label
58: 6(bool) Load 26(ub)
SelectionMerge 60 None
BranchConditional 58 59 60
59: Label
61: 6(bool) FunctionCall 8(foo()
Branch 60
60: Label
62: 6(bool) Phi 58 55 61 59
SelectionMerge 64 None
BranchConditional 62 63 64
63: Label
65: 10(float) Load 12(of1)
66: 10(float) FAdd 65 14
Store 12(of1) 66
Branch 64
64: Label
67: 6(bool) FunctionCall 8(foo()
68: 6(bool) Load 26(ub)
69: 6(bool) LogicalOr 67 68
SelectionMerge 71 None
BranchConditional 69 70 71
70: Label
72: 10(float) Load 12(of1)
73: 10(float) FAdd 72 14
Store 12(of1) 73
Branch 71
71: Label
74: 6(bool) FunctionCall 8(foo()
75: 6(bool) Load 26(ub)
76: 6(bool) LogicalAnd 74 75
SelectionMerge 78 None
BranchConditional 76 77 78
77: Label
79: 10(float) Load 12(of1)
80: 10(float) FAdd 79 14
Store 12(of1) 80
Branch 78
78: Label
81: 6(bool) Load 26(ub)
82: 6(bool) LogicalNot 81
SelectionMerge 84 None
BranchConditional 82 83 84
83: Label
85: 10(float) Load 12(of1)
86: 10(float) FAdd 85 14
Store 12(of1) 86
87: 6(bool) FOrdGreaterThan 86 14
Branch 84
84: Label
88: 6(bool) Phi 81 78 87 83
SelectionMerge 90 None
BranchConditional 88 89 90
89: Label
91: 21(fvec4) Load 23(of4)
92: 21(fvec4) CompositeConstruct 14 14 14 14
93: 21(fvec4) FAdd 91 92
Store 23(of4) 93
Branch 90
90: Label
94: 10(float) Load 12(of1)
95: 10(float) FAdd 94 14
Store 12(of1) 95
96: 6(bool) FOrdGreaterThan 95 14
97: 6(bool) Load 26(ub)
98: 6(bool) LogicalOr 96 97
SelectionMerge 100 None
BranchConditional 98 99 100
99: Label
101: 21(fvec4) Load 23(of4)
102: 21(fvec4) CompositeConstruct 14 14 14 14
103: 21(fvec4) FAdd 101 102
Store 23(of4) 103
Branch 100
100: Label
104: 6(bool) Load 26(ub)
105: 6(bool) LogicalNot 104
SelectionMerge 107 None
BranchConditional 105 106 107
106: Label
110: 10(float) Load 109(uf)
111: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 110
113: 10(float) FMul 111 112
114: 10(float) Load 12(of1)
115: 6(bool) FOrdGreaterThan 113 114
Branch 107
107: Label
116: 6(bool) Phi 104 100 115 106
SelectionMerge 118 None
BranchConditional 116 117 118
117: Label
119: 10(float) Load 12(of1)
120: 10(float) FAdd 119 14
Store 12(of1) 120
Branch 118
118: Label
121: 6(bool) Load 26(ub)
SelectionMerge 123 None
BranchConditional 121 122 123
122: Label
124: 10(float) Load 109(uf)
125: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 124
126: 10(float) FMul 125 112
127: 10(float) Load 12(of1)
128: 6(bool) FOrdGreaterThan 126 127
Branch 123
123: Label
129: 6(bool) Phi 121 118 128 122
SelectionMerge 131 None
BranchConditional 129 130 131
130: Label
132: 10(float) Load 12(of1)
133: 10(float) FAdd 132 14
Store 12(of1) 133
Branch 131
131: Label
Store 12(of1) 21
Store 24(of4) 25
28: 6(bool) Load 27(ub)
32: 29(int) Load 31(ui)
34: 6(bool) SGreaterThan 32 33
35: 6(bool) LogicalOr 28 34
SelectionMerge 37 None
BranchConditional 35 36 37
36: Label
38: 10(float) Load 12(of1)
39: 10(float) FAdd 38 14
Store 12(of1) 39
Branch 37
37: Label
40: 6(bool) Load 27(ub)
42: 6(bool) Load 41(uba)
43: 6(bool) LogicalNot 42
44: 6(bool) LogicalAnd 40 43
SelectionMerge 46 None
BranchConditional 44 45 46
45: Label
47: 10(float) Load 12(of1)
48: 10(float) FAdd 47 14
Store 12(of1) 48
Branch 46
46: Label
49: 6(bool) Load 27(ub)
50: 6(bool) LogicalNot 49
SelectionMerge 52 None
BranchConditional 50 51 52
51: Label
53: 6(bool) FunctionCall 8(foo()
Branch 52
52: Label
54: 6(bool) Phi 49 46 53 51
SelectionMerge 56 None
BranchConditional 54 55 56
55: Label
57: 10(float) Load 12(of1)
58: 10(float) FAdd 57 14
Store 12(of1) 58
Branch 56
56: Label
59: 6(bool) Load 27(ub)
SelectionMerge 61 None
BranchConditional 59 60 61
60: Label
62: 6(bool) FunctionCall 8(foo()
Branch 61
61: Label
63: 6(bool) Phi 59 56 62 60
SelectionMerge 65 None
BranchConditional 63 64 65
64: Label
66: 10(float) Load 12(of1)
67: 10(float) FAdd 66 14
Store 12(of1) 67
Branch 65
65: Label
68: 6(bool) FunctionCall 8(foo()
69: 6(bool) Load 27(ub)
70: 6(bool) LogicalOr 68 69
SelectionMerge 72 None
BranchConditional 70 71 72
71: Label
73: 10(float) Load 12(of1)
74: 10(float) FAdd 73 14
Store 12(of1) 74
Branch 72
72: Label
75: 6(bool) FunctionCall 8(foo()
76: 6(bool) Load 27(ub)
77: 6(bool) LogicalAnd 75 76
SelectionMerge 79 None
BranchConditional 77 78 79
78: Label
80: 10(float) Load 12(of1)
81: 10(float) FAdd 80 14
Store 12(of1) 81
Branch 79
79: Label
82: 6(bool) Load 27(ub)
83: 6(bool) LogicalNot 82
SelectionMerge 85 None
BranchConditional 83 84 85
84: Label
86: 10(float) Load 12(of1)
87: 10(float) FAdd 86 14
Store 12(of1) 87
88: 6(bool) FOrdGreaterThan 87 14
Branch 85
85: Label
89: 6(bool) Phi 82 79 88 84
SelectionMerge 91 None
BranchConditional 89 90 91
90: Label
92: 22(fvec4) Load 24(of4)
93: 22(fvec4) CompositeConstruct 14 14 14 14
94: 22(fvec4) FAdd 92 93
Store 24(of4) 94
Branch 91
91: Label
95: 10(float) Load 12(of1)
96: 10(float) FAdd 95 14
Store 12(of1) 96
97: 6(bool) FOrdGreaterThan 96 14
98: 6(bool) Load 27(ub)
99: 6(bool) LogicalOr 97 98
SelectionMerge 101 None
BranchConditional 99 100 101
100: Label
102: 22(fvec4) Load 24(of4)
103: 22(fvec4) CompositeConstruct 14 14 14 14
104: 22(fvec4) FAdd 102 103
Store 24(of4) 104
Branch 101
101: Label
105: 6(bool) Load 27(ub)
106: 6(bool) LogicalNot 105
SelectionMerge 108 None
BranchConditional 106 107 108
107: Label
111: 10(float) Load 110(uf)
112: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 111
114: 10(float) FMul 112 113
115: 10(float) Load 12(of1)
116: 6(bool) FOrdGreaterThan 114 115
Branch 108
108: Label
117: 6(bool) Phi 105 101 116 107
SelectionMerge 119 None
BranchConditional 117 118 119
118: Label
120: 10(float) Load 12(of1)
121: 10(float) FAdd 120 14
Store 12(of1) 121
Branch 119
119: Label
122: 6(bool) Load 27(ub)
SelectionMerge 124 None
BranchConditional 122 123 124
123: Label
125: 10(float) Load 110(uf)
126: 10(float) ExtInst 1(GLSL.std.450) 13(Sin) 125
127: 10(float) FMul 126 113
128: 10(float) Load 12(of1)
129: 6(bool) FOrdGreaterThan 127 128
Branch 124
124: Label
130: 6(bool) Phi 122 119 129 123
SelectionMerge 132 None
BranchConditional 130 131 132
131: Label
133: 10(float) Load 12(of1)
134: 10(float) FAdd 133 14
Store 12(of1) 134
Branch 132
132: Label
Return
FunctionEnd
8(foo(): 6(bool) Function None 7

View File

@ -7,20 +7,20 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 22
// Id's are bound by 23
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 12 16
EntryPoint Fragment 4 "main" 12 17
ExecutionMode 4 OriginLowerLeft
Source GLSL 150
Name 4 "main"
Name 9 "foo("
Name 12 "BaseColor"
Name 16 "gl_FragColor"
Name 19 "bigColor"
Name 21 "d"
Name 17 "gl_FragColor"
Name 20 "bigColor"
Name 22 "d"
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -28,16 +28,16 @@ Linked fragment stage:
8: TypeFunction 7(fvec4)
11: TypePointer Input 7(fvec4)
12(BaseColor): 11(ptr) Variable Input
15: TypePointer Output 7(fvec4)
16(gl_FragColor): 15(ptr) Variable Output
18: TypePointer UniformConstant 7(fvec4)
19(bigColor): 18(ptr) Variable UniformConstant
20: TypePointer UniformConstant 6(float)
21(d): 20(ptr) Variable UniformConstant
16: TypePointer Output 7(fvec4)
17(gl_FragColor): 16(ptr) Variable Output
19: TypePointer UniformConstant 7(fvec4)
20(bigColor): 19(ptr) Variable UniformConstant
21: TypePointer UniformConstant 6(float)
22(d): 21(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
17: 7(fvec4) FunctionCall 9(foo()
Store 16(gl_FragColor) 17
18: 7(fvec4) FunctionCall 9(foo()
Store 17(gl_FragColor) 18
Return
FunctionEnd
9(foo(): 7(fvec4) Function None 8

View File

@ -10,12 +10,12 @@ Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 265
// Id's are bound by 267
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 73 223
EntryPoint Fragment 4 "main" 75 225
ExecutionMode 4 OriginLowerLeft
Source ESSL 310
Name 4 "main"
@ -27,30 +27,30 @@ Linked fragment stage:
Name 17 "v1"
Name 18 "v2"
Name 19 "i1"
Name 58 "local"
Name 60 "c"
Name 71 "f"
Name 73 "x"
Name 127 "d"
Name 153 "i"
Name 172 "j"
Name 223 "color"
Name 229 "v"
Name 230 "param"
Name 60 "local"
Name 62 "c"
Name 73 "f"
Name 75 "x"
Name 129 "d"
Name 155 "i"
Name 174 "j"
Name 225 "color"
Name 231 "v"
Name 232 "param"
Name 234 "param"
Name 242 "param"
Name 236 "param"
Name 244 "param"
Name 246 "param"
Decorate 58(local) RelaxedPrecision
Decorate 60(c) RelaxedPrecision
Decorate 71(f) RelaxedPrecision
Decorate 73(x) RelaxedPrecision
Decorate 127(d) RelaxedPrecision
Decorate 153(i) RelaxedPrecision
Decorate 172(j) RelaxedPrecision
Decorate 223(color) RelaxedPrecision
Decorate 229(v) RelaxedPrecision
Name 248 "param"
Decorate 60(local) RelaxedPrecision
Decorate 62(c) RelaxedPrecision
Decorate 73(f) RelaxedPrecision
Decorate 75(x) RelaxedPrecision
Decorate 129(d) RelaxedPrecision
Decorate 155(i) RelaxedPrecision
Decorate 174(j) RelaxedPrecision
Decorate 225(color) RelaxedPrecision
Decorate 231(v) RelaxedPrecision
2: TypeVoid
3: TypeFunction 2
6: TypeFloat 32
@ -61,291 +61,291 @@ Linked fragment stage:
11: TypeFunction 7(fvec4) 8(ptr) 8(ptr) 10(ptr)
36: 6(float) Constant 0
37: 7(fvec4) ConstantComposite 36 36 36 36
47: 6(float) Constant 1065353216
48: 7(fvec4) ConstantComposite 47 47 47 47
59: TypePointer UniformConstant 9(int)
60(c): 59(ptr) Variable UniformConstant
63: 9(int) Constant 1
70: TypePointer Function 6(float)
72: TypePointer Input 6(float)
73(x): 72(ptr) Variable Input
127(d): 59(ptr) Variable UniformConstant
154: 9(int) Constant 0
160: 9(int) Constant 10
161: TypeBool
173: 9(int) Constant 20
179: 9(int) Constant 30
184: 6(float) Constant 1120429670
204: 6(float) Constant 1079739679
222: TypePointer Output 6(float)
223(color): 222(ptr) Variable Output
228: TypePointer UniformConstant 7(fvec4)
229(v): 228(ptr) Variable UniformConstant
237: TypeInt 32 0
238: 237(int) Constant 1
249: 237(int) Constant 2
48: 6(float) Constant 1065353216
49: 7(fvec4) ConstantComposite 48 48 48 48
61: TypePointer UniformConstant 9(int)
62(c): 61(ptr) Variable UniformConstant
65: 9(int) Constant 1
72: TypePointer Function 6(float)
74: TypePointer Input 6(float)
75(x): 74(ptr) Variable Input
129(d): 61(ptr) Variable UniformConstant
156: 9(int) Constant 0
162: 9(int) Constant 10
163: TypeBool
175: 9(int) Constant 20
181: 9(int) Constant 30
186: 6(float) Constant 1120429670
206: 6(float) Constant 1079739679
224: TypePointer Output 6(float)
225(color): 224(ptr) Variable Output
230: TypePointer UniformConstant 7(fvec4)
231(v): 230(ptr) Variable UniformConstant
239: TypeInt 32 0
240: 239(int) Constant 1
251: 239(int) Constant 2
4(main): 2 Function None 3
5: Label
58(local): 10(ptr) Variable Function
71(f): 70(ptr) Variable Function
153(i): 10(ptr) Variable Function
172(j): 10(ptr) Variable Function
230(param): 8(ptr) Variable Function
60(local): 10(ptr) Variable Function
73(f): 72(ptr) Variable Function
155(i): 10(ptr) Variable Function
174(j): 10(ptr) Variable Function
232(param): 8(ptr) Variable Function
234(param): 10(ptr) Variable Function
242(param): 8(ptr) Variable Function
234(param): 8(ptr) Variable Function
236(param): 10(ptr) Variable Function
244(param): 8(ptr) Variable Function
246(param): 10(ptr) Variable Function
61: 9(int) Load 60(c)
Store 58(local) 61
62: 9(int) Load 58(local)
64: 9(int) IAdd 62 63
Store 58(local) 64
65: 9(int) Load 60(c)
SelectionMerge 69 None
Switch 65 68
case 1: 66
case 2: 67
246(param): 8(ptr) Variable Function
248(param): 10(ptr) Variable Function
63: 9(int) Load 62(c)
Store 60(local) 63
64: 9(int) Load 60(local)
66: 9(int) IAdd 64 65
Store 60(local) 66
67: 9(int) Load 62(c)
SelectionMerge 71 None
Switch 67 70
case 1: 68
case 2: 69
70: Label
82: 6(float) Load 75(x)
83: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 82
Store 73(f) 83
Branch 71
68: Label
80: 6(float) Load 73(x)
81: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 80
Store 71(f) 81
Branch 69
66: Label
74: 6(float) Load 73(x)
75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74
Store 71(f) 75
Branch 69
67: Label
77: 6(float) Load 73(x)
78: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 77
Store 71(f) 78
Branch 69
69: Label
83: 9(int) Load 60(c)
SelectionMerge 87 None
Switch 83 86
case 1: 84
case 2: 85
76: 6(float) Load 75(x)
77: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 76
Store 73(f) 77
Branch 71
69: Label
79: 6(float) Load 75(x)
80: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 79
Store 73(f) 80
Branch 71
71: Label
85: 9(int) Load 62(c)
SelectionMerge 89 None
Switch 85 88
case 1: 86
case 2: 87
88: Label
99: 6(float) Load 75(x)
100: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 99
101: 6(float) Load 73(f)
102: 6(float) FAdd 101 100
Store 73(f) 102
Branch 89
86: Label
97: 6(float) Load 73(x)
98: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 97
99: 6(float) Load 71(f)
100: 6(float) FAdd 99 98
Store 71(f) 100
90: 6(float) Load 75(x)
91: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 90
92: 6(float) Load 73(f)
93: 6(float) FAdd 92 91
Store 73(f) 93
Branch 87
84: Label
88: 6(float) Load 73(x)
89: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 88
90: 6(float) Load 71(f)
91: 6(float) FAdd 90 89
Store 71(f) 91
Branch 85
85: Label
92: 6(float) Load 73(x)
93: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 92
94: 6(float) Load 71(f)
95: 6(float) FAdd 94 93
Store 71(f) 95
Branch 87
87: Label
102: 9(int) Load 60(c)
SelectionMerge 105 None
Switch 102 105
case 1: 103
case 2: 104
103: Label
106: 6(float) Load 73(x)
107: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 106
108: 6(float) Load 71(f)
109: 6(float) FAdd 108 107
Store 71(f) 109
Branch 105
104: Label
111: 6(float) Load 73(x)
112: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 111
113: 6(float) Load 71(f)
114: 6(float) FAdd 113 112
Store 71(f) 114
Branch 105
105: Label
117: 9(int) Load 60(c)
SelectionMerge 121 None
Switch 117 120
case 1: 118
case 2: 119
87: Label
94: 6(float) Load 75(x)
95: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 94
96: 6(float) Load 73(f)
97: 6(float) FAdd 96 95
Store 73(f) 97
Branch 89
89: Label
104: 9(int) Load 62(c)
SelectionMerge 107 None
Switch 104 107
case 1: 105
case 2: 106
105: Label
108: 6(float) Load 75(x)
109: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 108
110: 6(float) Load 73(f)
111: 6(float) FAdd 110 109
Store 73(f) 111
Branch 107
106: Label
113: 6(float) Load 75(x)
114: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 113
115: 6(float) Load 73(f)
116: 6(float) FAdd 115 114
Store 73(f) 116
Branch 107
107: Label
119: 9(int) Load 62(c)
SelectionMerge 123 None
Switch 119 122
case 1: 120
case 2: 121
122: Label
150: 6(float) Load 75(x)
151: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 150
152: 6(float) Load 73(f)
153: 6(float) FAdd 152 151
Store 73(f) 153
Branch 123
120: Label
148: 6(float) Load 73(x)
149: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 148
150: 6(float) Load 71(f)
151: 6(float) FAdd 150 149
Store 71(f) 151
Branch 121
118: Label
122: 6(float) Load 73(x)
123: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 122
124: 6(float) Load 71(f)
125: 6(float) FAdd 124 123
Store 71(f) 125
Branch 121
119: Label
128: 9(int) Load 127(d)
SelectionMerge 131 None
Switch 128 131
case 1: 129
case 2: 130
129: Label
132: 6(float) Load 73(x)
133: 6(float) Load 73(x)
134: 6(float) FMul 132 133
135: 6(float) Load 73(x)
124: 6(float) Load 75(x)
125: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 124
126: 6(float) Load 73(f)
127: 6(float) FAdd 126 125
Store 73(f) 127
Branch 123
121: Label
130: 9(int) Load 129(d)
SelectionMerge 133 None
Switch 130 133
case 1: 131
case 2: 132
131: Label
134: 6(float) Load 75(x)
135: 6(float) Load 75(x)
136: 6(float) FMul 134 135
137: 6(float) Load 71(f)
138: 6(float) FAdd 137 136
Store 71(f) 138
Branch 131
130: Label
140: 6(float) Load 73(x)
141: 6(float) Load 73(x)
142: 6(float) FMul 140 141
143: 6(float) Load 71(f)
144: 6(float) FAdd 143 142
Store 71(f) 144
Branch 131
131: Label
Branch 121
121: Label
Store 153(i) 154
Branch 155
155: Label
159: 9(int) Load 153(i)
162: 161(bool) SLessThan 159 160
LoopMerge 157 158 None
BranchConditional 162 156 157
156: Label
163: 9(int) Load 60(c)
SelectionMerge 167 None
Switch 163 166
case 1: 164
case 2: 165
166: Label
198: 6(float) Load 73(x)
199: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 198
200: 6(float) Load 71(f)
201: 6(float) FAdd 200 199
Store 71(f) 201
Branch 167
164: Label
168: 6(float) Load 73(x)
169: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 168
170: 6(float) Load 71(f)
171: 6(float) FAdd 170 169
Store 71(f) 171
Store 172(j) 173
Branch 174
174: Label
178: 9(int) Load 172(j)
180: 161(bool) SLessThan 178 179
LoopMerge 176 177 None
BranchConditional 180 175 176
175: Label
181: 6(float) Load 71(f)
182: 6(float) FAdd 181 47
Store 71(f) 182
183: 6(float) Load 71(f)
185: 161(bool) FOrdLessThan 183 184
SelectionMerge 187 None
BranchConditional 185 186 187
186: Label
Branch 176
187: Label
Branch 177
177: Label
189: 9(int) Load 172(j)
190: 9(int) IAdd 189 63
Store 172(j) 190
Branch 174
176: Label
Branch 167
165: Label
192: 6(float) Load 73(x)
193: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 192
194: 6(float) Load 71(f)
195: 6(float) FAdd 194 193
Store 71(f) 195
Branch 167
167: Label
203: 6(float) Load 71(f)
205: 161(bool) FOrdLessThan 203 204
SelectionMerge 207 None
BranchConditional 205 206 207
206: Label
Branch 157
207: Label
Branch 158
158: Label
209: 9(int) Load 153(i)
210: 9(int) IAdd 209 63
Store 153(i) 210
Branch 155
137: 6(float) Load 75(x)
138: 6(float) FMul 136 137
139: 6(float) Load 73(f)
140: 6(float) FAdd 139 138
Store 73(f) 140
Branch 133
132: Label
142: 6(float) Load 75(x)
143: 6(float) Load 75(x)
144: 6(float) FMul 142 143
145: 6(float) Load 73(f)
146: 6(float) FAdd 145 144
Store 73(f) 146
Branch 133
133: Label
Branch 123
123: Label
Store 155(i) 156
Branch 157
157: Label
211: 9(int) Load 60(c)
SelectionMerge 214 None
Switch 211 214
case 1: 212
case 2: 213
212: Label
215: 6(float) Load 73(x)
216: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 215
217: 6(float) Load 71(f)
218: 6(float) FAdd 217 216
Store 71(f) 218
Branch 214
213: Label
Branch 214
214: Label
224: 6(float) Load 71(f)
225: 9(int) Load 58(local)
226: 6(float) ConvertSToF 225
227: 6(float) FAdd 224 226
Store 223(color) 227
231: 7(fvec4) Load 229(v)
Store 230(param) 231
233: 7(fvec4) Load 229(v)
161: 9(int) Load 155(i)
164: 163(bool) SLessThan 161 162
LoopMerge 159 160 None
BranchConditional 164 158 159
158: Label
165: 9(int) Load 62(c)
SelectionMerge 169 None
Switch 165 168
case 1: 166
case 2: 167
168: Label
200: 6(float) Load 75(x)
201: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 200
202: 6(float) Load 73(f)
203: 6(float) FAdd 202 201
Store 73(f) 203
Branch 169
166: Label
170: 6(float) Load 75(x)
171: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 170
172: 6(float) Load 73(f)
173: 6(float) FAdd 172 171
Store 73(f) 173
Store 174(j) 175
Branch 176
176: Label
180: 9(int) Load 174(j)
182: 163(bool) SLessThan 180 181
LoopMerge 178 179 None
BranchConditional 182 177 178
177: Label
183: 6(float) Load 73(f)
184: 6(float) FAdd 183 48
Store 73(f) 184
185: 6(float) Load 73(f)
187: 163(bool) FOrdLessThan 185 186
SelectionMerge 189 None
BranchConditional 187 188 189
188: Label
Branch 178
189: Label
Branch 179
179: Label
191: 9(int) Load 174(j)
192: 9(int) IAdd 191 65
Store 174(j) 192
Branch 176
178: Label
Branch 169
167: Label
194: 6(float) Load 75(x)
195: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 194
196: 6(float) Load 73(f)
197: 6(float) FAdd 196 195
Store 73(f) 197
Branch 169
169: Label
205: 6(float) Load 73(f)
207: 163(bool) FOrdLessThan 205 206
SelectionMerge 209 None
BranchConditional 207 208 209
208: Label
Branch 159
209: Label
Branch 160
160: Label
211: 9(int) Load 155(i)
212: 9(int) IAdd 211 65
Store 155(i) 212
Branch 157
159: Label
213: 9(int) Load 62(c)
SelectionMerge 216 None
Switch 213 216
case 1: 214
case 2: 215
214: Label
217: 6(float) Load 75(x)
218: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 217
219: 6(float) Load 73(f)
220: 6(float) FAdd 219 218
Store 73(f) 220
Branch 216
215: Label
Branch 216
216: Label
226: 6(float) Load 73(f)
227: 9(int) Load 60(local)
228: 6(float) ConvertSToF 227
229: 6(float) FAdd 226 228
Store 225(color) 229
233: 7(fvec4) Load 231(v)
Store 232(param) 233
235: 9(int) Load 60(c)
235: 7(fvec4) Load 231(v)
Store 234(param) 235
236: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 230(param) 232(param) 234(param)
239: 6(float) CompositeExtract 236 1
240: 6(float) Load 223(color)
241: 6(float) FAdd 240 239
Store 223(color) 241
243: 7(fvec4) Load 229(v)
Store 242(param) 243
245: 7(fvec4) Load 229(v)
237: 9(int) Load 62(c)
Store 236(param) 237
238: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 232(param) 234(param) 236(param)
241: 6(float) CompositeExtract 238 1
242: 6(float) Load 225(color)
243: 6(float) FAdd 242 241
Store 225(color) 243
245: 7(fvec4) Load 231(v)
Store 244(param) 245
247: 9(int) Load 60(c)
247: 7(fvec4) Load 231(v)
Store 246(param) 247
248: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 242(param) 244(param) 246(param)
250: 6(float) CompositeExtract 248 2
251: 6(float) Load 223(color)
252: 6(float) FAdd 251 250
Store 223(color) 252
253: 9(int) Load 60(c)
SelectionMerge 256 None
Switch 253 255
case 0: 254
255: Label
Branch 256
254: Label
Branch 256
256: Label
260: 9(int) Load 60(c)
SelectionMerge 262 None
Switch 260 261
261: Label
Branch 262
262: Label
249: 9(int) Load 62(c)
Store 248(param) 249
250: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 244(param) 246(param) 248(param)
252: 6(float) CompositeExtract 250 2
253: 6(float) Load 225(color)
254: 6(float) FAdd 253 252
Store 225(color) 254
255: 9(int) Load 62(c)
SelectionMerge 258 None
Switch 255 257
case 0: 256
257: Label
Branch 258
256: Label
Branch 258
258: Label
262: 9(int) Load 62(c)
SelectionMerge 264 None
Switch 262 263
263: Label
Branch 264
264: Label
Return
FunctionEnd
15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11
@ -379,26 +379,26 @@ Linked fragment stage:
18(v2): 8(ptr) FunctionParameter
19(i1): 10(ptr) FunctionParameter
21: Label
39: 9(int) Load 19(i1)
SelectionMerge 44 None
Switch 39 44
case 0: 40
case 2: 41
case 1: 42
case 3: 43
40: Label
45: 7(fvec4) Load 17(v1)
ReturnValue 45
40: 9(int) Load 19(i1)
SelectionMerge 45 None
Switch 40 45
case 0: 41
case 2: 42
case 1: 43
case 3: 44
41: Label
ReturnValue 48
46: 7(fvec4) Load 17(v1)
ReturnValue 46
42: Label
50: 7(fvec4) Load 18(v2)
ReturnValue 50
ReturnValue 49
43: Label
52: 7(fvec4) Load 17(v1)
53: 7(fvec4) Load 18(v2)
54: 7(fvec4) FMul 52 53
ReturnValue 54
44: Label
51: 7(fvec4) Load 18(v2)
ReturnValue 51
44: Label
53: 7(fvec4) Load 17(v1)
54: 7(fvec4) Load 18(v2)
55: 7(fvec4) FMul 53 54
ReturnValue 55
45: Label
ReturnValue 37
FunctionEnd