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