1spv.460.subgroupEXT.task 2// Module Version 10400 3// Generated by (magic number): 8000b 4// Id's are bound by 243 5 6 Capability StorageImageWriteWithoutFormat 7 Capability GroupNonUniform 8 Capability GroupNonUniformVote 9 Capability GroupNonUniformArithmetic 10 Capability GroupNonUniformBallot 11 Capability GroupNonUniformShuffle 12 Capability GroupNonUniformShuffleRelative 13 Capability GroupNonUniformClustered 14 Capability GroupNonUniformQuad 15 Capability MeshShadingEXT 16 Extension "SPV_EXT_mesh_shader" 17 1: ExtInstImport "GLSL.std.450" 18 MemoryModel Logical GLSL450 19 EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 123 124 129 130 133 134 135 136 137 20 ExecutionMode 4 LocalSize 32 1 1 21 Source GLSL 460 22 SourceExtension "GL_EXT_mesh_shader" 23 SourceExtension "GL_KHR_shader_subgroup_arithmetic" 24 SourceExtension "GL_KHR_shader_subgroup_ballot" 25 SourceExtension "GL_KHR_shader_subgroup_basic" 26 SourceExtension "GL_KHR_shader_subgroup_clustered" 27 SourceExtension "GL_KHR_shader_subgroup_quad" 28 SourceExtension "GL_KHR_shader_subgroup_shuffle" 29 SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" 30 SourceExtension "GL_KHR_shader_subgroup_vote" 31 Name 4 "main" 32 Name 6 "basic_works(" 33 Name 13 "ballot_works(vf4;" 34 Name 12 "f4" 35 Name 16 "vote_works(vf4;" 36 Name 15 "f4" 37 Name 19 "shuffle_works(vf4;" 38 Name 18 "f4" 39 Name 22 "arith_works(vf4;" 40 Name 21 "f4" 41 Name 25 "clustered_works(vf4;" 42 Name 24 "f4" 43 Name 28 "quad_works(vf4;" 44 Name 27 "f4" 45 Name 32 "iid" 46 Name 35 "gl_LocalInvocationID" 47 Name 40 "gid" 48 Name 41 "gl_WorkGroupID" 49 Name 44 "i" 50 Name 56 "mem" 51 Name 59 "block0" 52 MemberName 59(block0) 0 "uni_value" 53 Name 61 "" 54 Name 77 "uni_image" 55 Name 100 "Task" 56 MemberName 100(Task) 0 "dummy" 57 MemberName 100(Task) 1 "submesh" 58 Name 102 "mytask" 59 Name 123 "gl_SubgroupSize" 60 Name 124 "gl_SubgroupInvocationID" 61 Name 129 "gl_NumSubgroups" 62 Name 130 "gl_SubgroupID" 63 Name 133 "gl_SubgroupEqMask" 64 Name 134 "gl_SubgroupGeMask" 65 Name 135 "gl_SubgroupGtMask" 66 Name 136 "gl_SubgroupLeMask" 67 Name 137 "gl_SubgroupLtMask" 68 Name 143 "ballot" 69 Name 181 "ballot" 70 Name 216 "ballot" 71 Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId 72 Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId 73 MemberDecorate 59(block0) 0 Offset 0 74 Decorate 59(block0) Block 75 Decorate 61 DescriptorSet 0 76 Decorate 61 Binding 1 77 Decorate 77(uni_image) DescriptorSet 0 78 Decorate 77(uni_image) Binding 0 79 Decorate 77(uni_image) NonReadable 80 Decorate 123(gl_SubgroupSize) RelaxedPrecision 81 Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize 82 Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision 83 Decorate 124(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId 84 Decorate 129(gl_NumSubgroups) BuiltIn NumSubgroups 85 Decorate 130(gl_SubgroupID) BuiltIn SubgroupId 86 Decorate 133(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR 87 Decorate 134(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR 88 Decorate 135(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR 89 Decorate 136(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR 90 Decorate 137(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR 91 Decorate 242 BuiltIn WorkgroupSize 92 2: TypeVoid 93 3: TypeFunction 2 94 8: TypeFloat 32 95 9: TypeVector 8(float) 4 96 10: TypePointer Function 9(fvec4) 97 11: TypeFunction 2 10(ptr) 98 30: TypeInt 32 0 99 31: TypePointer Function 30(int) 100 33: TypeVector 30(int) 3 101 34: TypePointer Input 33(ivec3) 10235(gl_LocalInvocationID): 34(ptr) Variable Input 103 36: 30(int) Constant 0 104 37: TypePointer Input 30(int) 10541(gl_WorkGroupID): 34(ptr) Variable Input 106 51: 30(int) Constant 10 107 52: TypeBool 108 54: TypeArray 9(fvec4) 51 109 55: TypePointer Workgroup 54 110 56(mem): 55(ptr) Variable Workgroup 111 59(block0): TypeStruct 30(int) 112 60: TypePointer Uniform 59(block0) 113 61: 60(ptr) Variable Uniform 114 62: TypeInt 32 1 115 63: 62(int) Constant 0 116 64: TypePointer Uniform 30(int) 117 70: TypePointer Workgroup 9(fvec4) 118 73: 62(int) Constant 1 119 75: TypeImage 8(float) 2D nonsampled format:Unknown 120 76: TypePointer UniformConstant 75 121 77(uni_image): 76(ptr) Variable UniformConstant 122 81: TypeVector 62(int) 2 123 91: 30(int) Constant 1 124 95: 30(int) Constant 264 125 96: 30(int) Constant 2 126 97: TypeVector 8(float) 2 127 98: 30(int) Constant 3 128 99: TypeArray 97(fvec2) 98 129 100(Task): TypeStruct 97(fvec2) 99 130 101: TypePointer TaskPayloadWorkgroupEXT 100(Task) 131 102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT 132 103: 8(float) Constant 1106247680 133 104: 8(float) Constant 1106771968 134 105: 97(fvec2) ConstantComposite 103 104 135 106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2) 136 108: 8(float) Constant 1107296256 137 109: 8(float) Constant 1107558400 138 110: 97(fvec2) ConstantComposite 108 109 139 112: 8(float) Constant 1107820544 140 113: 8(float) Constant 1108082688 141 114: 97(fvec2) ConstantComposite 112 113 142 116: 62(int) Constant 2 143123(gl_SubgroupSize): 37(ptr) Variable Input 144124(gl_SubgroupInvocationID): 37(ptr) Variable Input 145 125: 30(int) Constant 3400 146 126: 30(int) Constant 72 147 127: 30(int) Constant 2056 148129(gl_NumSubgroups): 37(ptr) Variable Input 149130(gl_SubgroupID): 37(ptr) Variable Input 150 131: TypeVector 30(int) 4 151 132: TypePointer Input 131(ivec4) 152133(gl_SubgroupEqMask): 132(ptr) Variable Input 153134(gl_SubgroupGeMask): 132(ptr) Variable Input 154135(gl_SubgroupGtMask): 132(ptr) Variable Input 155136(gl_SubgroupLeMask): 132(ptr) Variable Input 156137(gl_SubgroupLtMask): 132(ptr) Variable Input 157 142: TypePointer Function 131(ivec4) 158 144: 52(bool) ConstantFalse 159 146: 131(ivec4) ConstantComposite 91 91 91 91 160 160: 52(bool) ConstantTrue 161 217: 30(int) Constant 85 162 218: 131(ivec4) ConstantComposite 217 36 36 36 163 241: 30(int) Constant 32 164 242: 33(ivec3) ConstantComposite 241 91 91 165 4(main): 2 Function None 3 166 5: Label 167 32(iid): 31(ptr) Variable Function 168 40(gid): 31(ptr) Variable Function 169 44(i): 31(ptr) Variable Function 170 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 171 39: 30(int) Load 38 172 Store 32(iid) 39 173 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 174 43: 30(int) Load 42 175 Store 40(gid) 43 176 Store 44(i) 36 177 Branch 45 178 45: Label 179 LoopMerge 47 48 None 180 Branch 49 181 49: Label 182 50: 30(int) Load 44(i) 183 53: 52(bool) ULessThan 50 51 184 BranchConditional 53 46 47 185 46: Label 186 57: 30(int) Load 44(i) 187 58: 30(int) Load 44(i) 188 65: 64(ptr) AccessChain 61 63 189 66: 30(int) Load 65 190 67: 30(int) IAdd 58 66 191 68: 8(float) ConvertUToF 67 192 69: 9(fvec4) CompositeConstruct 68 68 68 68 193 71: 70(ptr) AccessChain 56(mem) 57 194 Store 71 69 195 Branch 48 196 48: Label 197 72: 30(int) Load 44(i) 198 74: 30(int) IAdd 72 73 199 Store 44(i) 74 200 Branch 45 201 47: Label 202 78: 75 Load 77(uni_image) 203 79: 30(int) Load 32(iid) 204 80: 62(int) Bitcast 79 205 82: 81(ivec2) CompositeConstruct 80 80 206 83: 30(int) Load 40(gid) 207 84: 70(ptr) AccessChain 56(mem) 83 208 85: 9(fvec4) Load 84 209 ImageWrite 78 82 85 210 86: 75 Load 77(uni_image) 211 87: 30(int) Load 32(iid) 212 88: 62(int) Bitcast 87 213 89: 81(ivec2) CompositeConstruct 88 88 214 90: 30(int) Load 40(gid) 215 92: 30(int) IAdd 90 91 216 93: 70(ptr) AccessChain 56(mem) 92 217 94: 9(fvec4) Load 93 218 ImageWrite 86 89 94 219 MemoryBarrier 91 95 220 ControlBarrier 96 96 95 221 107: 106(ptr) AccessChain 102(mytask) 63 222 Store 107 105 223 111: 106(ptr) AccessChain 102(mytask) 73 63 224 Store 111 110 225 115: 106(ptr) AccessChain 102(mytask) 73 73 226 Store 115 114 227 117: 30(int) Load 40(gid) 228 118: 30(int) UMod 117 96 229 119: 106(ptr) AccessChain 102(mytask) 73 118 230 120: 97(fvec2) Load 119 231 121: 106(ptr) AccessChain 102(mytask) 73 116 232 Store 121 120 233 MemoryBarrier 91 95 234 ControlBarrier 96 96 95 235 EmitMeshTasksEXT 98 91 91 102(mytask) 236 FunctionEnd 237 6(basic_works(): 2 Function None 3 238 7: Label 239 ControlBarrier 98 98 125 240 MemoryBarrier 98 125 241 MemoryBarrier 98 126 242 MemoryBarrier 98 127 243 128: 52(bool) GroupNonUniformElect 98 244 MemoryBarrier 98 95 245 Return 246 FunctionEnd 24713(ballot_works(vf4;): 2 Function None 11 248 12(f4): 10(ptr) FunctionParameter 249 14: Label 250 143(ballot): 142(ptr) Variable Function 251 138: 9(fvec4) Load 12(f4) 252 139: 9(fvec4) GroupNonUniformBroadcast 98 138 36 253 140: 9(fvec4) Load 12(f4) 254 141: 9(fvec4) GroupNonUniformBroadcastFirst 98 140 255 145: 131(ivec4) GroupNonUniformBallot 98 144 256 Store 143(ballot) 145 257 147: 52(bool) GroupNonUniformInverseBallot 98 146 258 148: 131(ivec4) Load 143(ballot) 259 149: 52(bool) GroupNonUniformBallotBitExtract 98 148 36 260 150: 131(ivec4) Load 143(ballot) 261 151: 30(int) GroupNonUniformBallotBitCount 98 Reduce 150 262 152: 131(ivec4) Load 143(ballot) 263 153: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 152 264 154: 131(ivec4) Load 143(ballot) 265 155: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 154 266 156: 131(ivec4) Load 143(ballot) 267 157: 30(int) GroupNonUniformBallotFindLSB 98 156 268 158: 131(ivec4) Load 143(ballot) 269 159: 30(int) GroupNonUniformBallotFindMSB 98 158 270 Return 271 FunctionEnd 27216(vote_works(vf4;): 2 Function None 11 273 15(f4): 10(ptr) FunctionParameter 274 17: Label 275 161: 52(bool) GroupNonUniformAll 98 160 276 162: 52(bool) GroupNonUniformAny 98 144 277 163: 9(fvec4) Load 15(f4) 278 164: 52(bool) GroupNonUniformAllEqual 98 163 279 Return 280 FunctionEnd 28119(shuffle_works(vf4;): 2 Function None 11 282 18(f4): 10(ptr) FunctionParameter 283 20: Label 284 165: 9(fvec4) Load 18(f4) 285 166: 9(fvec4) GroupNonUniformShuffle 98 165 36 286 167: 9(fvec4) Load 18(f4) 287 168: 9(fvec4) GroupNonUniformShuffleXor 98 167 91 288 169: 9(fvec4) Load 18(f4) 289 170: 9(fvec4) GroupNonUniformShuffleUp 98 169 91 290 171: 9(fvec4) Load 18(f4) 291 172: 9(fvec4) GroupNonUniformShuffleDown 98 171 91 292 Return 293 FunctionEnd 29422(arith_works(vf4;): 2 Function None 11 295 21(f4): 10(ptr) FunctionParameter 296 23: Label 297 181(ballot): 142(ptr) Variable Function 298 173: 9(fvec4) Load 21(f4) 299 174: 9(fvec4) GroupNonUniformFAdd 98 Reduce 173 300 175: 9(fvec4) Load 21(f4) 301 176: 9(fvec4) GroupNonUniformFMul 98 Reduce 175 302 177: 9(fvec4) Load 21(f4) 303 178: 9(fvec4) GroupNonUniformFMin 98 Reduce 177 304 179: 9(fvec4) Load 21(f4) 305 180: 9(fvec4) GroupNonUniformFMax 98 Reduce 179 306 182: 131(ivec4) Load 181(ballot) 307 183: 131(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 182 308 184: 131(ivec4) Load 181(ballot) 309 185: 131(ivec4) GroupNonUniformBitwiseOr 98 Reduce 184 310 186: 131(ivec4) Load 181(ballot) 311 187: 131(ivec4) GroupNonUniformBitwiseXor 98 Reduce 186 312 188: 9(fvec4) Load 21(f4) 313 189: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 188 314 190: 9(fvec4) Load 21(f4) 315 191: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 190 316 192: 9(fvec4) Load 21(f4) 317 193: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 192 318 194: 9(fvec4) Load 21(f4) 319 195: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 194 320 196: 131(ivec4) Load 181(ballot) 321 197: 131(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 196 322 198: 131(ivec4) Load 181(ballot) 323 199: 131(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 198 324 200: 131(ivec4) Load 181(ballot) 325 201: 131(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 200 326 202: 9(fvec4) Load 21(f4) 327 203: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 202 328 204: 9(fvec4) Load 21(f4) 329 205: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 204 330 206: 9(fvec4) Load 21(f4) 331 207: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 206 332 208: 9(fvec4) Load 21(f4) 333 209: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 208 334 210: 131(ivec4) Load 181(ballot) 335 211: 131(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 210 336 212: 131(ivec4) Load 181(ballot) 337 213: 131(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 212 338 214: 131(ivec4) Load 181(ballot) 339 215: 131(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 214 340 Return 341 FunctionEnd 34225(clustered_works(vf4;): 2 Function None 11 343 24(f4): 10(ptr) FunctionParameter 344 26: Label 345 216(ballot): 142(ptr) Variable Function 346 Store 216(ballot) 218 347 219: 9(fvec4) Load 24(f4) 348 220: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 219 96 349 221: 9(fvec4) Load 24(f4) 350 222: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 221 96 351 223: 9(fvec4) Load 24(f4) 352 224: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 223 96 353 225: 9(fvec4) Load 24(f4) 354 226: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 225 96 355 227: 131(ivec4) Load 216(ballot) 356 228: 131(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 227 96 357 229: 131(ivec4) Load 216(ballot) 358 230: 131(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 229 96 359 231: 131(ivec4) Load 216(ballot) 360 232: 131(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 231 96 361 Return 362 FunctionEnd 36328(quad_works(vf4;): 2 Function None 11 364 27(f4): 10(ptr) FunctionParameter 365 29: Label 366 233: 9(fvec4) Load 27(f4) 367 234: 9(fvec4) GroupNonUniformQuadBroadcast 98 233 36 368 235: 9(fvec4) Load 27(f4) 369 236: 9(fvec4) GroupNonUniformQuadSwap 98 235 36 370 237: 9(fvec4) Load 27(f4) 371 238: 9(fvec4) GroupNonUniformQuadSwap 98 237 91 372 239: 9(fvec4) Load 27(f4) 373 240: 9(fvec4) GroupNonUniformQuadSwap 98 239 96 374 Return 375 FunctionEnd 376