spv.460.subgroupEXT.task // Module Version 10400 // Generated by (magic number): 8000b // Id's are bound by 243 Capability StorageImageWriteWithoutFormat Capability GroupNonUniform Capability GroupNonUniformVote Capability GroupNonUniformArithmetic Capability GroupNonUniformBallot Capability GroupNonUniformShuffle Capability GroupNonUniformShuffleRelative Capability GroupNonUniformClustered Capability GroupNonUniformQuad Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 123 124 129 130 133 134 135 136 137 ExecutionMode 4 LocalSize 32 1 1 Source GLSL 460 SourceExtension "GL_EXT_mesh_shader" SourceExtension "GL_KHR_shader_subgroup_arithmetic" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" SourceExtension "GL_KHR_shader_subgroup_clustered" SourceExtension "GL_KHR_shader_subgroup_quad" SourceExtension "GL_KHR_shader_subgroup_shuffle" SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" SourceExtension "GL_KHR_shader_subgroup_vote" Name 4 "main" Name 6 "basic_works(" Name 13 "ballot_works(vf4;" Name 12 "f4" Name 16 "vote_works(vf4;" Name 15 "f4" Name 19 "shuffle_works(vf4;" Name 18 "f4" Name 22 "arith_works(vf4;" Name 21 "f4" Name 25 "clustered_works(vf4;" Name 24 "f4" Name 28 "quad_works(vf4;" Name 27 "f4" Name 32 "iid" Name 35 "gl_LocalInvocationID" Name 40 "gid" Name 41 "gl_WorkGroupID" Name 44 "i" Name 56 "mem" Name 59 "block0" MemberName 59(block0) 0 "uni_value" Name 61 "" Name 77 "uni_image" Name 100 "Task" MemberName 100(Task) 0 "dummy" MemberName 100(Task) 1 "submesh" Name 102 "mytask" Name 123 "gl_SubgroupSize" Name 124 "gl_SubgroupInvocationID" Name 129 "gl_NumSubgroups" Name 130 "gl_SubgroupID" Name 133 "gl_SubgroupEqMask" Name 134 "gl_SubgroupGeMask" Name 135 "gl_SubgroupGtMask" Name 136 "gl_SubgroupLeMask" Name 137 "gl_SubgroupLtMask" Name 143 "ballot" Name 181 "ballot" Name 216 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId MemberDecorate 59(block0) 0 Offset 0 Decorate 59(block0) Block Decorate 61 DescriptorSet 0 Decorate 61 Binding 1 Decorate 77(uni_image) DescriptorSet 0 Decorate 77(uni_image) Binding 0 Decorate 77(uni_image) NonReadable Decorate 123(gl_SubgroupSize) RelaxedPrecision Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision Decorate 124(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 129(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 130(gl_SubgroupID) BuiltIn SubgroupId Decorate 133(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 134(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 135(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 136(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 137(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 242 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 9: TypeVector 8(float) 4 10: TypePointer Function 9(fvec4) 11: TypeFunction 2 10(ptr) 30: TypeInt 32 0 31: TypePointer Function 30(int) 33: TypeVector 30(int) 3 34: TypePointer Input 33(ivec3) 35(gl_LocalInvocationID): 34(ptr) Variable Input 36: 30(int) Constant 0 37: TypePointer Input 30(int) 41(gl_WorkGroupID): 34(ptr) Variable Input 51: 30(int) Constant 10 52: TypeBool 54: TypeArray 9(fvec4) 51 55: TypePointer Workgroup 54 56(mem): 55(ptr) Variable Workgroup 59(block0): TypeStruct 30(int) 60: TypePointer Uniform 59(block0) 61: 60(ptr) Variable Uniform 62: TypeInt 32 1 63: 62(int) Constant 0 64: TypePointer Uniform 30(int) 70: TypePointer Workgroup 9(fvec4) 73: 62(int) Constant 1 75: TypeImage 8(float) 2D nonsampled format:Unknown 76: TypePointer UniformConstant 75 77(uni_image): 76(ptr) Variable UniformConstant 81: TypeVector 62(int) 2 91: 30(int) Constant 1 95: 30(int) Constant 264 96: 30(int) Constant 2 97: TypeVector 8(float) 2 98: 30(int) Constant 3 99: TypeArray 97(fvec2) 98 100(Task): TypeStruct 97(fvec2) 99 101: TypePointer TaskPayloadWorkgroupEXT 100(Task) 102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT 103: 8(float) Constant 1106247680 104: 8(float) Constant 1106771968 105: 97(fvec2) ConstantComposite 103 104 106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2) 108: 8(float) Constant 1107296256 109: 8(float) Constant 1107558400 110: 97(fvec2) ConstantComposite 108 109 112: 8(float) Constant 1107820544 113: 8(float) Constant 1108082688 114: 97(fvec2) ConstantComposite 112 113 116: 62(int) Constant 2 123(gl_SubgroupSize): 37(ptr) Variable Input 124(gl_SubgroupInvocationID): 37(ptr) Variable Input 125: 30(int) Constant 3400 126: 30(int) Constant 72 127: 30(int) Constant 2056 129(gl_NumSubgroups): 37(ptr) Variable Input 130(gl_SubgroupID): 37(ptr) Variable Input 131: TypeVector 30(int) 4 132: TypePointer Input 131(ivec4) 133(gl_SubgroupEqMask): 132(ptr) Variable Input 134(gl_SubgroupGeMask): 132(ptr) Variable Input 135(gl_SubgroupGtMask): 132(ptr) Variable Input 136(gl_SubgroupLeMask): 132(ptr) Variable Input 137(gl_SubgroupLtMask): 132(ptr) Variable Input 142: TypePointer Function 131(ivec4) 144: 52(bool) ConstantFalse 146: 131(ivec4) ConstantComposite 91 91 91 91 160: 52(bool) ConstantTrue 217: 30(int) Constant 85 218: 131(ivec4) ConstantComposite 217 36 36 36 241: 30(int) Constant 32 242: 33(ivec3) ConstantComposite 241 91 91 4(main): 2 Function None 3 5: Label 32(iid): 31(ptr) Variable Function 40(gid): 31(ptr) Variable Function 44(i): 31(ptr) Variable Function 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 39: 30(int) Load 38 Store 32(iid) 39 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 43: 30(int) Load 42 Store 40(gid) 43 Store 44(i) 36 Branch 45 45: Label LoopMerge 47 48 None Branch 49 49: Label 50: 30(int) Load 44(i) 53: 52(bool) ULessThan 50 51 BranchConditional 53 46 47 46: Label 57: 30(int) Load 44(i) 58: 30(int) Load 44(i) 65: 64(ptr) AccessChain 61 63 66: 30(int) Load 65 67: 30(int) IAdd 58 66 68: 8(float) ConvertUToF 67 69: 9(fvec4) CompositeConstruct 68 68 68 68 71: 70(ptr) AccessChain 56(mem) 57 Store 71 69 Branch 48 48: Label 72: 30(int) Load 44(i) 74: 30(int) IAdd 72 73 Store 44(i) 74 Branch 45 47: Label 78: 75 Load 77(uni_image) 79: 30(int) Load 32(iid) 80: 62(int) Bitcast 79 82: 81(ivec2) CompositeConstruct 80 80 83: 30(int) Load 40(gid) 84: 70(ptr) AccessChain 56(mem) 83 85: 9(fvec4) Load 84 ImageWrite 78 82 85 86: 75 Load 77(uni_image) 87: 30(int) Load 32(iid) 88: 62(int) Bitcast 87 89: 81(ivec2) CompositeConstruct 88 88 90: 30(int) Load 40(gid) 92: 30(int) IAdd 90 91 93: 70(ptr) AccessChain 56(mem) 92 94: 9(fvec4) Load 93 ImageWrite 86 89 94 MemoryBarrier 91 95 ControlBarrier 96 96 95 107: 106(ptr) AccessChain 102(mytask) 63 Store 107 105 111: 106(ptr) AccessChain 102(mytask) 73 63 Store 111 110 115: 106(ptr) AccessChain 102(mytask) 73 73 Store 115 114 117: 30(int) Load 40(gid) 118: 30(int) UMod 117 96 119: 106(ptr) AccessChain 102(mytask) 73 118 120: 97(fvec2) Load 119 121: 106(ptr) AccessChain 102(mytask) 73 116 Store 121 120 MemoryBarrier 91 95 ControlBarrier 96 96 95 EmitMeshTasksEXT 98 91 91 102(mytask) FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 98 98 125 MemoryBarrier 98 125 MemoryBarrier 98 126 MemoryBarrier 98 127 128: 52(bool) GroupNonUniformElect 98 MemoryBarrier 98 95 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 143(ballot): 142(ptr) Variable Function 138: 9(fvec4) Load 12(f4) 139: 9(fvec4) GroupNonUniformBroadcast 98 138 36 140: 9(fvec4) Load 12(f4) 141: 9(fvec4) GroupNonUniformBroadcastFirst 98 140 145: 131(ivec4) GroupNonUniformBallot 98 144 Store 143(ballot) 145 147: 52(bool) GroupNonUniformInverseBallot 98 146 148: 131(ivec4) Load 143(ballot) 149: 52(bool) GroupNonUniformBallotBitExtract 98 148 36 150: 131(ivec4) Load 143(ballot) 151: 30(int) GroupNonUniformBallotBitCount 98 Reduce 150 152: 131(ivec4) Load 143(ballot) 153: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 152 154: 131(ivec4) Load 143(ballot) 155: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 154 156: 131(ivec4) Load 143(ballot) 157: 30(int) GroupNonUniformBallotFindLSB 98 156 158: 131(ivec4) Load 143(ballot) 159: 30(int) GroupNonUniformBallotFindMSB 98 158 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 161: 52(bool) GroupNonUniformAll 98 160 162: 52(bool) GroupNonUniformAny 98 144 163: 9(fvec4) Load 15(f4) 164: 52(bool) GroupNonUniformAllEqual 98 163 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 165: 9(fvec4) Load 18(f4) 166: 9(fvec4) GroupNonUniformShuffle 98 165 36 167: 9(fvec4) Load 18(f4) 168: 9(fvec4) GroupNonUniformShuffleXor 98 167 91 169: 9(fvec4) Load 18(f4) 170: 9(fvec4) GroupNonUniformShuffleUp 98 169 91 171: 9(fvec4) Load 18(f4) 172: 9(fvec4) GroupNonUniformShuffleDown 98 171 91 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 181(ballot): 142(ptr) Variable Function 173: 9(fvec4) Load 21(f4) 174: 9(fvec4) GroupNonUniformFAdd 98 Reduce 173 175: 9(fvec4) Load 21(f4) 176: 9(fvec4) GroupNonUniformFMul 98 Reduce 175 177: 9(fvec4) Load 21(f4) 178: 9(fvec4) GroupNonUniformFMin 98 Reduce 177 179: 9(fvec4) Load 21(f4) 180: 9(fvec4) GroupNonUniformFMax 98 Reduce 179 182: 131(ivec4) Load 181(ballot) 183: 131(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 182 184: 131(ivec4) Load 181(ballot) 185: 131(ivec4) GroupNonUniformBitwiseOr 98 Reduce 184 186: 131(ivec4) Load 181(ballot) 187: 131(ivec4) GroupNonUniformBitwiseXor 98 Reduce 186 188: 9(fvec4) Load 21(f4) 189: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 188 190: 9(fvec4) Load 21(f4) 191: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 190 192: 9(fvec4) Load 21(f4) 193: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 192 194: 9(fvec4) Load 21(f4) 195: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 194 196: 131(ivec4) Load 181(ballot) 197: 131(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 196 198: 131(ivec4) Load 181(ballot) 199: 131(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 198 200: 131(ivec4) Load 181(ballot) 201: 131(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 200 202: 9(fvec4) Load 21(f4) 203: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 202 204: 9(fvec4) Load 21(f4) 205: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 204 206: 9(fvec4) Load 21(f4) 207: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 206 208: 9(fvec4) Load 21(f4) 209: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 208 210: 131(ivec4) Load 181(ballot) 211: 131(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 210 212: 131(ivec4) Load 181(ballot) 213: 131(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 212 214: 131(ivec4) Load 181(ballot) 215: 131(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 214 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 216(ballot): 142(ptr) Variable Function Store 216(ballot) 218 219: 9(fvec4) Load 24(f4) 220: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 219 96 221: 9(fvec4) Load 24(f4) 222: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 221 96 223: 9(fvec4) Load 24(f4) 224: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 223 96 225: 9(fvec4) Load 24(f4) 226: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 225 96 227: 131(ivec4) Load 216(ballot) 228: 131(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 227 96 229: 131(ivec4) Load 216(ballot) 230: 131(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 229 96 231: 131(ivec4) Load 216(ballot) 232: 131(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 231 96 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 233: 9(fvec4) Load 27(f4) 234: 9(fvec4) GroupNonUniformQuadBroadcast 98 233 36 235: 9(fvec4) Load 27(f4) 236: 9(fvec4) GroupNonUniformQuadSwap 98 235 36 237: 9(fvec4) Load 27(f4) 238: 9(fvec4) GroupNonUniformQuadSwap 98 237 91 239: 9(fvec4) Load 27(f4) 240: 9(fvec4) GroupNonUniformQuadSwap 98 239 96 Return FunctionEnd