spv.subgroupBallot.comp // Module Version 10300 // Generated by (magic number): 8000a // 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