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