blob: 143b2e931fb7b2d971bfd29bb1d992ed386e1ff7 [file] [log] [blame]
spv.shaderBallot.comp
// Module Version 10000
// Generated by (magic number): 8000b
// Id's are bound by 397
Capability Shader
Capability Int64
Capability SubgroupBallotKHR
Extension "SPV_KHR_shader_ballot"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 10 12 22 29 36 43 50
ExecutionMode 4 LocalSize 8 8 1
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
SourceExtension "GL_ARB_shader_ballot"
Name 4 "main"
Name 8 "invocation"
Name 10 "gl_SubGroupInvocationARB"
Name 12 "gl_SubGroupSizeARB"
Name 19 "relMask"
Name 22 "gl_SubGroupEqMaskARB"
Name 29 "gl_SubGroupGeMaskARB"
Name 36 "gl_SubGroupGtMaskARB"
Name 43 "gl_SubGroupLeMaskARB"
Name 50 "gl_SubGroupLtMaskARB"
Name 72 "Buffers"
MemberName 72(Buffers) 0 "f4"
MemberName 72(Buffers) 1 "i4"
MemberName 72(Buffers) 2 "u4"
Name 75 "data"
Decorate 10(gl_SubGroupInvocationARB) BuiltIn SubgroupLocalInvocationId
Decorate 12(gl_SubGroupSizeARB) BuiltIn SubgroupSize
Decorate 22(gl_SubGroupEqMaskARB) BuiltIn SubgroupEqMaskKHR
Decorate 29(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
Decorate 36(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR
Decorate 43(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR
Decorate 50(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
MemberDecorate 72(Buffers) 0 Offset 0
MemberDecorate 72(Buffers) 1 Offset 16
MemberDecorate 72(Buffers) 2 Offset 32
Decorate 72(Buffers) BufferBlock
Decorate 75(data) DescriptorSet 0
Decorate 75(data) Binding 0
Decorate 396 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypePointer Input 6(int)
10(gl_SubGroupInvocationARB): 9(ptr) Variable Input
12(gl_SubGroupSizeARB): 9(ptr) Variable Input
15: 6(int) Constant 4
17: TypeInt 64 0
18: TypePointer Function 17(int64_t)
20: TypeVector 6(int) 4
21: TypePointer Input 20(ivec4)
22(gl_SubGroupEqMaskARB): 21(ptr) Variable Input
26: TypeVector 6(int) 2
29(gl_SubGroupGeMaskARB): 21(ptr) Variable Input
36(gl_SubGroupGtMaskARB): 21(ptr) Variable Input
43(gl_SubGroupLeMaskARB): 21(ptr) Variable Input
50(gl_SubGroupLtMaskARB): 21(ptr) Variable Input
58: TypeBool
59: 58(bool) ConstantTrue
68: TypeFloat 32
69: TypeVector 68(float) 4
70: TypeInt 32 1
71: TypeVector 70(int) 4
72(Buffers): TypeStruct 69(fvec4) 71(ivec4) 20(ivec4)
73: TypeArray 72(Buffers) 15
74: TypePointer Uniform 73
75(data): 74(ptr) Variable Uniform
77: 70(int) Constant 0
78: 6(int) Constant 0
79: TypePointer Uniform 68(float)
86: 70(int) Constant 1
87: TypeVector 68(float) 2
88: TypePointer Uniform 69(fvec4)
100: 6(int) Constant 1
104: 70(int) Constant 2
105: TypeVector 68(float) 3
121: 6(int) Constant 2
125: 70(int) Constant 3
140: TypePointer Uniform 70(int)
147: TypeVector 70(int) 2
148: TypePointer Uniform 71(ivec4)
163: TypeVector 70(int) 3
196: TypePointer Uniform 6(int)
203: TypePointer Uniform 20(ivec4)
218: TypeVector 6(int) 3
395: 6(int) Constant 8
396: 218(ivec3) ConstantComposite 395 395 100
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
19(relMask): 18(ptr) Variable Function
11: 6(int) Load 10(gl_SubGroupInvocationARB)
13: 6(int) Load 12(gl_SubGroupSizeARB)
14: 6(int) IAdd 11 13
16: 6(int) UMod 14 15
Store 8(invocation) 16
23: 20(ivec4) Load 22(gl_SubGroupEqMaskARB)
24: 6(int) CompositeExtract 23 0
25: 6(int) CompositeExtract 23 1
27: 26(ivec2) CompositeConstruct 24 25
28: 17(int64_t) Bitcast 27
30: 20(ivec4) Load 29(gl_SubGroupGeMaskARB)
31: 6(int) CompositeExtract 30 0
32: 6(int) CompositeExtract 30 1
33: 26(ivec2) CompositeConstruct 31 32
34: 17(int64_t) Bitcast 33
35: 17(int64_t) IAdd 28 34
37: 20(ivec4) Load 36(gl_SubGroupGtMaskARB)
38: 6(int) CompositeExtract 37 0
39: 6(int) CompositeExtract 37 1
40: 26(ivec2) CompositeConstruct 38 39
41: 17(int64_t) Bitcast 40
42: 17(int64_t) IAdd 35 41
44: 20(ivec4) Load 43(gl_SubGroupLeMaskARB)
45: 6(int) CompositeExtract 44 0
46: 6(int) CompositeExtract 44 1
47: 26(ivec2) CompositeConstruct 45 46
48: 17(int64_t) Bitcast 47
49: 17(int64_t) IAdd 42 48
51: 20(ivec4) Load 50(gl_SubGroupLtMaskARB)
52: 6(int) CompositeExtract 51 0
53: 6(int) CompositeExtract 51 1
54: 26(ivec2) CompositeConstruct 52 53
55: 17(int64_t) Bitcast 54
56: 17(int64_t) IAdd 49 55
Store 19(relMask) 56
57: 17(int64_t) Load 19(relMask)
60: 20(ivec4) SubgroupBallotKHR 59
61: 6(int) CompositeExtract 60 0
62: 6(int) CompositeExtract 60 1
63: 26(ivec2) CompositeConstruct 61 62
64: 17(int64_t) Bitcast 63
65: 58(bool) IEqual 57 64
SelectionMerge 67 None
BranchConditional 65 66 250
66: Label
76: 6(int) Load 8(invocation)
80: 79(ptr) AccessChain 75(data) 77 77 78
81: 68(float) Load 80
82: 6(int) Load 8(invocation)
83: 68(float) SubgroupReadInvocationKHR 81 82
84: 79(ptr) AccessChain 75(data) 76 77 78
Store 84 83
85: 6(int) Load 8(invocation)
89: 88(ptr) AccessChain 75(data) 86 77
90: 69(fvec4) Load 89
91: 87(fvec2) VectorShuffle 90 90 0 1
92: 6(int) Load 8(invocation)
93: 68(float) CompositeExtract 91 0
94: 68(float) SubgroupReadInvocationKHR 93 92
95: 68(float) CompositeExtract 91 1
96: 68(float) SubgroupReadInvocationKHR 95 92
97: 87(fvec2) CompositeConstruct 94 96
98: 79(ptr) AccessChain 75(data) 85 77 78
99: 68(float) CompositeExtract 97 0
Store 98 99
101: 79(ptr) AccessChain 75(data) 85 77 100
102: 68(float) CompositeExtract 97 1
Store 101 102
103: 6(int) Load 8(invocation)
106: 88(ptr) AccessChain 75(data) 104 77
107: 69(fvec4) Load 106
108: 105(fvec3) VectorShuffle 107 107 0 1 2
109: 6(int) Load 8(invocation)
110: 68(float) CompositeExtract 108 0
111: 68(float) SubgroupReadInvocationKHR 110 109
112: 68(float) CompositeExtract 108 1
113: 68(float) SubgroupReadInvocationKHR 112 109
114: 68(float) CompositeExtract 108 2
115: 68(float) SubgroupReadInvocationKHR 114 109
116: 105(fvec3) CompositeConstruct 111 113 115
117: 79(ptr) AccessChain 75(data) 103 77 78
118: 68(float) CompositeExtract 116 0
Store 117 118
119: 79(ptr) AccessChain 75(data) 103 77 100
120: 68(float) CompositeExtract 116 1
Store 119 120
122: 79(ptr) AccessChain 75(data) 103 77 121
123: 68(float) CompositeExtract 116 2
Store 122 123
124: 6(int) Load 8(invocation)
126: 88(ptr) AccessChain 75(data) 125 77
127: 69(fvec4) Load 126
128: 6(int) Load 8(invocation)
129: 68(float) CompositeExtract 127 0
130: 68(float) SubgroupReadInvocationKHR 129 128
131: 68(float) CompositeExtract 127 1
132: 68(float) SubgroupReadInvocationKHR 131 128
133: 68(float) CompositeExtract 127 2
134: 68(float) SubgroupReadInvocationKHR 133 128
135: 68(float) CompositeExtract 127 3
136: 68(float) SubgroupReadInvocationKHR 135 128
137: 69(fvec4) CompositeConstruct 130 132 134 136
138: 88(ptr) AccessChain 75(data) 124 77
Store 138 137
139: 6(int) Load 8(invocation)
141: 140(ptr) AccessChain 75(data) 77 86 78
142: 70(int) Load 141
143: 6(int) Load 8(invocation)
144: 70(int) SubgroupReadInvocationKHR 142 143
145: 140(ptr) AccessChain 75(data) 139 86 78
Store 145 144
146: 6(int) Load 8(invocation)
149: 148(ptr) AccessChain 75(data) 86 86
150: 71(ivec4) Load 149
151: 147(ivec2) VectorShuffle 150 150 0 1
152: 6(int) Load 8(invocation)
153: 70(int) CompositeExtract 151 0
154: 70(int) SubgroupReadInvocationKHR 153 152
155: 70(int) CompositeExtract 151 1
156: 70(int) SubgroupReadInvocationKHR 155 152
157: 147(ivec2) CompositeConstruct 154 156
158: 140(ptr) AccessChain 75(data) 146 86 78
159: 70(int) CompositeExtract 157 0
Store 158 159
160: 140(ptr) AccessChain 75(data) 146 86 100
161: 70(int) CompositeExtract 157 1
Store 160 161
162: 6(int) Load 8(invocation)
164: 148(ptr) AccessChain 75(data) 104 86
165: 71(ivec4) Load 164
166: 163(ivec3) VectorShuffle 165 165 0 1 2
167: 6(int) Load 8(invocation)
168: 70(int) CompositeExtract 166 0
169: 70(int) SubgroupReadInvocationKHR 168 167
170: 70(int) CompositeExtract 166 1
171: 70(int) SubgroupReadInvocationKHR 170 167
172: 70(int) CompositeExtract 166 2
173: 70(int) SubgroupReadInvocationKHR 172 167
174: 163(ivec3) CompositeConstruct 169 171 173
175: 140(ptr) AccessChain 75(data) 162 86 78
176: 70(int) CompositeExtract 174 0
Store 175 176
177: 140(ptr) AccessChain 75(data) 162 86 100
178: 70(int) CompositeExtract 174 1
Store 177 178
179: 140(ptr) AccessChain 75(data) 162 86 121
180: 70(int) CompositeExtract 174 2
Store 179 180
181: 6(int) Load 8(invocation)
182: 148(ptr) AccessChain 75(data) 125 86
183: 71(ivec4) Load 182
184: 6(int) Load 8(invocation)
185: 70(int) CompositeExtract 183 0
186: 70(int) SubgroupReadInvocationKHR 185 184
187: 70(int) CompositeExtract 183 1
188: 70(int) SubgroupReadInvocationKHR 187 184
189: 70(int) CompositeExtract 183 2
190: 70(int) SubgroupReadInvocationKHR 189 184
191: 70(int) CompositeExtract 183 3
192: 70(int) SubgroupReadInvocationKHR 191 184
193: 71(ivec4) CompositeConstruct 186 188 190 192
194: 148(ptr) AccessChain 75(data) 181 86
Store 194 193
195: 6(int) Load 8(invocation)
197: 196(ptr) AccessChain 75(data) 77 104 78
198: 6(int) Load 197
199: 6(int) Load 8(invocation)
200: 6(int) SubgroupReadInvocationKHR 198 199
201: 196(ptr) AccessChain 75(data) 195 104 78
Store 201 200
202: 6(int) Load 8(invocation)
204: 203(ptr) AccessChain 75(data) 86 104
205: 20(ivec4) Load 204
206: 26(ivec2) VectorShuffle 205 205 0 1
207: 6(int) Load 8(invocation)
208: 6(int) CompositeExtract 206 0
209: 6(int) SubgroupReadInvocationKHR 208 207
210: 6(int) CompositeExtract 206 1
211: 6(int) SubgroupReadInvocationKHR 210 207
212: 26(ivec2) CompositeConstruct 209 211
213: 196(ptr) AccessChain 75(data) 202 104 78
214: 6(int) CompositeExtract 212 0
Store 213 214
215: 196(ptr) AccessChain 75(data) 202 104 100
216: 6(int) CompositeExtract 212 1
Store 215 216
217: 6(int) Load 8(invocation)
219: 203(ptr) AccessChain 75(data) 104 104
220: 20(ivec4) Load 219
221: 218(ivec3) VectorShuffle 220 220 0 1 2
222: 6(int) Load 8(invocation)
223: 6(int) CompositeExtract 221 0
224: 6(int) SubgroupReadInvocationKHR 223 222
225: 6(int) CompositeExtract 221 1
226: 6(int) SubgroupReadInvocationKHR 225 222
227: 6(int) CompositeExtract 221 2
228: 6(int) SubgroupReadInvocationKHR 227 222
229: 218(ivec3) CompositeConstruct 224 226 228
230: 196(ptr) AccessChain 75(data) 217 104 78
231: 6(int) CompositeExtract 229 0
Store 230 231
232: 196(ptr) AccessChain 75(data) 217 104 100
233: 6(int) CompositeExtract 229 1
Store 232 233
234: 196(ptr) AccessChain 75(data) 217 104 121
235: 6(int) CompositeExtract 229 2
Store 234 235
236: 6(int) Load 8(invocation)
237: 203(ptr) AccessChain 75(data) 125 104
238: 20(ivec4) Load 237
239: 6(int) Load 8(invocation)
240: 6(int) CompositeExtract 238 0
241: 6(int) SubgroupReadInvocationKHR 240 239
242: 6(int) CompositeExtract 238 1
243: 6(int) SubgroupReadInvocationKHR 242 239
244: 6(int) CompositeExtract 238 2
245: 6(int) SubgroupReadInvocationKHR 244 239
246: 6(int) CompositeExtract 238 3
247: 6(int) SubgroupReadInvocationKHR 246 239
248: 20(ivec4) CompositeConstruct 241 243 245 247
249: 203(ptr) AccessChain 75(data) 236 104
Store 249 248
Branch 67
250: Label
251: 6(int) Load 8(invocation)
252: 79(ptr) AccessChain 75(data) 77 77 78
253: 68(float) Load 252
254: 68(float) SubgroupFirstInvocationKHR 253
255: 79(ptr) AccessChain 75(data) 251 77 78
Store 255 254
256: 6(int) Load 8(invocation)
257: 88(ptr) AccessChain 75(data) 86 77
258: 69(fvec4) Load 257
259: 87(fvec2) VectorShuffle 258 258 0 1
260: 68(float) CompositeExtract 259 0
261: 68(float) SubgroupFirstInvocationKHR 260
262: 68(float) CompositeExtract 259 1
263: 68(float) SubgroupFirstInvocationKHR 262
264: 87(fvec2) CompositeConstruct 261 263
265: 79(ptr) AccessChain 75(data) 256 77 78
266: 68(float) CompositeExtract 264 0
Store 265 266
267: 79(ptr) AccessChain 75(data) 256 77 100
268: 68(float) CompositeExtract 264 1
Store 267 268
269: 6(int) Load 8(invocation)
270: 88(ptr) AccessChain 75(data) 104 77
271: 69(fvec4) Load 270
272: 105(fvec3) VectorShuffle 271 271 0 1 2
273: 68(float) CompositeExtract 272 0
274: 68(float) SubgroupFirstInvocationKHR 273
275: 68(float) CompositeExtract 272 1
276: 68(float) SubgroupFirstInvocationKHR 275
277: 68(float) CompositeExtract 272 2
278: 68(float) SubgroupFirstInvocationKHR 277
279: 105(fvec3) CompositeConstruct 274 276 278
280: 79(ptr) AccessChain 75(data) 269 77 78
281: 68(float) CompositeExtract 279 0
Store 280 281
282: 79(ptr) AccessChain 75(data) 269 77 100
283: 68(float) CompositeExtract 279 1
Store 282 283
284: 79(ptr) AccessChain 75(data) 269 77 121
285: 68(float) CompositeExtract 279 2
Store 284 285
286: 6(int) Load 8(invocation)
287: 88(ptr) AccessChain 75(data) 125 77
288: 69(fvec4) Load 287
289: 68(float) CompositeExtract 288 0
290: 68(float) SubgroupFirstInvocationKHR 289
291: 68(float) CompositeExtract 288 1
292: 68(float) SubgroupFirstInvocationKHR 291
293: 68(float) CompositeExtract 288 2
294: 68(float) SubgroupFirstInvocationKHR 293
295: 68(float) CompositeExtract 288 3
296: 68(float) SubgroupFirstInvocationKHR 295
297: 69(fvec4) CompositeConstruct 290 292 294 296
298: 88(ptr) AccessChain 75(data) 286 77
Store 298 297
299: 6(int) Load 8(invocation)
300: 140(ptr) AccessChain 75(data) 77 86 78
301: 70(int) Load 300
302: 70(int) SubgroupFirstInvocationKHR 301
303: 140(ptr) AccessChain 75(data) 299 86 78
Store 303 302
304: 6(int) Load 8(invocation)
305: 148(ptr) AccessChain 75(data) 86 86
306: 71(ivec4) Load 305
307: 147(ivec2) VectorShuffle 306 306 0 1
308: 70(int) CompositeExtract 307 0
309: 70(int) SubgroupFirstInvocationKHR 308
310: 70(int) CompositeExtract 307 1
311: 70(int) SubgroupFirstInvocationKHR 310
312: 147(ivec2) CompositeConstruct 309 311
313: 140(ptr) AccessChain 75(data) 304 86 78
314: 70(int) CompositeExtract 312 0
Store 313 314
315: 140(ptr) AccessChain 75(data) 304 86 100
316: 70(int) CompositeExtract 312 1
Store 315 316
317: 6(int) Load 8(invocation)
318: 148(ptr) AccessChain 75(data) 104 86
319: 71(ivec4) Load 318
320: 163(ivec3) VectorShuffle 319 319 0 1 2
321: 70(int) CompositeExtract 320 0
322: 70(int) SubgroupFirstInvocationKHR 321
323: 70(int) CompositeExtract 320 1
324: 70(int) SubgroupFirstInvocationKHR 323
325: 70(int) CompositeExtract 320 2
326: 70(int) SubgroupFirstInvocationKHR 325
327: 163(ivec3) CompositeConstruct 322 324 326
328: 140(ptr) AccessChain 75(data) 317 86 78
329: 70(int) CompositeExtract 327 0
Store 328 329
330: 140(ptr) AccessChain 75(data) 317 86 100
331: 70(int) CompositeExtract 327 1
Store 330 331
332: 140(ptr) AccessChain 75(data) 317 86 121
333: 70(int) CompositeExtract 327 2
Store 332 333
334: 6(int) Load 8(invocation)
335: 148(ptr) AccessChain 75(data) 125 86
336: 71(ivec4) Load 335
337: 70(int) CompositeExtract 336 0
338: 70(int) SubgroupFirstInvocationKHR 337
339: 70(int) CompositeExtract 336 1
340: 70(int) SubgroupFirstInvocationKHR 339
341: 70(int) CompositeExtract 336 2
342: 70(int) SubgroupFirstInvocationKHR 341
343: 70(int) CompositeExtract 336 3
344: 70(int) SubgroupFirstInvocationKHR 343
345: 71(ivec4) CompositeConstruct 338 340 342 344
346: 148(ptr) AccessChain 75(data) 334 86
Store 346 345
347: 6(int) Load 8(invocation)
348: 196(ptr) AccessChain 75(data) 77 104 78
349: 6(int) Load 348
350: 6(int) SubgroupFirstInvocationKHR 349
351: 196(ptr) AccessChain 75(data) 347 104 78
Store 351 350
352: 6(int) Load 8(invocation)
353: 203(ptr) AccessChain 75(data) 86 104
354: 20(ivec4) Load 353
355: 26(ivec2) VectorShuffle 354 354 0 1
356: 6(int) CompositeExtract 355 0
357: 6(int) SubgroupFirstInvocationKHR 356
358: 6(int) CompositeExtract 355 1
359: 6(int) SubgroupFirstInvocationKHR 358
360: 26(ivec2) CompositeConstruct 357 359
361: 196(ptr) AccessChain 75(data) 352 104 78
362: 6(int) CompositeExtract 360 0
Store 361 362
363: 196(ptr) AccessChain 75(data) 352 104 100
364: 6(int) CompositeExtract 360 1
Store 363 364
365: 6(int) Load 8(invocation)
366: 203(ptr) AccessChain 75(data) 104 104
367: 20(ivec4) Load 366
368: 218(ivec3) VectorShuffle 367 367 0 1 2
369: 6(int) CompositeExtract 368 0
370: 6(int) SubgroupFirstInvocationKHR 369
371: 6(int) CompositeExtract 368 1
372: 6(int) SubgroupFirstInvocationKHR 371
373: 6(int) CompositeExtract 368 2
374: 6(int) SubgroupFirstInvocationKHR 373
375: 218(ivec3) CompositeConstruct 370 372 374
376: 196(ptr) AccessChain 75(data) 365 104 78
377: 6(int) CompositeExtract 375 0
Store 376 377
378: 196(ptr) AccessChain 75(data) 365 104 100
379: 6(int) CompositeExtract 375 1
Store 378 379
380: 196(ptr) AccessChain 75(data) 365 104 121
381: 6(int) CompositeExtract 375 2
Store 380 381
382: 6(int) Load 8(invocation)
383: 203(ptr) AccessChain 75(data) 125 104
384: 20(ivec4) Load 383
385: 6(int) CompositeExtract 384 0
386: 6(int) SubgroupFirstInvocationKHR 385
387: 6(int) CompositeExtract 384 1
388: 6(int) SubgroupFirstInvocationKHR 387
389: 6(int) CompositeExtract 384 2
390: 6(int) SubgroupFirstInvocationKHR 389
391: 6(int) CompositeExtract 384 3
392: 6(int) SubgroupFirstInvocationKHR 391
393: 20(ivec4) CompositeConstruct 386 388 390 392
394: 203(ptr) AccessChain 75(data) 382 104
Store 394 393
Branch 67
67: Label
Return
FunctionEnd