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.
356 lines
17 KiB
Plaintext
Executable File
356 lines
17 KiB
Plaintext
Executable File
spv.uint.frag
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
// Module Version 99
|
|
// Generated by (magic number): 51a00bb
|
|
// Id's are bound by 206
|
|
|
|
Source ESSL 300
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "main"
|
|
ExecutionMode 4 OriginLowerLeft
|
|
Name 4 "main"
|
|
Name 8 "count"
|
|
Name 12 "u"
|
|
Name 15 "t"
|
|
Name 53 "shiftedii"
|
|
Name 55 "shiftedui"
|
|
Name 57 "shiftediu"
|
|
Name 58 "shifteduu"
|
|
Name 66 "c"
|
|
Name 70 "usampler"
|
|
Name 75 "tc"
|
|
Name 108 "af"
|
|
Name 112 "ab"
|
|
Name 116 "ai"
|
|
Name 151 "mask1"
|
|
Name 153 "mask2"
|
|
Name 155 "mask3"
|
|
Name 159 "mask4"
|
|
Name 199 "f"
|
|
Name 201 "v"
|
|
Name 203 "i"
|
|
Name 205 "b"
|
|
Decorate 8(count) RelaxedPrecision
|
|
Decorate 12(u) RelaxedPrecision
|
|
Decorate 15(t) RelaxedPrecision
|
|
Decorate 15(t) Flat
|
|
Decorate 53(shiftedii) RelaxedPrecision
|
|
Decorate 55(shiftedui) RelaxedPrecision
|
|
Decorate 57(shiftediu) RelaxedPrecision
|
|
Decorate 58(shifteduu) RelaxedPrecision
|
|
Decorate 66(c) RelaxedPrecision
|
|
Decorate 70(usampler) RelaxedPrecision
|
|
Decorate 75(tc) RelaxedPrecision
|
|
Decorate 75(tc) Smooth
|
|
Decorate 108(af) RelaxedPrecision
|
|
Decorate 116(ai) RelaxedPrecision
|
|
Decorate 151(mask1) RelaxedPrecision
|
|
Decorate 153(mask2) RelaxedPrecision
|
|
Decorate 155(mask3) RelaxedPrecision
|
|
Decorate 159(mask4) RelaxedPrecision
|
|
Decorate 199(f) RelaxedPrecision
|
|
Decorate 199(f) Smooth
|
|
Decorate 199(f) NoStaticUse
|
|
Decorate 201(v) RelaxedPrecision
|
|
Decorate 201(v) NoStaticUse
|
|
Decorate 203(i) RelaxedPrecision
|
|
Decorate 203(i) NoStaticUse
|
|
Decorate 205(b) NoStaticUse
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeInt 32 1
|
|
7: TypePointer Function 6(int)
|
|
9: 6(int) Constant 1
|
|
10: TypeInt 32 0
|
|
11: TypePointer Function 10(int)
|
|
13: TypeVector 10(int) 2
|
|
14: TypePointer Input 13(ivec2)
|
|
15(t): 14(ptr) Variable Input
|
|
18: 10(int) Constant 3
|
|
20: TypeBool
|
|
21: 20(bool) ConstantTrue
|
|
24: 6(int) Constant 2
|
|
29: 6(int) Constant 3
|
|
32: 20(bool) ConstantFalse
|
|
35: 6(int) Constant 5
|
|
40: 6(int) Constant 7
|
|
45: 6(int) Constant 11
|
|
50: 6(int) Constant 13
|
|
54: 6(int) Constant 4294967295
|
|
56: 10(int) Constant 4194303
|
|
64: TypeVector 10(int) 4
|
|
65: TypePointer Output 64(ivec4)
|
|
66(c): 65(ptr) Variable Output
|
|
67: TypeImage 10(int) 2D sampled format:Unknown
|
|
68: TypeSampledImage 67
|
|
69: TypePointer UniformConstant 68
|
|
70(usampler): 69(ptr) Variable UniformConstant
|
|
72: TypeFloat 32
|
|
73: TypeVector 72(float) 2
|
|
74: TypePointer Input 73(fvec2)
|
|
75(tc): 74(ptr) Variable Input
|
|
85: 72(float) Constant 1065353216
|
|
97: 72(float) Constant 1073741824
|
|
98: 73(fvec2) ConstantComposite 97 97
|
|
103: 10(int) Constant 4
|
|
107: TypePointer Function 72(float)
|
|
111: TypePointer Function 20(bool)
|
|
114: 10(int) Constant 0
|
|
122: 10(int) Constant 1
|
|
133: 6(int) Constant 17
|
|
138: 6(int) Constant 19
|
|
143: 6(int) Constant 23
|
|
148: 6(int) Constant 27
|
|
152: 10(int) Constant 161
|
|
154: 10(int) Constant 2576
|
|
157: 6(int) Constant 4
|
|
160: 10(int) Constant 2737
|
|
198: TypePointer Input 72(float)
|
|
199(f): 198(ptr) Variable Input
|
|
200: TypePointer UniformConstant 64(ivec4)
|
|
201(v): 200(ptr) Variable UniformConstant
|
|
202: TypePointer UniformConstant 6(int)
|
|
203(i): 202(ptr) Variable UniformConstant
|
|
204: TypePointer UniformConstant 20(bool)
|
|
205(b): 204(ptr) Variable UniformConstant
|
|
4(main): 2 Function None 3
|
|
5: Label
|
|
8(count): 7(ptr) Variable Function
|
|
12(u): 11(ptr) Variable Function
|
|
53(shiftedii): 7(ptr) Variable Function
|
|
55(shiftedui): 11(ptr) Variable Function
|
|
57(shiftediu): 7(ptr) Variable Function
|
|
58(shifteduu): 11(ptr) Variable Function
|
|
108(af): 107(ptr) Variable Function
|
|
112(ab): 111(ptr) Variable Function
|
|
116(ai): 7(ptr) Variable Function
|
|
151(mask1): 11(ptr) Variable Function
|
|
153(mask2): 11(ptr) Variable Function
|
|
155(mask3): 11(ptr) Variable Function
|
|
159(mask4): 11(ptr) Variable Function
|
|
Store 8(count) 9
|
|
16: 13(ivec2) Load 15(t)
|
|
17: 10(int) CompositeExtract 16 1
|
|
19: 10(int) IAdd 17 18
|
|
Store 12(u) 19
|
|
SelectionMerge 23 None
|
|
BranchConditional 21 22 23
|
|
22: Label
|
|
25: 6(int) Load 8(count)
|
|
26: 6(int) IMul 25 24
|
|
Store 8(count) 26
|
|
Branch 23
|
|
23: Label
|
|
SelectionMerge 28 None
|
|
BranchConditional 21 27 28
|
|
27: Label
|
|
30: 6(int) Load 8(count)
|
|
31: 6(int) IMul 30 29
|
|
Store 8(count) 31
|
|
Branch 28
|
|
28: Label
|
|
SelectionMerge 34 None
|
|
BranchConditional 32 33 34
|
|
33: Label
|
|
36: 6(int) Load 8(count)
|
|
37: 6(int) IMul 36 35
|
|
Store 8(count) 37
|
|
Branch 34
|
|
34: Label
|
|
SelectionMerge 39 None
|
|
BranchConditional 21 38 39
|
|
38: Label
|
|
41: 6(int) Load 8(count)
|
|
42: 6(int) IMul 41 40
|
|
Store 8(count) 42
|
|
Branch 39
|
|
39: Label
|
|
SelectionMerge 44 None
|
|
BranchConditional 21 43 44
|
|
43: Label
|
|
46: 6(int) Load 8(count)
|
|
47: 6(int) IMul 46 45
|
|
Store 8(count) 47
|
|
Branch 44
|
|
44: Label
|
|
SelectionMerge 49 None
|
|
BranchConditional 32 48 49
|
|
48: Label
|
|
51: 6(int) Load 8(count)
|
|
52: 6(int) IMul 51 50
|
|
Store 8(count) 52
|
|
Branch 49
|
|
49: Label
|
|
Store 53(shiftedii) 54
|
|
Store 55(shiftedui) 56
|
|
Store 57(shiftediu) 54
|
|
Store 58(shifteduu) 56
|
|
59: 6(int) Load 53(shiftedii)
|
|
60: 6(int) Load 57(shiftediu)
|
|
61: 20(bool) IEqual 59 60
|
|
SelectionMerge 63 None
|
|
BranchConditional 61 62 63
|
|
62: Label
|
|
71: 68 Load 70(usampler)
|
|
76: 73(fvec2) Load 75(tc)
|
|
77: 64(ivec4) ImageSampleImplicitLod 71 76
|
|
Store 66(c) 77
|
|
Branch 63
|
|
63: Label
|
|
78: 10(int) Load 55(shiftedui)
|
|
79: 10(int) Load 58(shifteduu)
|
|
80: 20(bool) IEqual 78 79
|
|
SelectionMerge 82 None
|
|
BranchConditional 80 81 82
|
|
81: Label
|
|
83: 68 Load 70(usampler)
|
|
84: 73(fvec2) Load 75(tc)
|
|
86: 73(fvec2) CompositeConstruct 85 85
|
|
87: 73(fvec2) FAdd 84 86
|
|
88: 64(ivec4) ImageSampleImplicitLod 83 87
|
|
Store 66(c) 88
|
|
Branch 82
|
|
82: Label
|
|
89: 6(int) Load 53(shiftedii)
|
|
90: 10(int) Load 55(shiftedui)
|
|
91: 6(int) Bitcast 90
|
|
92: 20(bool) IEqual 89 91
|
|
SelectionMerge 94 None
|
|
BranchConditional 92 93 94
|
|
93: Label
|
|
95: 68 Load 70(usampler)
|
|
96: 73(fvec2) Load 75(tc)
|
|
99: 73(fvec2) FSub 96 98
|
|
100: 64(ivec4) ImageSampleImplicitLod 95 99
|
|
Store 66(c) 100
|
|
Branch 94
|
|
94: Label
|
|
101: 13(ivec2) Load 15(t)
|
|
102: 10(int) CompositeExtract 101 0
|
|
104: 20(bool) UGreaterThan 102 103
|
|
SelectionMerge 106 None
|
|
BranchConditional 104 105 106
|
|
105: Label
|
|
109: 10(int) Load 12(u)
|
|
110: 72(float) ConvertUToF 109
|
|
Store 108(af) 110
|
|
113: 10(int) Load 12(u)
|
|
115: 20(bool) INotEqual 113 114
|
|
Store 112(ab) 115
|
|
117: 10(int) Load 12(u)
|
|
118: 6(int) Bitcast 117
|
|
Store 116(ai) 118
|
|
119: 72(float) Load 108(af)
|
|
120: 10(int) ConvertFToU 119
|
|
121: 20(bool) Load 112(ab)
|
|
123: 10(int) Select 121 122 114
|
|
124: 6(int) Load 116(ai)
|
|
125: 10(int) Bitcast 124
|
|
126: 6(int) Load 8(count)
|
|
127: 10(int) Bitcast 126
|
|
128: 64(ivec4) CompositeConstruct 120 123 125 127
|
|
129: 64(ivec4) Load 66(c)
|
|
130: 64(ivec4) IAdd 129 128
|
|
Store 66(c) 130
|
|
Branch 106
|
|
106: Label
|
|
SelectionMerge 132 None
|
|
BranchConditional 21 131 132
|
|
131: Label
|
|
134: 6(int) Load 8(count)
|
|
135: 6(int) IMul 134 133
|
|
Store 8(count) 135
|
|
Branch 132
|
|
132: Label
|
|
SelectionMerge 137 None
|
|
BranchConditional 32 136 137
|
|
136: Label
|
|
139: 6(int) Load 8(count)
|
|
140: 6(int) IMul 139 138
|
|
Store 8(count) 140
|
|
Branch 137
|
|
137: Label
|
|
SelectionMerge 142 None
|
|
BranchConditional 21 141 142
|
|
141: Label
|
|
144: 6(int) Load 8(count)
|
|
145: 6(int) IMul 144 143
|
|
Store 8(count) 145
|
|
Branch 142
|
|
142: Label
|
|
SelectionMerge 147 None
|
|
BranchConditional 21 146 147
|
|
146: Label
|
|
149: 6(int) Load 8(count)
|
|
150: 6(int) IMul 149 148
|
|
Store 8(count) 150
|
|
Branch 147
|
|
147: Label
|
|
Store 151(mask1) 152
|
|
Store 153(mask2) 154
|
|
156: 10(int) Load 151(mask1)
|
|
158: 10(int) ShiftLeftLogical 156 157
|
|
Store 155(mask3) 158
|
|
Store 159(mask4) 160
|
|
161: 10(int) Load 155(mask3)
|
|
162: 10(int) Load 153(mask2)
|
|
163: 20(bool) IEqual 161 162
|
|
SelectionMerge 165 None
|
|
BranchConditional 163 164 165
|
|
164: Label
|
|
166: 6(int) Load 8(count)
|
|
167: 6(int) IMul 166 24
|
|
Store 8(count) 167
|
|
Branch 165
|
|
165: Label
|
|
168: 10(int) Load 155(mask3)
|
|
169: 10(int) Load 151(mask1)
|
|
170: 10(int) BitwiseAnd 168 169
|
|
171: 20(bool) INotEqual 170 114
|
|
SelectionMerge 173 None
|
|
BranchConditional 171 172 173
|
|
172: Label
|
|
174: 6(int) Load 8(count)
|
|
175: 6(int) IMul 174 29
|
|
Store 8(count) 175
|
|
Branch 173
|
|
173: Label
|
|
176: 10(int) Load 151(mask1)
|
|
177: 10(int) Load 155(mask3)
|
|
178: 10(int) BitwiseOr 176 177
|
|
179: 10(int) Load 159(mask4)
|
|
180: 20(bool) IEqual 178 179
|
|
SelectionMerge 182 None
|
|
BranchConditional 180 181 182
|
|
181: Label
|
|
183: 6(int) Load 8(count)
|
|
184: 6(int) IMul 183 35
|
|
Store 8(count) 184
|
|
Branch 182
|
|
182: Label
|
|
185: 10(int) Load 151(mask1)
|
|
186: 10(int) Load 159(mask4)
|
|
187: 10(int) BitwiseXor 185 186
|
|
188: 20(bool) IEqual 187 154
|
|
SelectionMerge 190 None
|
|
BranchConditional 188 189 190
|
|
189: Label
|
|
191: 6(int) Load 8(count)
|
|
192: 6(int) IMul 191 40
|
|
Store 8(count) 192
|
|
Branch 190
|
|
190: Label
|
|
193: 6(int) Load 8(count)
|
|
194: 10(int) Bitcast 193
|
|
195: 64(ivec4) CompositeConstruct 194 194 194 194
|
|
196: 64(ivec4) Load 66(c)
|
|
197: 64(ivec4) IAdd 196 195
|
|
Store 66(c) 197
|
|
Return
|
|
FunctionEnd
|