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