Generate correctly structured do-while loops.

The loop test is always emitted before the loop body.

For do-while loops, use a phi node to track whether we're
on the first loop iteration, and only check the loop test
on the second and subsequent iterations.

For do-while loops, the loop test branch no longer occurs
at the top of the loop, so it must get its own selection
merge instruction.

A block can't be the target of more than one merge instruction.
So when the loop test executes after the body (as in do-while in GLSL)
we need to introduce a dummy block to be the target of the selection
merge just before the loop test conditional branch.

The other arm of the branch exits the loop and hence is the
"break block" exception in the structured control flow rules.
This commit is contained in:
David Neto
2015-07-15 16:21:26 -04:00
parent 51b31b5785
commit c22f37cfb4
8 changed files with 1486 additions and 1373 deletions

View File

@@ -7,7 +7,7 @@ Linked fragment stage:
// Module Version 99
// Generated by (magic number): 51a00bb
// Id's are bound by 192
// Id's are bound by 196
Source GLSL 130
1: ExtInstImport "GLSL.std.450"
@@ -16,98 +16,98 @@ Linked fragment stage:
Name 4 "main"
Name 10 "color"
Name 12 "BaseColor"
Name 19 "bigColor4"
Name 26 "d4"
Name 79 "d13"
Name 145 "gl_FragColor"
Name 147 "bigColor"
Name 148 "bigColor1_1"
Name 149 "bigColor1_2"
Name 150 "bigColor1_3"
Name 151 "bigColor2"
Name 152 "bigColor3"
Name 153 "bigColor5"
Name 154 "bigColor6"
Name 155 "bigColor7"
Name 156 "bigColor8"
Name 157 "d"
Name 158 "d2"
Name 159 "d3"
Name 160 "d5"
Name 161 "d6"
Name 162 "d7"
Name 163 "d8"
Name 164 "d9"
Name 165 "d10"
Name 166 "d11"
Name 167 "d12"
Name 168 "d14"
Name 169 "d15"
Name 170 "d16"
Name 171 "d17"
Name 172 "d18"
Name 173 "d19"
Name 174 "d20"
Name 175 "d21"
Name 176 "d22"
Name 177 "d23"
Name 178 "d24"
Name 179 "d25"
Name 180 "d26"
Name 181 "d27"
Name 182 "d28"
Name 183 "d29"
Name 184 "d30"
Name 185 "d31"
Name 186 "d32"
Name 187 "d33"
Name 188 "d34"
Name 191 "Count"
Name 25 "d4"
Name 30 "bigColor4"
Name 83 "d13"
Name 149 "gl_FragColor"
Name 151 "bigColor"
Name 152 "bigColor1_1"
Name 153 "bigColor1_2"
Name 154 "bigColor1_3"
Name 155 "bigColor2"
Name 156 "bigColor3"
Name 157 "bigColor5"
Name 158 "bigColor6"
Name 159 "bigColor7"
Name 160 "bigColor8"
Name 161 "d"
Name 162 "d2"
Name 163 "d3"
Name 164 "d5"
Name 165 "d6"
Name 166 "d7"
Name 167 "d8"
Name 168 "d9"
Name 169 "d10"
Name 170 "d11"
Name 171 "d12"
Name 172 "d14"
Name 173 "d15"
Name 174 "d16"
Name 175 "d17"
Name 176 "d18"
Name 177 "d19"
Name 178 "d20"
Name 179 "d21"
Name 180 "d22"
Name 181 "d23"
Name 182 "d24"
Name 183 "d25"
Name 184 "d26"
Name 185 "d27"
Name 186 "d28"
Name 187 "d29"
Name 188 "d30"
Name 189 "d31"
Name 190 "d32"
Name 191 "d33"
Name 192 "d34"
Name 195 "Count"
Decorate 12(BaseColor) Smooth
Decorate 145(gl_FragColor) BuiltIn FragColor
Decorate 147(bigColor) NoStaticUse
Decorate 148(bigColor1_1) NoStaticUse
Decorate 149(bigColor1_2) NoStaticUse
Decorate 150(bigColor1_3) NoStaticUse
Decorate 151(bigColor2) NoStaticUse
Decorate 152(bigColor3) NoStaticUse
Decorate 153(bigColor5) NoStaticUse
Decorate 154(bigColor6) NoStaticUse
Decorate 155(bigColor7) NoStaticUse
Decorate 156(bigColor8) NoStaticUse
Decorate 157(d) NoStaticUse
Decorate 158(d2) NoStaticUse
Decorate 159(d3) NoStaticUse
Decorate 160(d5) NoStaticUse
Decorate 161(d6) NoStaticUse
Decorate 162(d7) NoStaticUse
Decorate 163(d8) NoStaticUse
Decorate 164(d9) NoStaticUse
Decorate 165(d10) NoStaticUse
Decorate 166(d11) NoStaticUse
Decorate 167(d12) NoStaticUse
Decorate 168(d14) NoStaticUse
Decorate 169(d15) NoStaticUse
Decorate 170(d16) NoStaticUse
Decorate 171(d17) NoStaticUse
Decorate 172(d18) NoStaticUse
Decorate 173(d19) NoStaticUse
Decorate 174(d20) NoStaticUse
Decorate 175(d21) NoStaticUse
Decorate 176(d22) NoStaticUse
Decorate 177(d23) NoStaticUse
Decorate 178(d24) NoStaticUse
Decorate 179(d25) NoStaticUse
Decorate 180(d26) NoStaticUse
Decorate 181(d27) NoStaticUse
Decorate 182(d28) NoStaticUse
Decorate 183(d29) NoStaticUse
Decorate 184(d30) NoStaticUse
Decorate 185(d31) NoStaticUse
Decorate 186(d32) NoStaticUse
Decorate 187(d33) NoStaticUse
Decorate 188(d34) NoStaticUse
Decorate 191(Count) NoStaticUse
Decorate 149(gl_FragColor) BuiltIn FragColor
Decorate 151(bigColor) NoStaticUse
Decorate 152(bigColor1_1) NoStaticUse
Decorate 153(bigColor1_2) NoStaticUse
Decorate 154(bigColor1_3) NoStaticUse
Decorate 155(bigColor2) NoStaticUse
Decorate 156(bigColor3) NoStaticUse
Decorate 157(bigColor5) NoStaticUse
Decorate 158(bigColor6) NoStaticUse
Decorate 159(bigColor7) NoStaticUse
Decorate 160(bigColor8) NoStaticUse
Decorate 161(d) NoStaticUse
Decorate 162(d2) NoStaticUse
Decorate 163(d3) NoStaticUse
Decorate 164(d5) NoStaticUse
Decorate 165(d6) NoStaticUse
Decorate 166(d7) NoStaticUse
Decorate 167(d8) NoStaticUse
Decorate 168(d9) NoStaticUse
Decorate 169(d10) NoStaticUse
Decorate 170(d11) NoStaticUse
Decorate 171(d12) NoStaticUse
Decorate 172(d14) NoStaticUse
Decorate 173(d15) NoStaticUse
Decorate 174(d16) NoStaticUse
Decorate 175(d17) NoStaticUse
Decorate 176(d18) NoStaticUse
Decorate 177(d19) NoStaticUse
Decorate 178(d20) NoStaticUse
Decorate 179(d21) NoStaticUse
Decorate 180(d22) NoStaticUse
Decorate 181(d23) NoStaticUse
Decorate 182(d24) NoStaticUse
Decorate 183(d25) NoStaticUse
Decorate 184(d26) NoStaticUse
Decorate 185(d27) NoStaticUse
Decorate 186(d28) NoStaticUse
Decorate 187(d29) NoStaticUse
Decorate 188(d30) NoStaticUse
Decorate 189(d31) NoStaticUse
Decorate 190(d32) NoStaticUse
Decorate 191(d33) NoStaticUse
Decorate 192(d34) NoStaticUse
Decorate 195(Count) NoStaticUse
2: TypeVoid
3: TypeFunction 2
7: TypeFloat 32
@@ -115,61 +115,63 @@ Linked fragment stage:
9: TypePointer Function 8(fvec4)
11: TypePointer Input 8(fvec4)
12(BaseColor): 11(ptr) Variable Input
18: TypePointer UniformConstant 8(fvec4)
19(bigColor4): 18(ptr) Variable UniformConstant
25: TypePointer UniformConstant 7(float)
26(d4): 25(ptr) Variable UniformConstant
28: TypeBool
32: 7(float) Constant 1073741824
46: 7(float) Constant 1065353216
79(d13): 25(ptr) Variable UniformConstant
144: TypePointer Output 8(fvec4)
145(gl_FragColor): 144(ptr) Variable Output
147(bigColor): 18(ptr) Variable UniformConstant
148(bigColor1_1): 18(ptr) Variable UniformConstant
149(bigColor1_2): 18(ptr) Variable UniformConstant
150(bigColor1_3): 18(ptr) Variable UniformConstant
151(bigColor2): 18(ptr) Variable UniformConstant
152(bigColor3): 18(ptr) Variable UniformConstant
153(bigColor5): 18(ptr) Variable UniformConstant
154(bigColor6): 18(ptr) Variable UniformConstant
155(bigColor7): 18(ptr) Variable UniformConstant
156(bigColor8): 18(ptr) Variable UniformConstant
157(d): 25(ptr) Variable UniformConstant
158(d2): 25(ptr) Variable UniformConstant
159(d3): 25(ptr) Variable UniformConstant
160(d5): 25(ptr) Variable UniformConstant
161(d6): 25(ptr) Variable UniformConstant
162(d7): 25(ptr) Variable UniformConstant
163(d8): 25(ptr) Variable UniformConstant
164(d9): 25(ptr) Variable UniformConstant
165(d10): 25(ptr) Variable UniformConstant
166(d11): 25(ptr) Variable UniformConstant
167(d12): 25(ptr) Variable UniformConstant
168(d14): 25(ptr) Variable UniformConstant
169(d15): 25(ptr) Variable UniformConstant
170(d16): 25(ptr) Variable UniformConstant
171(d17): 25(ptr) Variable UniformConstant
172(d18): 25(ptr) Variable UniformConstant
173(d19): 25(ptr) Variable UniformConstant
174(d20): 25(ptr) Variable UniformConstant
175(d21): 25(ptr) Variable UniformConstant
176(d22): 25(ptr) Variable UniformConstant
177(d23): 25(ptr) Variable UniformConstant
178(d24): 25(ptr) Variable UniformConstant
179(d25): 25(ptr) Variable UniformConstant
180(d26): 25(ptr) Variable UniformConstant
181(d27): 25(ptr) Variable UniformConstant
182(d28): 25(ptr) Variable UniformConstant
183(d29): 25(ptr) Variable UniformConstant
184(d30): 25(ptr) Variable UniformConstant
185(d31): 25(ptr) Variable UniformConstant
186(d32): 25(ptr) Variable UniformConstant
187(d33): 25(ptr) Variable UniformConstant
188(d34): 25(ptr) Variable UniformConstant
189: TypeInt 32 1
190: TypePointer UniformConstant 189(int)
191(Count): 190(ptr) Variable UniformConstant
17: TypeBool
18: 17(bool) ConstantTrue
24: TypePointer UniformConstant 7(float)
25(d4): 24(ptr) Variable UniformConstant
29: TypePointer UniformConstant 8(fvec4)
30(bigColor4): 29(ptr) Variable UniformConstant
40: 7(float) Constant 1073741824
54: 7(float) Constant 1065353216
58: 17(bool) ConstantFalse
83(d13): 24(ptr) Variable UniformConstant
148: TypePointer Output 8(fvec4)
149(gl_FragColor): 148(ptr) Variable Output
151(bigColor): 29(ptr) Variable UniformConstant
152(bigColor1_1): 29(ptr) Variable UniformConstant
153(bigColor1_2): 29(ptr) Variable UniformConstant
154(bigColor1_3): 29(ptr) Variable UniformConstant
155(bigColor2): 29(ptr) Variable UniformConstant
156(bigColor3): 29(ptr) Variable UniformConstant
157(bigColor5): 29(ptr) Variable UniformConstant
158(bigColor6): 29(ptr) Variable UniformConstant
159(bigColor7): 29(ptr) Variable UniformConstant
160(bigColor8): 29(ptr) Variable UniformConstant
161(d): 24(ptr) Variable UniformConstant
162(d2): 24(ptr) Variable UniformConstant
163(d3): 24(ptr) Variable UniformConstant
164(d5): 24(ptr) Variable UniformConstant
165(d6): 24(ptr) Variable UniformConstant
166(d7): 24(ptr) Variable UniformConstant
167(d8): 24(ptr) Variable UniformConstant
168(d9): 24(ptr) Variable UniformConstant
169(d10): 24(ptr) Variable UniformConstant
170(d11): 24(ptr) Variable UniformConstant
171(d12): 24(ptr) Variable UniformConstant
172(d14): 24(ptr) Variable UniformConstant
173(d15): 24(ptr) Variable UniformConstant
174(d16): 24(ptr) Variable UniformConstant
175(d17): 24(ptr) Variable UniformConstant
176(d18): 24(ptr) Variable UniformConstant
177(d19): 24(ptr) Variable UniformConstant
178(d20): 24(ptr) Variable UniformConstant
179(d21): 24(ptr) Variable UniformConstant
180(d22): 24(ptr) Variable UniformConstant
181(d23): 24(ptr) Variable UniformConstant
182(d24): 24(ptr) Variable UniformConstant
183(d25): 24(ptr) Variable UniformConstant
184(d26): 24(ptr) Variable UniformConstant
185(d27): 24(ptr) Variable UniformConstant
186(d28): 24(ptr) Variable UniformConstant
187(d29): 24(ptr) Variable UniformConstant
188(d30): 24(ptr) Variable UniformConstant
189(d31): 24(ptr) Variable UniformConstant
190(d32): 24(ptr) Variable UniformConstant
191(d33): 24(ptr) Variable UniformConstant
192(d34): 24(ptr) Variable UniformConstant
193: TypeInt 32 1
194: TypePointer UniformConstant 193(int)
195(Count): 194(ptr) Variable UniformConstant
4(main): 2 Function None 3
5: Label
10(color): 9(ptr) Variable Function
@@ -177,173 +179,178 @@ Linked fragment stage:
Store 10(color) 13
Branch 14
14: Label
16: 17(bool) Phi 18 5 58 50 58 65
LoopMerge 15 None
Branch 16
16: Label
20: 8(fvec4) Load 19(bigColor4)
21: 8(fvec4) Load 10(color)
22: 8(fvec4) FAdd 21 20
Store 10(color) 22
23: 8(fvec4) Load 10(color)
24: 7(float) CompositeExtract 23 0
27: 7(float) Load 26(d4)
29: 28(bool) FOrdLessThan 24 27
SelectionMerge 31 None
BranchConditional 29 30 31
30: Label
33: 8(fvec4) Load 10(color)
34: 7(float) CompositeExtract 33 2
35: 7(float) FAdd 34 32
36: 8(fvec4) Load 10(color)
37: 8(fvec4) CompositeInsert 35 36 2
Store 10(color) 37
38: 8(fvec4) Load 10(color)
39: 7(float) CompositeExtract 38 2
40: 7(float) Load 26(d4)
41: 28(bool) FOrdLessThan 39 40
SelectionMerge 43 None
BranchConditional 41 42 43
42: Label
44: 8(fvec4) Load 10(color)
45: 7(float) CompositeExtract 44 0
47: 7(float) FAdd 45 46
48: 8(fvec4) Load 10(color)
49: 8(fvec4) CompositeInsert 47 48 0
Store 10(color) 49
Branch 17
43: Label
Branch 31
31: Label
51: 8(fvec4) Load 10(color)
52: 7(float) CompositeExtract 51 1
53: 7(float) Load 26(d4)
54: 28(bool) FOrdLessThan 52 53
SelectionMerge 56 None
BranchConditional 54 55 63
55: Label
57: 7(float) Load 26(d4)
58: 8(fvec4) Load 10(color)
59: 7(float) CompositeExtract 58 1
60: 7(float) FAdd 59 57
61: 8(fvec4) Load 10(color)
62: 8(fvec4) CompositeInsert 60 61 1
Store 10(color) 62
Branch 56
63: Label
64: 7(float) Load 26(d4)
65: 8(fvec4) Load 10(color)
66: 7(float) CompositeExtract 65 0
67: 7(float) FAdd 66 64
68: 8(fvec4) Load 10(color)
69: 8(fvec4) CompositeInsert 67 68 0
Store 10(color) 69
Branch 56
56: Label
Branch 17
17: Label
70: 8(fvec4) Load 10(color)
71: 7(float) CompositeExtract 70 2
72: 7(float) Load 26(d4)
73: 28(bool) FOrdLessThan 71 72
BranchConditional 73 74 15
74: Label
Branch 19
19: Label
SelectionMerge 20 None
BranchConditional 16 20 21
21: Label
22: 8(fvec4) Load 10(color)
23: 7(float) CompositeExtract 22 2
26: 7(float) Load 25(d4)
27: 17(bool) FOrdLessThan 23 26
SelectionMerge 28 None
BranchConditional 27 28 15
28: Label
Branch 20
20: Label
31: 8(fvec4) Load 30(bigColor4)
32: 8(fvec4) Load 10(color)
33: 8(fvec4) FAdd 32 31
Store 10(color) 33
34: 8(fvec4) Load 10(color)
35: 7(float) CompositeExtract 34 0
36: 7(float) Load 25(d4)
37: 17(bool) FOrdLessThan 35 36
SelectionMerge 39 None
BranchConditional 37 38 39
38: Label
41: 8(fvec4) Load 10(color)
42: 7(float) CompositeExtract 41 2
43: 7(float) FAdd 42 40
44: 8(fvec4) Load 10(color)
45: 8(fvec4) CompositeInsert 43 44 2
Store 10(color) 45
46: 8(fvec4) Load 10(color)
47: 7(float) CompositeExtract 46 2
48: 7(float) Load 25(d4)
49: 17(bool) FOrdLessThan 47 48
SelectionMerge 51 None
BranchConditional 49 50 51
50: Label
52: 8(fvec4) Load 10(color)
53: 7(float) CompositeExtract 52 0
55: 7(float) FAdd 53 54
56: 8(fvec4) Load 10(color)
57: 8(fvec4) CompositeInsert 55 56 0
Store 10(color) 57
Branch 14
51: Label
Branch 39
39: Label
60: 8(fvec4) Load 10(color)
61: 7(float) CompositeExtract 60 1
62: 7(float) Load 25(d4)
63: 17(bool) FOrdLessThan 61 62
SelectionMerge 65 None
BranchConditional 63 64 72
64: Label
66: 7(float) Load 25(d4)
67: 8(fvec4) Load 10(color)
68: 7(float) CompositeExtract 67 1
69: 7(float) FAdd 68 66
70: 8(fvec4) Load 10(color)
71: 8(fvec4) CompositeInsert 69 70 1
Store 10(color) 71
Branch 65
72: Label
73: 7(float) Load 25(d4)
74: 8(fvec4) Load 10(color)
75: 7(float) CompositeExtract 74 0
76: 7(float) FAdd 75 73
77: 8(fvec4) Load 10(color)
78: 8(fvec4) CompositeInsert 76 77 0
Store 10(color) 78
Branch 65
65: Label
Branch 14
15: Label
Branch 75
75: Label
77: 8(fvec4) Load 10(color)
78: 7(float) CompositeExtract 77 3
80: 7(float) Load 79(d13)
81: 28(bool) FOrdLessThan 78 80
LoopMerge 76 None
BranchConditional 81 82 76
82: Label
83: 8(fvec4) Load 10(color)
84: 7(float) CompositeExtract 83 2
85: 7(float) Load 79(d13)
86: 28(bool) FOrdLessThan 84 85
SelectionMerge 88 None
BranchConditional 86 87 92
87: Label
89: 8(fvec4) Load 10(color)
90: 8(fvec4) CompositeConstruct 46 46 46 46
91: 8(fvec4) FAdd 89 90
Store 10(color) 91
Branch 88
92: Label
Branch 79
79: Label
81: 8(fvec4) Load 10(color)
82: 7(float) CompositeExtract 81 3
84: 7(float) Load 83(d13)
85: 17(bool) FOrdLessThan 82 84
LoopMerge 80 None
BranchConditional 85 86 80
86: Label
87: 8(fvec4) Load 10(color)
88: 7(float) CompositeExtract 87 2
89: 7(float) Load 83(d13)
90: 17(bool) FOrdLessThan 88 89
SelectionMerge 92 None
BranchConditional 90 91 96
91: Label
93: 8(fvec4) Load 10(color)
94: 8(fvec4) CompositeConstruct 46 46 46 46
95: 8(fvec4) FSub 93 94
94: 8(fvec4) CompositeConstruct 54 54 54 54
95: 8(fvec4) FAdd 93 94
Store 10(color) 95
Branch 88
88: Label
96: 8(fvec4) Load 19(bigColor4)
97: 8(fvec4) Load 10(color)
98: 8(fvec4) FAdd 97 96
Store 10(color) 98
99: 8(fvec4) Load 10(color)
100: 7(float) CompositeExtract 99 0
101: 7(float) Load 26(d4)
102: 28(bool) FOrdLessThan 100 101
SelectionMerge 104 None
BranchConditional 102 103 104
103: Label
105: 8(fvec4) Load 10(color)
106: 7(float) CompositeExtract 105 2
107: 7(float) FAdd 106 32
108: 8(fvec4) Load 10(color)
109: 8(fvec4) CompositeInsert 107 108 2
Store 10(color) 109
110: 8(fvec4) Load 10(color)
111: 7(float) CompositeExtract 110 2
112: 7(float) Load 26(d4)
113: 28(bool) FOrdLessThan 111 112
SelectionMerge 115 None
BranchConditional 113 114 115
114: Label
116: 8(fvec4) Load 10(color)
117: 7(float) CompositeExtract 116 0
118: 7(float) FAdd 117 46
119: 8(fvec4) Load 10(color)
120: 8(fvec4) CompositeInsert 118 119 0
Store 10(color) 120
Branch 75
115: Label
Branch 104
104: Label
122: 8(fvec4) Load 10(color)
123: 7(float) CompositeExtract 122 1
124: 7(float) Load 26(d4)
125: 28(bool) FOrdLessThan 123 124
SelectionMerge 127 None
BranchConditional 125 126 134
126: Label
128: 7(float) Load 26(d4)
129: 8(fvec4) Load 10(color)
130: 7(float) CompositeExtract 129 1
131: 7(float) FAdd 130 128
132: 8(fvec4) Load 10(color)
133: 8(fvec4) CompositeInsert 131 132 1
Store 10(color) 133
Branch 127
134: Label
135: 7(float) Load 26(d4)
Branch 92
96: Label
97: 8(fvec4) Load 10(color)
98: 8(fvec4) CompositeConstruct 54 54 54 54
99: 8(fvec4) FSub 97 98
Store 10(color) 99
Branch 92
92: Label
100: 8(fvec4) Load 30(bigColor4)
101: 8(fvec4) Load 10(color)
102: 8(fvec4) FAdd 101 100
Store 10(color) 102
103: 8(fvec4) Load 10(color)
104: 7(float) CompositeExtract 103 0
105: 7(float) Load 25(d4)
106: 17(bool) FOrdLessThan 104 105
SelectionMerge 108 None
BranchConditional 106 107 108
107: Label
109: 8(fvec4) Load 10(color)
110: 7(float) CompositeExtract 109 2
111: 7(float) FAdd 110 40
112: 8(fvec4) Load 10(color)
113: 8(fvec4) CompositeInsert 111 112 2
Store 10(color) 113
114: 8(fvec4) Load 10(color)
115: 7(float) CompositeExtract 114 2
116: 7(float) Load 25(d4)
117: 17(bool) FOrdLessThan 115 116
SelectionMerge 119 None
BranchConditional 117 118 119
118: Label
120: 8(fvec4) Load 10(color)
121: 7(float) CompositeExtract 120 0
122: 7(float) FAdd 121 54
123: 8(fvec4) Load 10(color)
124: 8(fvec4) CompositeInsert 122 123 0
Store 10(color) 124
Branch 79
119: Label
Branch 108
108: Label
126: 8(fvec4) Load 10(color)
127: 7(float) CompositeExtract 126 1
128: 7(float) Load 25(d4)
129: 17(bool) FOrdLessThan 127 128
SelectionMerge 131 None
BranchConditional 129 130 138
130: Label
132: 7(float) Load 25(d4)
133: 8(fvec4) Load 10(color)
134: 7(float) CompositeExtract 133 1
135: 7(float) FAdd 134 132
136: 8(fvec4) Load 10(color)
137: 7(float) CompositeExtract 136 0
138: 7(float) FAdd 137 135
139: 8(fvec4) Load 10(color)
140: 8(fvec4) CompositeInsert 138 139 0
Store 10(color) 140
Branch 127
127: Label
Branch 75
76: Label
141: 8(fvec4) Load 10(color)
142: 8(fvec4) CompositeConstruct 46 46 46 46
143: 8(fvec4) FAdd 141 142
Store 10(color) 143
146: 8(fvec4) Load 10(color)
Store 145(gl_FragColor) 146
137: 8(fvec4) CompositeInsert 135 136 1
Store 10(color) 137
Branch 131
138: Label
139: 7(float) Load 25(d4)
140: 8(fvec4) Load 10(color)
141: 7(float) CompositeExtract 140 0
142: 7(float) FAdd 141 139
143: 8(fvec4) Load 10(color)
144: 8(fvec4) CompositeInsert 142 143 0
Store 10(color) 144
Branch 131
131: Label
Branch 79
80: Label
145: 8(fvec4) Load 10(color)
146: 8(fvec4) CompositeConstruct 54 54 54 54
147: 8(fvec4) FAdd 145 146
Store 10(color) 147
150: 8(fvec4) Load 10(color)
Store 149(gl_FragColor) 150
Branch 6
6: Label
Return