SPV return from main: Simplify a legacy design such returns are not jumps to exit block.

Structured control-flow rules allow leaving the middle of a construct through
a return, but not through a jump to a block that does a return.

Addresses issue #58.
This commit is contained in:
John Kessenich
2015-09-14 20:58:02 -06:00
parent 5f5b205ce9
commit e770b3e6cf
74 changed files with 9648 additions and 9816 deletions

View File

@@ -5,7 +5,7 @@ Linked fragment stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 264
// Id's are bound by 263
Source GLSL 130
Capability Shader
@@ -14,333 +14,331 @@ Linked fragment stage:
EntryPoint Fragment 4 "main"
ExecutionMode 4 OriginLowerLeft
Name 4 "main"
Name 9 "b"
Name 11 "u_b"
Name 13 "i_b"
Name 18 "b2"
Name 20 "u_b2"
Name 23 "i_b2"
Name 36 "b3"
Name 38 "u_b3"
Name 41 "i_b3"
Name 60 "b4"
Name 62 "u_b4"
Name 65 "i_b4"
Name 90 "i"
Name 92 "u_i"
Name 95 "i_i"
Name 100 "i2"
Name 102 "u_i2"
Name 105 "i_i2"
Name 110 "i3"
Name 112 "u_i3"
Name 115 "i_i3"
Name 120 "i4"
Name 122 "u_i4"
Name 125 "i_i4"
Name 130 "f"
Name 132 "u_f"
Name 135 "i_f"
Name 140 "f2"
Name 142 "u_f2"
Name 145 "i_f2"
Name 150 "f3"
Name 152 "u_f3"
Name 155 "i_f3"
Name 160 "f4"
Name 162 "u_f4"
Name 165 "i_f4"
Name 169 "gl_FragColor"
Decorate 95(i_i) Flat
Decorate 105(i_i2) Flat
Decorate 115(i_i3) Flat
Decorate 125(i_i4) Flat
Decorate 135(i_f) Smooth
Decorate 145(i_f2) Smooth
Decorate 155(i_f3) Smooth
Decorate 165(i_f4) Smooth
Decorate 169(gl_FragColor) BuiltIn FragColor
Name 8 "b"
Name 10 "u_b"
Name 12 "i_b"
Name 17 "b2"
Name 19 "u_b2"
Name 22 "i_b2"
Name 35 "b3"
Name 37 "u_b3"
Name 40 "i_b3"
Name 59 "b4"
Name 61 "u_b4"
Name 64 "i_b4"
Name 89 "i"
Name 91 "u_i"
Name 94 "i_i"
Name 99 "i2"
Name 101 "u_i2"
Name 104 "i_i2"
Name 109 "i3"
Name 111 "u_i3"
Name 114 "i_i3"
Name 119 "i4"
Name 121 "u_i4"
Name 124 "i_i4"
Name 129 "f"
Name 131 "u_f"
Name 134 "i_f"
Name 139 "f2"
Name 141 "u_f2"
Name 144 "i_f2"
Name 149 "f3"
Name 151 "u_f3"
Name 154 "i_f3"
Name 159 "f4"
Name 161 "u_f4"
Name 164 "i_f4"
Name 168 "gl_FragColor"
Decorate 94(i_i) Flat
Decorate 104(i_i2) Flat
Decorate 114(i_i3) Flat
Decorate 124(i_i4) Flat
Decorate 134(i_f) Smooth
Decorate 144(i_f2) Smooth
Decorate 154(i_f3) Smooth
Decorate 164(i_f4) Smooth
Decorate 168(gl_FragColor) BuiltIn FragColor
2: TypeVoid
3: TypeFunction 2
7: TypeBool
8: TypePointer Function 7(bool)
10: TypePointer UniformConstant 7(bool)
11(u_b): 10(ptr) Variable UniformConstant
13(i_b): 10(ptr) Variable UniformConstant
16: TypeVector 7(bool) 2
17: TypePointer Function 16(bvec2)
19: TypePointer UniformConstant 16(bvec2)
20(u_b2): 19(ptr) Variable UniformConstant
23(i_b2): 19(ptr) Variable UniformConstant
34: TypeVector 7(bool) 3
35: TypePointer Function 34(bvec3)
37: TypePointer UniformConstant 34(bvec3)
38(u_b3): 37(ptr) Variable UniformConstant
41(i_b3): 37(ptr) Variable UniformConstant
58: TypeVector 7(bool) 4
59: TypePointer Function 58(bvec4)
61: TypePointer UniformConstant 58(bvec4)
62(u_b4): 61(ptr) Variable UniformConstant
65(i_b4): 61(ptr) Variable UniformConstant
88: TypeInt 32 1
89: TypePointer Function 88(int)
91: TypePointer UniformConstant 88(int)
92(u_i): 91(ptr) Variable UniformConstant
94: TypePointer Input 88(int)
95(i_i): 94(ptr) Variable Input
98: TypeVector 88(int) 2
99: TypePointer Function 98(ivec2)
101: TypePointer UniformConstant 98(ivec2)
102(u_i2): 101(ptr) Variable UniformConstant
104: TypePointer Input 98(ivec2)
105(i_i2): 104(ptr) Variable Input
108: TypeVector 88(int) 3
109: TypePointer Function 108(ivec3)
111: TypePointer UniformConstant 108(ivec3)
112(u_i3): 111(ptr) Variable UniformConstant
114: TypePointer Input 108(ivec3)
115(i_i3): 114(ptr) Variable Input
118: TypeVector 88(int) 4
119: TypePointer Function 118(ivec4)
121: TypePointer UniformConstant 118(ivec4)
122(u_i4): 121(ptr) Variable UniformConstant
124: TypePointer Input 118(ivec4)
125(i_i4): 124(ptr) Variable Input
128: TypeFloat 32
129: TypePointer Function 128(float)
131: TypePointer UniformConstant 128(float)
132(u_f): 131(ptr) Variable UniformConstant
134: TypePointer Input 128(float)
135(i_f): 134(ptr) Variable Input
138: TypeVector 128(float) 2
139: TypePointer Function 138(fvec2)
141: TypePointer UniformConstant 138(fvec2)
142(u_f2): 141(ptr) Variable UniformConstant
144: TypePointer Input 138(fvec2)
145(i_f2): 144(ptr) Variable Input
148: TypeVector 128(float) 3
149: TypePointer Function 148(fvec3)
151: TypePointer UniformConstant 148(fvec3)
152(u_f3): 151(ptr) Variable UniformConstant
154: TypePointer Input 148(fvec3)
155(i_f3): 154(ptr) Variable Input
158: TypeVector 128(float) 4
159: TypePointer Function 158(fvec4)
161: TypePointer UniformConstant 158(fvec4)
162(u_f4): 161(ptr) Variable UniformConstant
164: TypePointer Input 158(fvec4)
165(i_f4): 164(ptr) Variable Input
168: TypePointer Output 158(fvec4)
169(gl_FragColor): 168(ptr) Variable Output
261: 128(float) Constant 1065353216
262: 158(fvec4) ConstantComposite 261 261 261 261
6: TypeBool
7: TypePointer Function 6(bool)
9: TypePointer UniformConstant 6(bool)
10(u_b): 9(ptr) Variable UniformConstant
12(i_b): 9(ptr) Variable UniformConstant
15: TypeVector 6(bool) 2
16: TypePointer Function 15(bvec2)
18: TypePointer UniformConstant 15(bvec2)
19(u_b2): 18(ptr) Variable UniformConstant
22(i_b2): 18(ptr) Variable UniformConstant
33: TypeVector 6(bool) 3
34: TypePointer Function 33(bvec3)
36: TypePointer UniformConstant 33(bvec3)
37(u_b3): 36(ptr) Variable UniformConstant
40(i_b3): 36(ptr) Variable UniformConstant
57: TypeVector 6(bool) 4
58: TypePointer Function 57(bvec4)
60: TypePointer UniformConstant 57(bvec4)
61(u_b4): 60(ptr) Variable UniformConstant
64(i_b4): 60(ptr) Variable UniformConstant
87: TypeInt 32 1
88: TypePointer Function 87(int)
90: TypePointer UniformConstant 87(int)
91(u_i): 90(ptr) Variable UniformConstant
93: TypePointer Input 87(int)
94(i_i): 93(ptr) Variable Input
97: TypeVector 87(int) 2
98: TypePointer Function 97(ivec2)
100: TypePointer UniformConstant 97(ivec2)
101(u_i2): 100(ptr) Variable UniformConstant
103: TypePointer Input 97(ivec2)
104(i_i2): 103(ptr) Variable Input
107: TypeVector 87(int) 3
108: TypePointer Function 107(ivec3)
110: TypePointer UniformConstant 107(ivec3)
111(u_i3): 110(ptr) Variable UniformConstant
113: TypePointer Input 107(ivec3)
114(i_i3): 113(ptr) Variable Input
117: TypeVector 87(int) 4
118: TypePointer Function 117(ivec4)
120: TypePointer UniformConstant 117(ivec4)
121(u_i4): 120(ptr) Variable UniformConstant
123: TypePointer Input 117(ivec4)
124(i_i4): 123(ptr) Variable Input
127: TypeFloat 32
128: TypePointer Function 127(float)
130: TypePointer UniformConstant 127(float)
131(u_f): 130(ptr) Variable UniformConstant
133: TypePointer Input 127(float)
134(i_f): 133(ptr) Variable Input
137: TypeVector 127(float) 2
138: TypePointer Function 137(fvec2)
140: TypePointer UniformConstant 137(fvec2)
141(u_f2): 140(ptr) Variable UniformConstant
143: TypePointer Input 137(fvec2)
144(i_f2): 143(ptr) Variable Input
147: TypeVector 127(float) 3
148: TypePointer Function 147(fvec3)
150: TypePointer UniformConstant 147(fvec3)
151(u_f3): 150(ptr) Variable UniformConstant
153: TypePointer Input 147(fvec3)
154(i_f3): 153(ptr) Variable Input
157: TypeVector 127(float) 4
158: TypePointer Function 157(fvec4)
160: TypePointer UniformConstant 157(fvec4)
161(u_f4): 160(ptr) Variable UniformConstant
163: TypePointer Input 157(fvec4)
164(i_f4): 163(ptr) Variable Input
167: TypePointer Output 157(fvec4)
168(gl_FragColor): 167(ptr) Variable Output
260: 127(float) Constant 1065353216
261: 157(fvec4) ConstantComposite 260 260 260 260
4(main): 2 Function None 3
5: Label
9(b): 8(ptr) Variable Function
18(b2): 17(ptr) Variable Function
36(b3): 35(ptr) Variable Function
60(b4): 59(ptr) Variable Function
90(i): 89(ptr) Variable Function
100(i2): 99(ptr) Variable Function
110(i3): 109(ptr) Variable Function
120(i4): 119(ptr) Variable Function
130(f): 129(ptr) Variable Function
140(f2): 139(ptr) Variable Function
150(f3): 149(ptr) Variable Function
160(f4): 159(ptr) Variable Function
170: 159(ptr) Variable Function
12: 7(bool) Load 11(u_b)
14: 7(bool) Load 13(i_b)
15: 7(bool) LogicalAnd 12 14
Store 9(b) 15
21: 16(bvec2) Load 20(u_b2)
22: 7(bool) CompositeExtract 21 0
24: 16(bvec2) Load 23(i_b2)
25: 7(bool) CompositeExtract 24 0
26: 7(bool) LogicalAnd 22 25
27: 16(bvec2) Load 20(u_b2)
28: 7(bool) CompositeExtract 27 1
29: 7(bool) LogicalAnd 26 28
30: 16(bvec2) Load 23(i_b2)
31: 7(bool) CompositeExtract 30 1
32: 7(bool) LogicalAnd 29 31
33: 16(bvec2) CompositeConstruct 32 32
Store 18(b2) 33
39: 34(bvec3) Load 38(u_b3)
40: 7(bool) CompositeExtract 39 0
42: 34(bvec3) Load 41(i_b3)
43: 7(bool) CompositeExtract 42 0
44: 7(bool) LogicalAnd 40 43
45: 34(bvec3) Load 38(u_b3)
46: 7(bool) CompositeExtract 45 1
47: 7(bool) LogicalAnd 44 46
48: 34(bvec3) Load 41(i_b3)
49: 7(bool) CompositeExtract 48 1
50: 7(bool) LogicalAnd 47 49
51: 34(bvec3) Load 38(u_b3)
52: 7(bool) CompositeExtract 51 2
53: 7(bool) LogicalAnd 50 52
54: 34(bvec3) Load 41(i_b3)
55: 7(bool) CompositeExtract 54 2
56: 7(bool) LogicalAnd 53 55
57: 34(bvec3) CompositeConstruct 56 56 56
Store 36(b3) 57
63: 58(bvec4) Load 62(u_b4)
64: 7(bool) CompositeExtract 63 0
66: 58(bvec4) Load 65(i_b4)
67: 7(bool) CompositeExtract 66 0
68: 7(bool) LogicalAnd 64 67
69: 58(bvec4) Load 62(u_b4)
70: 7(bool) CompositeExtract 69 1
71: 7(bool) LogicalAnd 68 70
72: 58(bvec4) Load 65(i_b4)
73: 7(bool) CompositeExtract 72 1
74: 7(bool) LogicalAnd 71 73
75: 58(bvec4) Load 62(u_b4)
76: 7(bool) CompositeExtract 75 2
77: 7(bool) LogicalAnd 74 76
78: 58(bvec4) Load 65(i_b4)
79: 7(bool) CompositeExtract 78 2
80: 7(bool) LogicalAnd 77 79
81: 58(bvec4) Load 62(u_b4)
82: 7(bool) CompositeExtract 81 3
83: 7(bool) LogicalAnd 80 82
84: 58(bvec4) Load 65(i_b4)
85: 7(bool) CompositeExtract 84 3
86: 7(bool) LogicalAnd 83 85
87: 58(bvec4) CompositeConstruct 86 86 86 86
Store 60(b4) 87
93: 88(int) Load 92(u_i)
96: 88(int) Load 95(i_i)
97: 88(int) IAdd 93 96
Store 90(i) 97
103: 98(ivec2) Load 102(u_i2)
106: 98(ivec2) Load 105(i_i2)
107: 98(ivec2) IAdd 103 106
Store 100(i2) 107
113: 108(ivec3) Load 112(u_i3)
116: 108(ivec3) Load 115(i_i3)
117: 108(ivec3) IAdd 113 116
Store 110(i3) 117
123: 118(ivec4) Load 122(u_i4)
126: 118(ivec4) Load 125(i_i4)
127: 118(ivec4) IAdd 123 126
Store 120(i4) 127
133: 128(float) Load 132(u_f)
136: 128(float) Load 135(i_f)
137: 128(float) FAdd 133 136
Store 130(f) 137
143: 138(fvec2) Load 142(u_f2)
146: 138(fvec2) Load 145(i_f2)
147: 138(fvec2) FAdd 143 146
Store 140(f2) 147
153: 148(fvec3) Load 152(u_f3)
156: 148(fvec3) Load 155(i_f3)
157: 148(fvec3) FAdd 153 156
Store 150(f3) 157
163: 158(fvec4) Load 162(u_f4)
166: 158(fvec4) Load 165(i_f4)
167: 158(fvec4) FAdd 163 166
Store 160(f4) 167
171: 7(bool) Load 9(b)
172: 16(bvec2) Load 18(b2)
173: 7(bool) CompositeExtract 172 0
174: 7(bool) LogicalOr 171 173
175: 16(bvec2) Load 18(b2)
176: 7(bool) CompositeExtract 175 1
177: 7(bool) LogicalOr 174 176
178: 34(bvec3) Load 36(b3)
179: 7(bool) CompositeExtract 178 0
180: 7(bool) LogicalOr 177 179
181: 34(bvec3) Load 36(b3)
182: 7(bool) CompositeExtract 181 1
183: 7(bool) LogicalOr 180 182
184: 34(bvec3) Load 36(b3)
185: 7(bool) CompositeExtract 184 2
186: 7(bool) LogicalOr 183 185
187: 58(bvec4) Load 60(b4)
188: 7(bool) CompositeExtract 187 0
189: 7(bool) LogicalOr 186 188
190: 58(bvec4) Load 60(b4)
191: 7(bool) CompositeExtract 190 1
192: 7(bool) LogicalOr 189 191
193: 58(bvec4) Load 60(b4)
194: 7(bool) CompositeExtract 193 2
195: 7(bool) LogicalOr 192 194
196: 58(bvec4) Load 60(b4)
197: 7(bool) CompositeExtract 196 3
198: 7(bool) LogicalOr 195 197
SelectionMerge 200 None
BranchConditional 198 199 260
199: Label
201: 88(int) Load 90(i)
202: 98(ivec2) Load 100(i2)
203: 88(int) CompositeExtract 202 0
204: 88(int) IAdd 201 203
205: 98(ivec2) Load 100(i2)
206: 88(int) CompositeExtract 205 1
207: 88(int) IAdd 204 206
208: 108(ivec3) Load 110(i3)
209: 88(int) CompositeExtract 208 0
210: 88(int) IAdd 207 209
211: 108(ivec3) Load 110(i3)
212: 88(int) CompositeExtract 211 1
213: 88(int) IAdd 210 212
214: 108(ivec3) Load 110(i3)
215: 88(int) CompositeExtract 214 2
216: 88(int) IAdd 213 215
217: 118(ivec4) Load 120(i4)
218: 88(int) CompositeExtract 217 0
219: 88(int) IAdd 216 218
220: 118(ivec4) Load 120(i4)
221: 88(int) CompositeExtract 220 1
222: 88(int) IAdd 219 221
223: 118(ivec4) Load 120(i4)
224: 88(int) CompositeExtract 223 2
225: 88(int) IAdd 222 224
226: 118(ivec4) Load 120(i4)
227: 88(int) CompositeExtract 226 3
228: 88(int) IAdd 225 227
229: 128(float) ConvertSToF 228
230: 128(float) Load 130(f)
231: 128(float) FAdd 229 230
232: 138(fvec2) Load 140(f2)
233: 128(float) CompositeExtract 232 0
234: 128(float) FAdd 231 233
235: 138(fvec2) Load 140(f2)
236: 128(float) CompositeExtract 235 1
237: 128(float) FAdd 234 236
238: 148(fvec3) Load 150(f3)
239: 128(float) CompositeExtract 238 0
240: 128(float) FAdd 237 239
241: 148(fvec3) Load 150(f3)
242: 128(float) CompositeExtract 241 1
243: 128(float) FAdd 240 242
244: 148(fvec3) Load 150(f3)
245: 128(float) CompositeExtract 244 2
246: 128(float) FAdd 243 245
247: 158(fvec4) Load 160(f4)
248: 128(float) CompositeExtract 247 0
249: 128(float) FAdd 246 248
250: 158(fvec4) Load 160(f4)
251: 128(float) CompositeExtract 250 1
252: 128(float) FAdd 249 251
253: 158(fvec4) Load 160(f4)
254: 128(float) CompositeExtract 253 2
255: 128(float) FAdd 252 254
256: 158(fvec4) Load 160(f4)
257: 128(float) CompositeExtract 256 3
258: 128(float) FAdd 255 257
259: 158(fvec4) CompositeConstruct 258 258 258 258
Store 170 259
Branch 200
260: Label
Store 170 262
Branch 200
200: Label
263: 158(fvec4) Load 170
Store 169(gl_FragColor) 263
Branch 6
6: Label
8(b): 7(ptr) Variable Function
17(b2): 16(ptr) Variable Function
35(b3): 34(ptr) Variable Function
59(b4): 58(ptr) Variable Function
89(i): 88(ptr) Variable Function
99(i2): 98(ptr) Variable Function
109(i3): 108(ptr) Variable Function
119(i4): 118(ptr) Variable Function
129(f): 128(ptr) Variable Function
139(f2): 138(ptr) Variable Function
149(f3): 148(ptr) Variable Function
159(f4): 158(ptr) Variable Function
169: 158(ptr) Variable Function
11: 6(bool) Load 10(u_b)
13: 6(bool) Load 12(i_b)
14: 6(bool) LogicalAnd 11 13
Store 8(b) 14
20: 15(bvec2) Load 19(u_b2)
21: 6(bool) CompositeExtract 20 0
23: 15(bvec2) Load 22(i_b2)
24: 6(bool) CompositeExtract 23 0
25: 6(bool) LogicalAnd 21 24
26: 15(bvec2) Load 19(u_b2)
27: 6(bool) CompositeExtract 26 1
28: 6(bool) LogicalAnd 25 27
29: 15(bvec2) Load 22(i_b2)
30: 6(bool) CompositeExtract 29 1
31: 6(bool) LogicalAnd 28 30
32: 15(bvec2) CompositeConstruct 31 31
Store 17(b2) 32
38: 33(bvec3) Load 37(u_b3)
39: 6(bool) CompositeExtract 38 0
41: 33(bvec3) Load 40(i_b3)
42: 6(bool) CompositeExtract 41 0
43: 6(bool) LogicalAnd 39 42
44: 33(bvec3) Load 37(u_b3)
45: 6(bool) CompositeExtract 44 1
46: 6(bool) LogicalAnd 43 45
47: 33(bvec3) Load 40(i_b3)
48: 6(bool) CompositeExtract 47 1
49: 6(bool) LogicalAnd 46 48
50: 33(bvec3) Load 37(u_b3)
51: 6(bool) CompositeExtract 50 2
52: 6(bool) LogicalAnd 49 51
53: 33(bvec3) Load 40(i_b3)
54: 6(bool) CompositeExtract 53 2
55: 6(bool) LogicalAnd 52 54
56: 33(bvec3) CompositeConstruct 55 55 55
Store 35(b3) 56
62: 57(bvec4) Load 61(u_b4)
63: 6(bool) CompositeExtract 62 0
65: 57(bvec4) Load 64(i_b4)
66: 6(bool) CompositeExtract 65 0
67: 6(bool) LogicalAnd 63 66
68: 57(bvec4) Load 61(u_b4)
69: 6(bool) CompositeExtract 68 1
70: 6(bool) LogicalAnd 67 69
71: 57(bvec4) Load 64(i_b4)
72: 6(bool) CompositeExtract 71 1
73: 6(bool) LogicalAnd 70 72
74: 57(bvec4) Load 61(u_b4)
75: 6(bool) CompositeExtract 74 2
76: 6(bool) LogicalAnd 73 75
77: 57(bvec4) Load 64(i_b4)
78: 6(bool) CompositeExtract 77 2
79: 6(bool) LogicalAnd 76 78
80: 57(bvec4) Load 61(u_b4)
81: 6(bool) CompositeExtract 80 3
82: 6(bool) LogicalAnd 79 81
83: 57(bvec4) Load 64(i_b4)
84: 6(bool) CompositeExtract 83 3
85: 6(bool) LogicalAnd 82 84
86: 57(bvec4) CompositeConstruct 85 85 85 85
Store 59(b4) 86
92: 87(int) Load 91(u_i)
95: 87(int) Load 94(i_i)
96: 87(int) IAdd 92 95
Store 89(i) 96
102: 97(ivec2) Load 101(u_i2)
105: 97(ivec2) Load 104(i_i2)
106: 97(ivec2) IAdd 102 105
Store 99(i2) 106
112: 107(ivec3) Load 111(u_i3)
115: 107(ivec3) Load 114(i_i3)
116: 107(ivec3) IAdd 112 115
Store 109(i3) 116
122: 117(ivec4) Load 121(u_i4)
125: 117(ivec4) Load 124(i_i4)
126: 117(ivec4) IAdd 122 125
Store 119(i4) 126
132: 127(float) Load 131(u_f)
135: 127(float) Load 134(i_f)
136: 127(float) FAdd 132 135
Store 129(f) 136
142: 137(fvec2) Load 141(u_f2)
145: 137(fvec2) Load 144(i_f2)
146: 137(fvec2) FAdd 142 145
Store 139(f2) 146
152: 147(fvec3) Load 151(u_f3)
155: 147(fvec3) Load 154(i_f3)
156: 147(fvec3) FAdd 152 155
Store 149(f3) 156
162: 157(fvec4) Load 161(u_f4)
165: 157(fvec4) Load 164(i_f4)
166: 157(fvec4) FAdd 162 165
Store 159(f4) 166
170: 6(bool) Load 8(b)
171: 15(bvec2) Load 17(b2)
172: 6(bool) CompositeExtract 171 0
173: 6(bool) LogicalOr 170 172
174: 15(bvec2) Load 17(b2)
175: 6(bool) CompositeExtract 174 1
176: 6(bool) LogicalOr 173 175
177: 33(bvec3) Load 35(b3)
178: 6(bool) CompositeExtract 177 0
179: 6(bool) LogicalOr 176 178
180: 33(bvec3) Load 35(b3)
181: 6(bool) CompositeExtract 180 1
182: 6(bool) LogicalOr 179 181
183: 33(bvec3) Load 35(b3)
184: 6(bool) CompositeExtract 183 2
185: 6(bool) LogicalOr 182 184
186: 57(bvec4) Load 59(b4)
187: 6(bool) CompositeExtract 186 0
188: 6(bool) LogicalOr 185 187
189: 57(bvec4) Load 59(b4)
190: 6(bool) CompositeExtract 189 1
191: 6(bool) LogicalOr 188 190
192: 57(bvec4) Load 59(b4)
193: 6(bool) CompositeExtract 192 2
194: 6(bool) LogicalOr 191 193
195: 57(bvec4) Load 59(b4)
196: 6(bool) CompositeExtract 195 3
197: 6(bool) LogicalOr 194 196
SelectionMerge 199 None
BranchConditional 197 198 259
198: Label
200: 87(int) Load 89(i)
201: 97(ivec2) Load 99(i2)
202: 87(int) CompositeExtract 201 0
203: 87(int) IAdd 200 202
204: 97(ivec2) Load 99(i2)
205: 87(int) CompositeExtract 204 1
206: 87(int) IAdd 203 205
207: 107(ivec3) Load 109(i3)
208: 87(int) CompositeExtract 207 0
209: 87(int) IAdd 206 208
210: 107(ivec3) Load 109(i3)
211: 87(int) CompositeExtract 210 1
212: 87(int) IAdd 209 211
213: 107(ivec3) Load 109(i3)
214: 87(int) CompositeExtract 213 2
215: 87(int) IAdd 212 214
216: 117(ivec4) Load 119(i4)
217: 87(int) CompositeExtract 216 0
218: 87(int) IAdd 215 217
219: 117(ivec4) Load 119(i4)
220: 87(int) CompositeExtract 219 1
221: 87(int) IAdd 218 220
222: 117(ivec4) Load 119(i4)
223: 87(int) CompositeExtract 222 2
224: 87(int) IAdd 221 223
225: 117(ivec4) Load 119(i4)
226: 87(int) CompositeExtract 225 3
227: 87(int) IAdd 224 226
228: 127(float) ConvertSToF 227
229: 127(float) Load 129(f)
230: 127(float) FAdd 228 229
231: 137(fvec2) Load 139(f2)
232: 127(float) CompositeExtract 231 0
233: 127(float) FAdd 230 232
234: 137(fvec2) Load 139(f2)
235: 127(float) CompositeExtract 234 1
236: 127(float) FAdd 233 235
237: 147(fvec3) Load 149(f3)
238: 127(float) CompositeExtract 237 0
239: 127(float) FAdd 236 238
240: 147(fvec3) Load 149(f3)
241: 127(float) CompositeExtract 240 1
242: 127(float) FAdd 239 241
243: 147(fvec3) Load 149(f3)
244: 127(float) CompositeExtract 243 2
245: 127(float) FAdd 242 244
246: 157(fvec4) Load 159(f4)
247: 127(float) CompositeExtract 246 0
248: 127(float) FAdd 245 247
249: 157(fvec4) Load 159(f4)
250: 127(float) CompositeExtract 249 1
251: 127(float) FAdd 248 250
252: 157(fvec4) Load 159(f4)
253: 127(float) CompositeExtract 252 2
254: 127(float) FAdd 251 253
255: 157(fvec4) Load 159(f4)
256: 127(float) CompositeExtract 255 3
257: 127(float) FAdd 254 256
258: 157(fvec4) CompositeConstruct 257 257 257 257
Store 169 258
Branch 199
259: Label
Store 169 261
Branch 199
199: Label
262: 157(fvec4) Load 169
Store 168(gl_FragColor) 262
Return
FunctionEnd