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