blob: 9fe196487c870a5b6dc1c41da289328ba811e744 [file] [log] [blame]
spv.subgroupBallot.comp
// Module Version 10300
// Generated by (magic number): 80008
// Id's are bound by 397
Capability Shader
Capability Float64
Capability GroupNonUniform
Capability GroupNonUniformBallot
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 10 12 21 23 26 29 32
ExecutionMode 4 LocalSize 8 8 1
Source GLSL 450
SourceExtension "GL_KHR_shader_subgroup_ballot"
SourceExtension "GL_KHR_shader_subgroup_basic"
Name 4 "main"
Name 8 "invocation"
Name 10 "gl_SubgroupInvocationID"
Name 12 "gl_SubgroupSize"
Name 19 "relMask"
Name 21 "gl_SubgroupEqMask"
Name 23 "gl_SubgroupGeMask"
Name 26 "gl_SubgroupGtMask"
Name 29 "gl_SubgroupLeMask"
Name 32 "gl_SubgroupLtMask"
Name 35 "result"
Name 46 "Buffers"
MemberName 46(Buffers) 0 "f4"
MemberName 46(Buffers) 1 "i4"
MemberName 46(Buffers) 2 "u4"
MemberName 46(Buffers) 3 "d4"
Name 49 "data"
Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
Decorate 11 RelaxedPrecision
Decorate 12(gl_SubgroupSize) RelaxedPrecision
Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 13 RelaxedPrecision
Decorate 14 RelaxedPrecision
Decorate 16 RelaxedPrecision
Decorate 21(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
Decorate 23(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
Decorate 26(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
Decorate 29(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
Decorate 32(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
MemberDecorate 46(Buffers) 0 Offset 0
MemberDecorate 46(Buffers) 1 Offset 16
MemberDecorate 46(Buffers) 2 Offset 32
MemberDecorate 46(Buffers) 3 Offset 64
Decorate 46(Buffers) Block
Decorate 49(data) DescriptorSet 0
Decorate 49(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_SubgroupInvocationID): 9(ptr) Variable Input
12(gl_SubgroupSize): 9(ptr) Variable Input
15: 6(int) Constant 4
17: TypeVector 6(int) 4
18: TypePointer Function 17(ivec4)
20: TypePointer Input 17(ivec4)
21(gl_SubgroupEqMask): 20(ptr) Variable Input
23(gl_SubgroupGeMask): 20(ptr) Variable Input
26(gl_SubgroupGtMask): 20(ptr) Variable Input
29(gl_SubgroupLeMask): 20(ptr) Variable Input
32(gl_SubgroupLtMask): 20(ptr) Variable Input
36: TypeBool
37: 36(bool) ConstantTrue
38: 6(int) Constant 3
40: TypeFloat 32
41: TypeVector 40(float) 4
42: TypeInt 32 1
43: TypeVector 42(int) 4
44: TypeFloat 64
45: TypeVector 44(float64_t) 4
46(Buffers): TypeStruct 41(fvec4) 43(ivec4) 17(ivec4) 45(f64vec4)
47: TypeArray 46(Buffers) 15
48: TypePointer StorageBuffer 47
49(data): 48(ptr) Variable StorageBuffer
51: 42(int) Constant 2
54: 6(int) Constant 0
55: TypePointer StorageBuffer 6(int)
60: 42(int) Constant 1
61: 42(int) Constant 0
64: 6(int) Constant 1
72: 6(int) Constant 2
83: TypeVector 36(bool) 4
88: TypePointer StorageBuffer 17(ivec4)
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
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
19(relMask): 18(ptr) Variable Function
35(result): 18(ptr) Variable Function
11: 6(int) Load 10(gl_SubgroupInvocationID)
13: 6(int) Load 12(gl_SubgroupSize)
14: 6(int) IAdd 11 13
16: 6(int) UMod 14 15
Store 8(invocation) 16
22: 17(ivec4) Load 21(gl_SubgroupEqMask)
24: 17(ivec4) Load 23(gl_SubgroupGeMask)
25: 17(ivec4) IAdd 22 24
27: 17(ivec4) Load 26(gl_SubgroupGtMask)
28: 17(ivec4) IAdd 25 27
30: 17(ivec4) Load 29(gl_SubgroupLeMask)
31: 17(ivec4) IAdd 28 30
33: 17(ivec4) Load 32(gl_SubgroupLtMask)
34: 17(ivec4) IAdd 31 33
Store 19(relMask) 34
39: 17(ivec4) GroupNonUniformBallot 38 37
Store 35(result) 39
50: 6(int) Load 8(invocation)
52: 17(ivec4) Load 35(result)
53: 6(int) GroupNonUniformBallotBitCount 38 Reduce 52
56: 55(ptr) AccessChain 49(data) 50 51 54
Store 56 53
57: 6(int) Load 8(invocation)
58: 17(ivec4) Load 35(result)
59: 36(bool) GroupNonUniformBallotBitExtract 38 58 54
62: 42(int) Select 59 60 61
63: 6(int) Bitcast 62
65: 55(ptr) AccessChain 49(data) 57 51 64
Store 65 63
66: 6(int) Load 8(invocation)
67: 17(ivec4) Load 35(result)
68: 6(int) GroupNonUniformBallotBitCount 38 InclusiveScan 67
69: 17(ivec4) Load 35(result)
70: 6(int) GroupNonUniformBallotBitCount 38 ExclusiveScan 69
71: 6(int) IAdd 68 70
73: 55(ptr) AccessChain 49(data) 66 51 72
Store 73 71
74: 6(int) Load 8(invocation)
75: 17(ivec4) Load 35(result)
76: 6(int) GroupNonUniformBallotFindLSB 38 75
77: 17(ivec4) Load 35(result)
78: 6(int) GroupNonUniformBallotFindMSB 38 77
79: 6(int) IAdd 76 78
80: 55(ptr) AccessChain 49(data) 74 51 38
Store 80 79
81: 17(ivec4) Load 19(relMask)
82: 17(ivec4) Load 35(result)
84: 83(bvec4) IEqual 81 82
85: 36(bool) All 84
SelectionMerge 87 None
BranchConditional 85 86 87
86: Label
89: 88(ptr) AccessChain 49(data) 61 51
90: 17(ivec4) Load 89
91: 36(bool) GroupNonUniformInverseBallot 38 90
Branch 87
87: Label
92: 36(bool) Phi 85 5 91 86
SelectionMerge 94 None
BranchConditional 92 93 256
93: Label
95: 6(int) Load 8(invocation)
97: 96(ptr) AccessChain 49(data) 61 61 54
98: 40(float) Load 97
99: 40(float) GroupNonUniformBroadcast 38 98 38
100: 96(ptr) AccessChain 49(data) 95 61 54
Store 100 99
101: 6(int) Load 8(invocation)
104: 103(ptr) AccessChain 49(data) 60 61
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
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
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
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
Branch 94
94: Label
Return
FunctionEnd