mirror of
https://github.com/RPCS3/glslang.git
synced 2025-01-01 16:08:23 +00:00
e770b3e6cf
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.
399 lines
19 KiB
Plaintext
Executable File
399 lines
19 KiB
Plaintext
Executable File
spv.switch.frag
|
|
Warning, version 310 is not yet complete; most version-specific features are present, but some are missing.
|
|
WARNING: 0:121: 'switch' : last case/default label not followed by statements
|
|
WARNING: 0:134: 'switch' : last case/default label not followed by statements
|
|
WARNING: 0:139: 'switch' : last case/default label not followed by statements
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
// Module Version 99
|
|
// Generated by (magic number): 51a00bb
|
|
// Id's are bound by 260
|
|
|
|
Source ESSL 310
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main"
|
|
ExecutionMode 4 OriginLowerLeft
|
|
Name 4 "main"
|
|
Name 15 "foo1(vf4;vf4;i1;"
|
|
Name 12 "v1"
|
|
Name 13 "v2"
|
|
Name 14 "i1"
|
|
Name 20 "foo2(vf4;vf4;i1;"
|
|
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 171 "j"
|
|
Name 221 "color"
|
|
Name 227 "v"
|
|
Name 228 "param"
|
|
Name 230 "param"
|
|
Name 232 "param"
|
|
Name 238 "param"
|
|
Name 240 "param"
|
|
Name 242 "param"
|
|
Decorate 58(local) RelaxedPrecision
|
|
Decorate 60(c) RelaxedPrecision
|
|
Decorate 71(f) RelaxedPrecision
|
|
Decorate 73(x) RelaxedPrecision
|
|
Decorate 73(x) Smooth
|
|
Decorate 127(d) RelaxedPrecision
|
|
Decorate 153(i) RelaxedPrecision
|
|
Decorate 171(j) RelaxedPrecision
|
|
Decorate 221(color) RelaxedPrecision
|
|
Decorate 227(v) RelaxedPrecision
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypePointer Function 7(fvec4)
|
|
9: TypeInt 32 1
|
|
10: TypePointer Function 9(int)
|
|
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
|
|
159: 9(int) Constant 10
|
|
160: TypeBool
|
|
172: 9(int) Constant 20
|
|
177: 9(int) Constant 30
|
|
182: 6(float) Constant 1120429670
|
|
202: 6(float) Constant 1079739679
|
|
220: TypePointer Output 6(float)
|
|
221(color): 220(ptr) Variable Output
|
|
226: TypePointer UniformConstant 7(fvec4)
|
|
227(v): 226(ptr) Variable UniformConstant
|
|
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
|
|
171(j): 10(ptr) Variable Function
|
|
228(param): 8(ptr) Variable Function
|
|
230(param): 8(ptr) Variable Function
|
|
232(param): 10(ptr) Variable Function
|
|
238(param): 8(ptr) Variable Function
|
|
240(param): 8(ptr) Variable Function
|
|
242(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
|
|
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
|
|
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
|
|
69: Label
|
|
83: 9(int) Load 60(c)
|
|
SelectionMerge 87 None
|
|
Switch 83 86
|
|
case 1: 84
|
|
case 2: 85
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
121: Label
|
|
Store 153(i) 154
|
|
Branch 155
|
|
155: Label
|
|
158: 9(int) Load 153(i)
|
|
161: 160(bool) SLessThan 158 159
|
|
LoopMerge 156 None
|
|
BranchConditional 161 157 156
|
|
157: Label
|
|
162: 9(int) Load 60(c)
|
|
SelectionMerge 166 None
|
|
Switch 162 165
|
|
case 1: 163
|
|
case 2: 164
|
|
163: Label
|
|
167: 6(float) Load 73(x)
|
|
168: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 167
|
|
169: 6(float) Load 71(f)
|
|
170: 6(float) FAdd 169 168
|
|
Store 71(f) 170
|
|
Store 171(j) 172
|
|
Branch 173
|
|
173: Label
|
|
176: 9(int) Load 171(j)
|
|
178: 160(bool) SLessThan 176 177
|
|
LoopMerge 174 None
|
|
BranchConditional 178 175 174
|
|
175: Label
|
|
179: 6(float) Load 71(f)
|
|
180: 6(float) FAdd 179 47
|
|
Store 71(f) 180
|
|
181: 6(float) Load 71(f)
|
|
183: 160(bool) FOrdLessThan 181 182
|
|
SelectionMerge 185 None
|
|
BranchConditional 183 184 185
|
|
184: Label
|
|
Branch 174
|
|
185: Label
|
|
187: 9(int) Load 171(j)
|
|
188: 9(int) IAdd 187 63
|
|
Store 171(j) 188
|
|
Branch 173
|
|
174: Label
|
|
Branch 166
|
|
164: Label
|
|
190: 6(float) Load 73(x)
|
|
191: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 190
|
|
192: 6(float) Load 71(f)
|
|
193: 6(float) FAdd 192 191
|
|
Store 71(f) 193
|
|
Branch 166
|
|
165: Label
|
|
196: 6(float) Load 73(x)
|
|
197: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 196
|
|
198: 6(float) Load 71(f)
|
|
199: 6(float) FAdd 198 197
|
|
Store 71(f) 199
|
|
Branch 166
|
|
166: Label
|
|
201: 6(float) Load 71(f)
|
|
203: 160(bool) FOrdLessThan 201 202
|
|
SelectionMerge 205 None
|
|
BranchConditional 203 204 205
|
|
204: Label
|
|
Branch 156
|
|
205: Label
|
|
207: 9(int) Load 153(i)
|
|
208: 9(int) IAdd 207 63
|
|
Store 153(i) 208
|
|
Branch 155
|
|
156: Label
|
|
209: 9(int) Load 60(c)
|
|
SelectionMerge 212 None
|
|
Switch 209 212
|
|
case 1: 210
|
|
case 2: 211
|
|
210: Label
|
|
213: 6(float) Load 73(x)
|
|
214: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 213
|
|
215: 6(float) Load 71(f)
|
|
216: 6(float) FAdd 215 214
|
|
Store 71(f) 216
|
|
Branch 212
|
|
211: Label
|
|
Branch 212
|
|
212: Label
|
|
222: 6(float) Load 71(f)
|
|
223: 9(int) Load 58(local)
|
|
224: 6(float) ConvertSToF 223
|
|
225: 6(float) FAdd 222 224
|
|
Store 221(color) 225
|
|
229: 7(fvec4) Load 227(v)
|
|
Store 228(param) 229
|
|
231: 7(fvec4) Load 227(v)
|
|
Store 230(param) 231
|
|
233: 9(int) Load 60(c)
|
|
Store 232(param) 233
|
|
234: 7(fvec4) FunctionCall 15(foo1(vf4;vf4;i1;) 228(param) 230(param) 232(param)
|
|
235: 6(float) CompositeExtract 234 1
|
|
236: 6(float) Load 221(color)
|
|
237: 6(float) FAdd 236 235
|
|
Store 221(color) 237
|
|
239: 7(fvec4) Load 227(v)
|
|
Store 238(param) 239
|
|
241: 7(fvec4) Load 227(v)
|
|
Store 240(param) 241
|
|
243: 9(int) Load 60(c)
|
|
Store 242(param) 243
|
|
244: 7(fvec4) FunctionCall 20(foo2(vf4;vf4;i1;) 238(param) 240(param) 242(param)
|
|
245: 6(float) CompositeExtract 244 2
|
|
246: 6(float) Load 221(color)
|
|
247: 6(float) FAdd 246 245
|
|
Store 221(color) 247
|
|
248: 9(int) Load 60(c)
|
|
SelectionMerge 251 None
|
|
Switch 248 250
|
|
case 0: 249
|
|
249: Label
|
|
Branch 251
|
|
250: Label
|
|
Branch 251
|
|
251: Label
|
|
255: 9(int) Load 60(c)
|
|
SelectionMerge 257 None
|
|
Switch 255 256
|
|
256: Label
|
|
Branch 257
|
|
257: Label
|
|
Return
|
|
FunctionEnd
|
|
15(foo1(vf4;vf4;i1;): 7(fvec4) Function None 11
|
|
12(v1): 8(ptr) FunctionParameter
|
|
13(v2): 8(ptr) FunctionParameter
|
|
14(i1): 10(ptr) FunctionParameter
|
|
16: Label
|
|
22: 9(int) Load 14(i1)
|
|
SelectionMerge 26 None
|
|
Switch 22 26
|
|
case 0: 23
|
|
case 2: 24
|
|
case 1: 24
|
|
case 3: 25
|
|
23: Label
|
|
27: 7(fvec4) Load 12(v1)
|
|
ReturnValue 27
|
|
24: Label
|
|
29: 7(fvec4) Load 13(v2)
|
|
ReturnValue 29
|
|
25: Label
|
|
31: 7(fvec4) Load 12(v1)
|
|
32: 7(fvec4) Load 13(v2)
|
|
33: 7(fvec4) FMul 31 32
|
|
ReturnValue 33
|
|
26: Label
|
|
ReturnValue 37
|
|
FunctionEnd
|
|
20(foo2(vf4;vf4;i1;): 7(fvec4) Function None 11
|
|
17(v1): 8(ptr) FunctionParameter
|
|
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
|
|
41: Label
|
|
ReturnValue 48
|
|
42: Label
|
|
50: 7(fvec4) Load 18(v2)
|
|
ReturnValue 50
|
|
43: Label
|
|
52: 7(fvec4) Load 17(v1)
|
|
53: 7(fvec4) Load 18(v2)
|
|
54: 7(fvec4) FMul 52 53
|
|
ReturnValue 54
|
|
44: Label
|
|
ReturnValue 37
|
|
FunctionEnd
|