Generate separate stores for partially swizzled memory stores

Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to.

Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector.

While this change generates more SPIR-V instructions, it is necessary for correctness.

Fixes #2518.
This commit is contained in:
Jeremy Hayes 2021-07-16 15:07:16 -06:00
parent 9158061398
commit 6d5b40f051
50 changed files with 31343 additions and 26594 deletions

View file

@ -1,7 +1,7 @@
spv.subgroupBallot.comp
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 397
// Id's are bound by 437
Capability Shader
Capability Float64
@ -51,7 +51,7 @@ spv.subgroupBallot.comp
Decorate 46(Buffers) Block
Decorate 49(data) DescriptorSet 0
Decorate 49(data) Binding 0
Decorate 396 BuiltIn WorkgroupSize
Decorate 436 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -93,28 +93,28 @@ spv.subgroupBallot.comp
96: TypePointer StorageBuffer 40(float)
102: TypeVector 40(float) 2
103: TypePointer StorageBuffer 41(fvec4)
112: TypeVector 40(float) 3
121: 42(int) Constant 3
127: TypePointer StorageBuffer 42(int)
133: TypeVector 42(int) 2
134: TypePointer StorageBuffer 43(ivec4)
143: TypeVector 42(int) 3
162: TypeVector 6(int) 2
171: TypeVector 6(int) 3
185: TypePointer StorageBuffer 44(float64_t)
191: TypeVector 44(float64_t) 2
192: TypePointer StorageBuffer 45(f64vec4)
201: TypeVector 44(float64_t) 3
225: 133(ivec2) ConstantComposite 61 61
226: TypeVector 36(bool) 2
229: 133(ivec2) ConstantComposite 60 60
238: 143(ivec3) ConstantComposite 61 61 61
239: TypeVector 36(bool) 3
242: 143(ivec3) ConstantComposite 60 60 60
250: 43(ivec4) ConstantComposite 61 61 61 61
253: 43(ivec4) ConstantComposite 60 60 60 60
395: 6(int) Constant 8
396: 171(ivec3) ConstantComposite 395 395 64
113: TypeVector 40(float) 3
125: 42(int) Constant 3
131: TypePointer StorageBuffer 42(int)
137: TypeVector 42(int) 2
138: TypePointer StorageBuffer 43(ivec4)
148: TypeVector 42(int) 3
170: TypeVector 6(int) 2
180: TypeVector 6(int) 3
197: TypePointer StorageBuffer 44(float64_t)
203: TypeVector 44(float64_t) 2
204: TypePointer StorageBuffer 45(f64vec4)
214: TypeVector 44(float64_t) 3
241: 137(ivec2) ConstantComposite 61 61
242: TypeVector 36(bool) 2
245: 137(ivec2) ConstantComposite 60 60
255: 148(ivec3) ConstantComposite 61 61 61
256: TypeVector 36(bool) 3
259: 148(ivec3) ConstantComposite 60 60 60
270: 43(ivec4) ConstantComposite 61 61 61 61
273: 43(ivec4) ConstantComposite 60 60 60 60
435: 6(int) Constant 8
436: 180(ivec3) ConstantComposite 435 435 64
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
@ -179,7 +179,7 @@ spv.subgroupBallot.comp
87: Label
92: 36(bool) Phi 85 5 91 86
SelectionMerge 94 None
BranchConditional 92 93 256
BranchConditional 92 93 276
93: Label
95: 6(int) Load 8(invocation)
97: 96(ptr) AccessChain 49(data) 61 61 54
@ -192,313 +192,383 @@ spv.subgroupBallot.comp
105: 41(fvec4) Load 104
106: 102(fvec2) VectorShuffle 105 105 0 1
107: 102(fvec2) GroupNonUniformBroadcast 38 106 38
108: 103(ptr) AccessChain 49(data) 101 61
109: 41(fvec4) Load 108
110: 41(fvec4) VectorShuffle 109 107 4 5 2 3
Store 108 110
111: 6(int) Load 8(invocation)
113: 103(ptr) AccessChain 49(data) 51 61
114: 41(fvec4) Load 113
115: 112(fvec3) VectorShuffle 114 114 0 1 2
116: 112(fvec3) GroupNonUniformBroadcast 38 115 38
117: 103(ptr) AccessChain 49(data) 111 61
118: 41(fvec4) Load 117
119: 41(fvec4) VectorShuffle 118 116 4 5 6 3
Store 117 119
120: 6(int) Load 8(invocation)
122: 103(ptr) AccessChain 49(data) 121 61
123: 41(fvec4) Load 122
124: 41(fvec4) GroupNonUniformBroadcast 38 123 38
125: 103(ptr) AccessChain 49(data) 120 61
Store 125 124
126: 6(int) Load 8(invocation)
128: 127(ptr) AccessChain 49(data) 61 60 54
129: 42(int) Load 128
130: 42(int) GroupNonUniformBroadcast 38 129 72
131: 127(ptr) AccessChain 49(data) 126 60 54
Store 131 130
132: 6(int) Load 8(invocation)
135: 134(ptr) AccessChain 49(data) 60 60
136: 43(ivec4) Load 135
137: 133(ivec2) VectorShuffle 136 136 0 1
138: 133(ivec2) GroupNonUniformBroadcast 38 137 72
139: 134(ptr) AccessChain 49(data) 132 60
108: 96(ptr) AccessChain 49(data) 101 61 54
109: 40(float) CompositeExtract 107 0
Store 108 109
110: 96(ptr) AccessChain 49(data) 101 61 64
111: 40(float) CompositeExtract 107 1
Store 110 111
112: 6(int) Load 8(invocation)
114: 103(ptr) AccessChain 49(data) 51 61
115: 41(fvec4) Load 114
116: 113(fvec3) VectorShuffle 115 115 0 1 2
117: 113(fvec3) GroupNonUniformBroadcast 38 116 38
118: 96(ptr) AccessChain 49(data) 112 61 54
119: 40(float) CompositeExtract 117 0
Store 118 119
120: 96(ptr) AccessChain 49(data) 112 61 64
121: 40(float) CompositeExtract 117 1
Store 120 121
122: 96(ptr) AccessChain 49(data) 112 61 72
123: 40(float) CompositeExtract 117 2
Store 122 123
124: 6(int) Load 8(invocation)
126: 103(ptr) AccessChain 49(data) 125 61
127: 41(fvec4) Load 126
128: 41(fvec4) GroupNonUniformBroadcast 38 127 38
129: 103(ptr) AccessChain 49(data) 124 61
Store 129 128
130: 6(int) Load 8(invocation)
132: 131(ptr) AccessChain 49(data) 61 60 54
133: 42(int) Load 132
134: 42(int) GroupNonUniformBroadcast 38 133 72
135: 131(ptr) AccessChain 49(data) 130 60 54
Store 135 134
136: 6(int) Load 8(invocation)
139: 138(ptr) AccessChain 49(data) 60 60
140: 43(ivec4) Load 139
141: 43(ivec4) VectorShuffle 140 138 4 5 2 3
Store 139 141
142: 6(int) Load 8(invocation)
144: 134(ptr) AccessChain 49(data) 51 60
145: 43(ivec4) Load 144
146: 143(ivec3) VectorShuffle 145 145 0 1 2
147: 143(ivec3) GroupNonUniformBroadcast 38 146 72
148: 134(ptr) AccessChain 49(data) 142 60
149: 43(ivec4) Load 148
150: 43(ivec4) VectorShuffle 149 147 4 5 6 3
Store 148 150
151: 6(int) Load 8(invocation)
152: 134(ptr) AccessChain 49(data) 121 60
153: 43(ivec4) Load 152
154: 43(ivec4) GroupNonUniformBroadcast 38 153 72
155: 134(ptr) AccessChain 49(data) 151 60
Store 155 154
156: 6(int) Load 8(invocation)
157: 55(ptr) AccessChain 49(data) 61 51 54
158: 6(int) Load 157
159: 6(int) GroupNonUniformBroadcast 38 158 64
160: 55(ptr) AccessChain 49(data) 156 51 54
Store 160 159
161: 6(int) Load 8(invocation)
163: 88(ptr) AccessChain 49(data) 60 51
164: 17(ivec4) Load 163
165: 162(ivec2) VectorShuffle 164 164 0 1
166: 162(ivec2) GroupNonUniformBroadcast 38 165 64
167: 88(ptr) AccessChain 49(data) 161 51
168: 17(ivec4) Load 167
169: 17(ivec4) VectorShuffle 168 166 4 5 2 3
Store 167 169
170: 6(int) Load 8(invocation)
172: 88(ptr) AccessChain 49(data) 51 51
173: 17(ivec4) Load 172
174: 171(ivec3) VectorShuffle 173 173 0 1 2
175: 171(ivec3) GroupNonUniformBroadcast 38 174 64
176: 88(ptr) AccessChain 49(data) 170 51
177: 17(ivec4) Load 176
178: 17(ivec4) VectorShuffle 177 175 4 5 6 3
Store 176 178
141: 137(ivec2) VectorShuffle 140 140 0 1
142: 137(ivec2) GroupNonUniformBroadcast 38 141 72
143: 131(ptr) AccessChain 49(data) 136 60 54
144: 42(int) CompositeExtract 142 0
Store 143 144
145: 131(ptr) AccessChain 49(data) 136 60 64
146: 42(int) CompositeExtract 142 1
Store 145 146
147: 6(int) Load 8(invocation)
149: 138(ptr) AccessChain 49(data) 51 60
150: 43(ivec4) Load 149
151: 148(ivec3) VectorShuffle 150 150 0 1 2
152: 148(ivec3) GroupNonUniformBroadcast 38 151 72
153: 131(ptr) AccessChain 49(data) 147 60 54
154: 42(int) CompositeExtract 152 0
Store 153 154
155: 131(ptr) AccessChain 49(data) 147 60 64
156: 42(int) CompositeExtract 152 1
Store 155 156
157: 131(ptr) AccessChain 49(data) 147 60 72
158: 42(int) CompositeExtract 152 2
Store 157 158
159: 6(int) Load 8(invocation)
160: 138(ptr) AccessChain 49(data) 125 60
161: 43(ivec4) Load 160
162: 43(ivec4) GroupNonUniformBroadcast 38 161 72
163: 138(ptr) AccessChain 49(data) 159 60
Store 163 162
164: 6(int) Load 8(invocation)
165: 55(ptr) AccessChain 49(data) 61 51 54
166: 6(int) Load 165
167: 6(int) GroupNonUniformBroadcast 38 166 64
168: 55(ptr) AccessChain 49(data) 164 51 54
Store 168 167
169: 6(int) Load 8(invocation)
171: 88(ptr) AccessChain 49(data) 60 51
172: 17(ivec4) Load 171
173: 170(ivec2) VectorShuffle 172 172 0 1
174: 170(ivec2) GroupNonUniformBroadcast 38 173 64
175: 55(ptr) AccessChain 49(data) 169 51 54
176: 6(int) CompositeExtract 174 0
Store 175 176
177: 55(ptr) AccessChain 49(data) 169 51 64
178: 6(int) CompositeExtract 174 1
Store 177 178
179: 6(int) Load 8(invocation)
180: 88(ptr) AccessChain 49(data) 121 51
181: 17(ivec4) Load 180
182: 17(ivec4) GroupNonUniformBroadcast 38 181 64
183: 88(ptr) AccessChain 49(data) 179 51
Store 183 182
184: 6(int) Load 8(invocation)
186: 185(ptr) AccessChain 49(data) 61 121 54
187:44(float64_t) Load 186
188:44(float64_t) GroupNonUniformBroadcast 38 187 54
189: 185(ptr) AccessChain 49(data) 184 121 54
Store 189 188
190: 6(int) Load 8(invocation)
193: 192(ptr) AccessChain 49(data) 60 121
194: 45(f64vec4) Load 193
195:191(f64vec2) VectorShuffle 194 194 0 1
196:191(f64vec2) GroupNonUniformBroadcast 38 195 54
197: 192(ptr) AccessChain 49(data) 190 121
198: 45(f64vec4) Load 197
199: 45(f64vec4) VectorShuffle 198 196 4 5 2 3
Store 197 199
200: 6(int) Load 8(invocation)
202: 192(ptr) AccessChain 49(data) 51 121
203: 45(f64vec4) Load 202
204:201(f64vec3) VectorShuffle 203 203 0 1 2
205:201(f64vec3) GroupNonUniformBroadcast 38 204 54
206: 192(ptr) AccessChain 49(data) 200 121
207: 45(f64vec4) Load 206
208: 45(f64vec4) VectorShuffle 207 205 4 5 6 3
Store 206 208
209: 6(int) Load 8(invocation)
210: 192(ptr) AccessChain 49(data) 121 121
211: 45(f64vec4) Load 210
212: 45(f64vec4) GroupNonUniformBroadcast 38 211 54
213: 192(ptr) AccessChain 49(data) 209 121
Store 213 212
214: 6(int) Load 8(invocation)
215: 127(ptr) AccessChain 49(data) 61 60 54
216: 42(int) Load 215
217: 36(bool) SLessThan 216 61
218: 36(bool) GroupNonUniformBroadcast 38 217 64
219: 42(int) Select 218 60 61
220: 127(ptr) AccessChain 49(data) 214 60 54
Store 220 219
221: 6(int) Load 8(invocation)
222: 134(ptr) AccessChain 49(data) 60 60
223: 43(ivec4) Load 222
224: 133(ivec2) VectorShuffle 223 223 0 1
227: 226(bvec2) SLessThan 224 225
228: 226(bvec2) GroupNonUniformBroadcast 38 227 64
230: 133(ivec2) Select 228 229 225
231: 134(ptr) AccessChain 49(data) 221 60
232: 43(ivec4) Load 231
233: 43(ivec4) VectorShuffle 232 230 4 5 2 3
Store 231 233
234: 6(int) Load 8(invocation)
235: 134(ptr) AccessChain 49(data) 60 60
236: 43(ivec4) Load 235
237: 143(ivec3) VectorShuffle 236 236 0 1 2
240: 239(bvec3) SLessThan 237 238
241: 239(bvec3) GroupNonUniformBroadcast 38 240 64
243: 143(ivec3) Select 241 242 238
244: 134(ptr) AccessChain 49(data) 234 60
245: 43(ivec4) Load 244
246: 43(ivec4) VectorShuffle 245 243 4 5 6 3
Store 244 246
247: 6(int) Load 8(invocation)
248: 134(ptr) AccessChain 49(data) 60 60
249: 43(ivec4) Load 248
251: 83(bvec4) SLessThan 249 250
252: 83(bvec4) GroupNonUniformBroadcast 38 251 64
254: 43(ivec4) Select 252 253 250
255: 134(ptr) AccessChain 49(data) 247 60
Store 255 254
181: 88(ptr) AccessChain 49(data) 51 51
182: 17(ivec4) Load 181
183: 180(ivec3) VectorShuffle 182 182 0 1 2
184: 180(ivec3) GroupNonUniformBroadcast 38 183 64
185: 55(ptr) AccessChain 49(data) 179 51 54
186: 6(int) CompositeExtract 184 0
Store 185 186
187: 55(ptr) AccessChain 49(data) 179 51 64
188: 6(int) CompositeExtract 184 1
Store 187 188
189: 55(ptr) AccessChain 49(data) 179 51 72
190: 6(int) CompositeExtract 184 2
Store 189 190
191: 6(int) Load 8(invocation)
192: 88(ptr) AccessChain 49(data) 125 51
193: 17(ivec4) Load 192
194: 17(ivec4) GroupNonUniformBroadcast 38 193 64
195: 88(ptr) AccessChain 49(data) 191 51
Store 195 194
196: 6(int) Load 8(invocation)
198: 197(ptr) AccessChain 49(data) 61 125 54
199:44(float64_t) Load 198
200:44(float64_t) GroupNonUniformBroadcast 38 199 54
201: 197(ptr) AccessChain 49(data) 196 125 54
Store 201 200
202: 6(int) Load 8(invocation)
205: 204(ptr) AccessChain 49(data) 60 125
206: 45(f64vec4) Load 205
207:203(f64vec2) VectorShuffle 206 206 0 1
208:203(f64vec2) GroupNonUniformBroadcast 38 207 54
209: 197(ptr) AccessChain 49(data) 202 125 54
210:44(float64_t) CompositeExtract 208 0
Store 209 210
211: 197(ptr) AccessChain 49(data) 202 125 64
212:44(float64_t) CompositeExtract 208 1
Store 211 212
213: 6(int) Load 8(invocation)
215: 204(ptr) AccessChain 49(data) 51 125
216: 45(f64vec4) Load 215
217:214(f64vec3) VectorShuffle 216 216 0 1 2
218:214(f64vec3) GroupNonUniformBroadcast 38 217 54
219: 197(ptr) AccessChain 49(data) 213 125 54
220:44(float64_t) CompositeExtract 218 0
Store 219 220
221: 197(ptr) AccessChain 49(data) 213 125 64
222:44(float64_t) CompositeExtract 218 1
Store 221 222
223: 197(ptr) AccessChain 49(data) 213 125 72
224:44(float64_t) CompositeExtract 218 2
Store 223 224
225: 6(int) Load 8(invocation)
226: 204(ptr) AccessChain 49(data) 125 125
227: 45(f64vec4) Load 226
228: 45(f64vec4) GroupNonUniformBroadcast 38 227 54
229: 204(ptr) AccessChain 49(data) 225 125
Store 229 228
230: 6(int) Load 8(invocation)
231: 131(ptr) AccessChain 49(data) 61 60 54
232: 42(int) Load 231
233: 36(bool) SLessThan 232 61
234: 36(bool) GroupNonUniformBroadcast 38 233 64
235: 42(int) Select 234 60 61
236: 131(ptr) AccessChain 49(data) 230 60 54
Store 236 235
237: 6(int) Load 8(invocation)
238: 138(ptr) AccessChain 49(data) 60 60
239: 43(ivec4) Load 238
240: 137(ivec2) VectorShuffle 239 239 0 1
243: 242(bvec2) SLessThan 240 241
244: 242(bvec2) GroupNonUniformBroadcast 38 243 64
246: 137(ivec2) Select 244 245 241
247: 131(ptr) AccessChain 49(data) 237 60 54
248: 42(int) CompositeExtract 246 0
Store 247 248
249: 131(ptr) AccessChain 49(data) 237 60 64
250: 42(int) CompositeExtract 246 1
Store 249 250
251: 6(int) Load 8(invocation)
252: 138(ptr) AccessChain 49(data) 60 60
253: 43(ivec4) Load 252
254: 148(ivec3) VectorShuffle 253 253 0 1 2
257: 256(bvec3) SLessThan 254 255
258: 256(bvec3) GroupNonUniformBroadcast 38 257 64
260: 148(ivec3) Select 258 259 255
261: 131(ptr) AccessChain 49(data) 251 60 54
262: 42(int) CompositeExtract 260 0
Store 261 262
263: 131(ptr) AccessChain 49(data) 251 60 64
264: 42(int) CompositeExtract 260 1
Store 263 264
265: 131(ptr) AccessChain 49(data) 251 60 72
266: 42(int) CompositeExtract 260 2
Store 265 266
267: 6(int) Load 8(invocation)
268: 138(ptr) AccessChain 49(data) 60 60
269: 43(ivec4) Load 268
271: 83(bvec4) SLessThan 269 270
272: 83(bvec4) GroupNonUniformBroadcast 38 271 64
274: 43(ivec4) Select 272 273 270
275: 138(ptr) AccessChain 49(data) 267 60
Store 275 274
Branch 94
256: Label
257: 6(int) Load 8(invocation)
258: 96(ptr) AccessChain 49(data) 61 61 54
259: 40(float) Load 258
260: 40(float) GroupNonUniformBroadcastFirst 38 259
261: 96(ptr) AccessChain 49(data) 257 61 54
Store 261 260
262: 6(int) Load 8(invocation)
263: 103(ptr) AccessChain 49(data) 60 61
264: 41(fvec4) Load 263
265: 102(fvec2) VectorShuffle 264 264 0 1
266: 102(fvec2) GroupNonUniformBroadcastFirst 38 265
267: 103(ptr) AccessChain 49(data) 262 61
268: 41(fvec4) Load 267
269: 41(fvec4) VectorShuffle 268 266 4 5 2 3
Store 267 269
270: 6(int) Load 8(invocation)
271: 103(ptr) AccessChain 49(data) 51 61
272: 41(fvec4) Load 271
273: 112(fvec3) VectorShuffle 272 272 0 1 2
274: 112(fvec3) GroupNonUniformBroadcastFirst 38 273
275: 103(ptr) AccessChain 49(data) 270 61
276: 41(fvec4) Load 275
277: 41(fvec4) VectorShuffle 276 274 4 5 6 3
Store 275 277
278: 6(int) Load 8(invocation)
279: 103(ptr) AccessChain 49(data) 121 61
280: 41(fvec4) Load 279
281: 41(fvec4) GroupNonUniformBroadcastFirst 38 280
282: 103(ptr) AccessChain 49(data) 278 61
Store 282 281
283: 6(int) Load 8(invocation)
284: 127(ptr) AccessChain 49(data) 61 60 54
285: 42(int) Load 284
286: 42(int) GroupNonUniformBroadcastFirst 38 285
287: 127(ptr) AccessChain 49(data) 283 60 54
Store 287 286
288: 6(int) Load 8(invocation)
289: 134(ptr) AccessChain 49(data) 60 60
290: 43(ivec4) Load 289
291: 133(ivec2) VectorShuffle 290 290 0 1
292: 133(ivec2) GroupNonUniformBroadcastFirst 38 291
293: 134(ptr) AccessChain 49(data) 288 60
294: 43(ivec4) Load 293
295: 43(ivec4) VectorShuffle 294 292 4 5 2 3
Store 293 295
296: 6(int) Load 8(invocation)
297: 134(ptr) AccessChain 49(data) 51 60
298: 43(ivec4) Load 297
299: 143(ivec3) VectorShuffle 298 298 0 1 2
300: 143(ivec3) GroupNonUniformBroadcastFirst 38 299
301: 134(ptr) AccessChain 49(data) 296 60
302: 43(ivec4) Load 301
303: 43(ivec4) VectorShuffle 302 300 4 5 6 3
Store 301 303
304: 6(int) Load 8(invocation)
305: 134(ptr) AccessChain 49(data) 121 60
306: 43(ivec4) Load 305
307: 43(ivec4) GroupNonUniformBroadcastFirst 38 306
308: 134(ptr) AccessChain 49(data) 304 60
Store 308 307
309: 6(int) Load 8(invocation)
310: 55(ptr) AccessChain 49(data) 61 51 54
311: 6(int) Load 310
312: 6(int) GroupNonUniformBroadcastFirst 38 311
313: 55(ptr) AccessChain 49(data) 309 51 54
Store 313 312
314: 6(int) Load 8(invocation)
315: 88(ptr) AccessChain 49(data) 60 51
316: 17(ivec4) Load 315
317: 162(ivec2) VectorShuffle 316 316 0 1
318: 162(ivec2) GroupNonUniformBroadcastFirst 38 317
319: 88(ptr) AccessChain 49(data) 314 51
320: 17(ivec4) Load 319
321: 17(ivec4) VectorShuffle 320 318 4 5 2 3
Store 319 321
322: 6(int) Load 8(invocation)
323: 88(ptr) AccessChain 49(data) 51 51
324: 17(ivec4) Load 323
325: 171(ivec3) VectorShuffle 324 324 0 1 2
326: 171(ivec3) GroupNonUniformBroadcastFirst 38 325
327: 88(ptr) AccessChain 49(data) 322 51
328: 17(ivec4) Load 327
329: 17(ivec4) VectorShuffle 328 326 4 5 6 3
Store 327 329
330: 6(int) Load 8(invocation)
331: 88(ptr) AccessChain 49(data) 121 51
332: 17(ivec4) Load 331
333: 17(ivec4) GroupNonUniformBroadcastFirst 38 332
334: 88(ptr) AccessChain 49(data) 330 51
Store 334 333
335: 6(int) Load 8(invocation)
336: 185(ptr) AccessChain 49(data) 61 121 54
337:44(float64_t) Load 336
338:44(float64_t) GroupNonUniformBroadcastFirst 38 337
339: 185(ptr) AccessChain 49(data) 335 121 54
Store 339 338
340: 6(int) Load 8(invocation)
341: 192(ptr) AccessChain 49(data) 60 121
342: 45(f64vec4) Load 341
343:191(f64vec2) VectorShuffle 342 342 0 1
344:191(f64vec2) GroupNonUniformBroadcastFirst 38 343
345: 192(ptr) AccessChain 49(data) 340 121
346: 45(f64vec4) Load 345
347: 45(f64vec4) VectorShuffle 346 344 4 5 2 3
Store 345 347
348: 6(int) Load 8(invocation)
349: 192(ptr) AccessChain 49(data) 51 121
350: 45(f64vec4) Load 349
351:201(f64vec3) VectorShuffle 350 350 0 1 2
352:201(f64vec3) GroupNonUniformBroadcastFirst 38 351
353: 192(ptr) AccessChain 49(data) 348 121
354: 45(f64vec4) Load 353
355: 45(f64vec4) VectorShuffle 354 352 4 5 6 3
Store 353 355
356: 6(int) Load 8(invocation)
357: 192(ptr) AccessChain 49(data) 121 121
358: 45(f64vec4) Load 357
359: 45(f64vec4) GroupNonUniformBroadcastFirst 38 358
360: 192(ptr) AccessChain 49(data) 356 121
Store 360 359
361: 6(int) Load 8(invocation)
362: 127(ptr) AccessChain 49(data) 61 60 54
363: 42(int) Load 362
364: 36(bool) SLessThan 363 61
365: 36(bool) GroupNonUniformBroadcastFirst 38 364
366: 42(int) Select 365 60 61
367: 127(ptr) AccessChain 49(data) 361 60 54
Store 367 366
368: 6(int) Load 8(invocation)
369: 134(ptr) AccessChain 49(data) 60 60
370: 43(ivec4) Load 369
371: 133(ivec2) VectorShuffle 370 370 0 1
372: 226(bvec2) SLessThan 371 225
373: 226(bvec2) GroupNonUniformBroadcastFirst 38 372
374: 133(ivec2) Select 373 229 225
375: 134(ptr) AccessChain 49(data) 368 60
376: 43(ivec4) Load 375
377: 43(ivec4) VectorShuffle 376 374 4 5 2 3
Store 375 377
378: 6(int) Load 8(invocation)
379: 134(ptr) AccessChain 49(data) 60 60
380: 43(ivec4) Load 379
381: 143(ivec3) VectorShuffle 380 380 0 1 2
382: 239(bvec3) SLessThan 381 238
383: 239(bvec3) GroupNonUniformBroadcastFirst 38 382
384: 143(ivec3) Select 383 242 238
385: 134(ptr) AccessChain 49(data) 378 60
386: 43(ivec4) Load 385
387: 43(ivec4) VectorShuffle 386 384 4 5 6 3
Store 385 387
388: 6(int) Load 8(invocation)
389: 134(ptr) AccessChain 49(data) 60 60
390: 43(ivec4) Load 389
391: 83(bvec4) SLessThan 390 250
392: 83(bvec4) GroupNonUniformBroadcastFirst 38 391
393: 43(ivec4) Select 392 253 250
394: 134(ptr) AccessChain 49(data) 388 60
Store 394 393
276: Label
277: 6(int) Load 8(invocation)
278: 96(ptr) AccessChain 49(data) 61 61 54
279: 40(float) Load 278
280: 40(float) GroupNonUniformBroadcastFirst 38 279
281: 96(ptr) AccessChain 49(data) 277 61 54
Store 281 280
282: 6(int) Load 8(invocation)
283: 103(ptr) AccessChain 49(data) 60 61
284: 41(fvec4) Load 283
285: 102(fvec2) VectorShuffle 284 284 0 1
286: 102(fvec2) GroupNonUniformBroadcastFirst 38 285
287: 96(ptr) AccessChain 49(data) 282 61 54
288: 40(float) CompositeExtract 286 0
Store 287 288
289: 96(ptr) AccessChain 49(data) 282 61 64
290: 40(float) CompositeExtract 286 1
Store 289 290
291: 6(int) Load 8(invocation)
292: 103(ptr) AccessChain 49(data) 51 61
293: 41(fvec4) Load 292
294: 113(fvec3) VectorShuffle 293 293 0 1 2
295: 113(fvec3) GroupNonUniformBroadcastFirst 38 294
296: 96(ptr) AccessChain 49(data) 291 61 54
297: 40(float) CompositeExtract 295 0
Store 296 297
298: 96(ptr) AccessChain 49(data) 291 61 64
299: 40(float) CompositeExtract 295 1
Store 298 299
300: 96(ptr) AccessChain 49(data) 291 61 72
301: 40(float) CompositeExtract 295 2
Store 300 301
302: 6(int) Load 8(invocation)
303: 103(ptr) AccessChain 49(data) 125 61
304: 41(fvec4) Load 303
305: 41(fvec4) GroupNonUniformBroadcastFirst 38 304
306: 103(ptr) AccessChain 49(data) 302 61
Store 306 305
307: 6(int) Load 8(invocation)
308: 131(ptr) AccessChain 49(data) 61 60 54
309: 42(int) Load 308
310: 42(int) GroupNonUniformBroadcastFirst 38 309
311: 131(ptr) AccessChain 49(data) 307 60 54
Store 311 310
312: 6(int) Load 8(invocation)
313: 138(ptr) AccessChain 49(data) 60 60
314: 43(ivec4) Load 313
315: 137(ivec2) VectorShuffle 314 314 0 1
316: 137(ivec2) GroupNonUniformBroadcastFirst 38 315
317: 131(ptr) AccessChain 49(data) 312 60 54
318: 42(int) CompositeExtract 316 0
Store 317 318
319: 131(ptr) AccessChain 49(data) 312 60 64
320: 42(int) CompositeExtract 316 1
Store 319 320
321: 6(int) Load 8(invocation)
322: 138(ptr) AccessChain 49(data) 51 60
323: 43(ivec4) Load 322
324: 148(ivec3) VectorShuffle 323 323 0 1 2
325: 148(ivec3) GroupNonUniformBroadcastFirst 38 324
326: 131(ptr) AccessChain 49(data) 321 60 54
327: 42(int) CompositeExtract 325 0
Store 326 327
328: 131(ptr) AccessChain 49(data) 321 60 64
329: 42(int) CompositeExtract 325 1
Store 328 329
330: 131(ptr) AccessChain 49(data) 321 60 72
331: 42(int) CompositeExtract 325 2
Store 330 331
332: 6(int) Load 8(invocation)
333: 138(ptr) AccessChain 49(data) 125 60
334: 43(ivec4) Load 333
335: 43(ivec4) GroupNonUniformBroadcastFirst 38 334
336: 138(ptr) AccessChain 49(data) 332 60
Store 336 335
337: 6(int) Load 8(invocation)
338: 55(ptr) AccessChain 49(data) 61 51 54
339: 6(int) Load 338
340: 6(int) GroupNonUniformBroadcastFirst 38 339
341: 55(ptr) AccessChain 49(data) 337 51 54
Store 341 340
342: 6(int) Load 8(invocation)
343: 88(ptr) AccessChain 49(data) 60 51
344: 17(ivec4) Load 343
345: 170(ivec2) VectorShuffle 344 344 0 1
346: 170(ivec2) GroupNonUniformBroadcastFirst 38 345
347: 55(ptr) AccessChain 49(data) 342 51 54
348: 6(int) CompositeExtract 346 0
Store 347 348
349: 55(ptr) AccessChain 49(data) 342 51 64
350: 6(int) CompositeExtract 346 1
Store 349 350
351: 6(int) Load 8(invocation)
352: 88(ptr) AccessChain 49(data) 51 51
353: 17(ivec4) Load 352
354: 180(ivec3) VectorShuffle 353 353 0 1 2
355: 180(ivec3) GroupNonUniformBroadcastFirst 38 354
356: 55(ptr) AccessChain 49(data) 351 51 54
357: 6(int) CompositeExtract 355 0
Store 356 357
358: 55(ptr) AccessChain 49(data) 351 51 64
359: 6(int) CompositeExtract 355 1
Store 358 359
360: 55(ptr) AccessChain 49(data) 351 51 72
361: 6(int) CompositeExtract 355 2
Store 360 361
362: 6(int) Load 8(invocation)
363: 88(ptr) AccessChain 49(data) 125 51
364: 17(ivec4) Load 363
365: 17(ivec4) GroupNonUniformBroadcastFirst 38 364
366: 88(ptr) AccessChain 49(data) 362 51
Store 366 365
367: 6(int) Load 8(invocation)
368: 197(ptr) AccessChain 49(data) 61 125 54
369:44(float64_t) Load 368
370:44(float64_t) GroupNonUniformBroadcastFirst 38 369
371: 197(ptr) AccessChain 49(data) 367 125 54
Store 371 370
372: 6(int) Load 8(invocation)
373: 204(ptr) AccessChain 49(data) 60 125
374: 45(f64vec4) Load 373
375:203(f64vec2) VectorShuffle 374 374 0 1
376:203(f64vec2) GroupNonUniformBroadcastFirst 38 375
377: 197(ptr) AccessChain 49(data) 372 125 54
378:44(float64_t) CompositeExtract 376 0
Store 377 378
379: 197(ptr) AccessChain 49(data) 372 125 64
380:44(float64_t) CompositeExtract 376 1
Store 379 380
381: 6(int) Load 8(invocation)
382: 204(ptr) AccessChain 49(data) 51 125
383: 45(f64vec4) Load 382
384:214(f64vec3) VectorShuffle 383 383 0 1 2
385:214(f64vec3) GroupNonUniformBroadcastFirst 38 384
386: 197(ptr) AccessChain 49(data) 381 125 54
387:44(float64_t) CompositeExtract 385 0
Store 386 387
388: 197(ptr) AccessChain 49(data) 381 125 64
389:44(float64_t) CompositeExtract 385 1
Store 388 389
390: 197(ptr) AccessChain 49(data) 381 125 72
391:44(float64_t) CompositeExtract 385 2
Store 390 391
392: 6(int) Load 8(invocation)
393: 204(ptr) AccessChain 49(data) 125 125
394: 45(f64vec4) Load 393
395: 45(f64vec4) GroupNonUniformBroadcastFirst 38 394
396: 204(ptr) AccessChain 49(data) 392 125
Store 396 395
397: 6(int) Load 8(invocation)
398: 131(ptr) AccessChain 49(data) 61 60 54
399: 42(int) Load 398
400: 36(bool) SLessThan 399 61
401: 36(bool) GroupNonUniformBroadcastFirst 38 400
402: 42(int) Select 401 60 61
403: 131(ptr) AccessChain 49(data) 397 60 54
Store 403 402
404: 6(int) Load 8(invocation)
405: 138(ptr) AccessChain 49(data) 60 60
406: 43(ivec4) Load 405
407: 137(ivec2) VectorShuffle 406 406 0 1
408: 242(bvec2) SLessThan 407 241
409: 242(bvec2) GroupNonUniformBroadcastFirst 38 408
410: 137(ivec2) Select 409 245 241
411: 131(ptr) AccessChain 49(data) 404 60 54
412: 42(int) CompositeExtract 410 0
Store 411 412
413: 131(ptr) AccessChain 49(data) 404 60 64
414: 42(int) CompositeExtract 410 1
Store 413 414
415: 6(int) Load 8(invocation)
416: 138(ptr) AccessChain 49(data) 60 60
417: 43(ivec4) Load 416
418: 148(ivec3) VectorShuffle 417 417 0 1 2
419: 256(bvec3) SLessThan 418 255
420: 256(bvec3) GroupNonUniformBroadcastFirst 38 419
421: 148(ivec3) Select 420 259 255
422: 131(ptr) AccessChain 49(data) 415 60 54
423: 42(int) CompositeExtract 421 0
Store 422 423
424: 131(ptr) AccessChain 49(data) 415 60 64
425: 42(int) CompositeExtract 421 1
Store 424 425
426: 131(ptr) AccessChain 49(data) 415 60 72
427: 42(int) CompositeExtract 421 2
Store 426 427
428: 6(int) Load 8(invocation)
429: 138(ptr) AccessChain 49(data) 60 60
430: 43(ivec4) Load 429
431: 83(bvec4) SLessThan 430 270
432: 83(bvec4) GroupNonUniformBroadcastFirst 38 431
433: 43(ivec4) Select 432 273 270
434: 138(ptr) AccessChain 49(data) 428 60
Store 434 433
Branch 94
94: Label
Return