spv.460.subgroupEXT.task // Module Version 10400 // Generated by (magic number): 8000a // Id's are bound by 242 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 122 123 128 129 132 133 134 135 136 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 122 "gl_SubgroupSize" Name 123 "gl_SubgroupInvocationID" Name 128 "gl_NumSubgroups" Name 129 "gl_SubgroupID" Name 132 "gl_SubgroupEqMask" Name 133 "gl_SubgroupGeMask" Name 134 "gl_SubgroupGtMask" Name 135 "gl_SubgroupLeMask" Name 136 "gl_SubgroupLtMask" Name 142 "ballot" Name 180 "ballot" Name 215 "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 122(gl_SubgroupSize) RelaxedPrecision Decorate 122(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 123(gl_SubgroupInvocationID) RelaxedPrecision Decorate 123(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 128(gl_NumSubgroups) BuiltIn NumSubgroups Decorate 129(gl_SubgroupID) BuiltIn SubgroupId Decorate 132(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR Decorate 133(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR Decorate 134(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 135(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 136(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR Decorate 241 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 122(gl_SubgroupSize): 37(ptr) Variable Input 123(gl_SubgroupInvocationID): 37(ptr) Variable Input 124: 30(int) Constant 3400 125: 30(int) Constant 72 126: 30(int) Constant 2056 128(gl_NumSubgroups): 37(ptr) Variable Input 129(gl_SubgroupID): 37(ptr) Variable Input 130: TypeVector 30(int) 4 131: TypePointer Input 130(ivec4) 132(gl_SubgroupEqMask): 131(ptr) Variable Input 133(gl_SubgroupGeMask): 131(ptr) Variable Input 134(gl_SubgroupGtMask): 131(ptr) Variable Input 135(gl_SubgroupLeMask): 131(ptr) Variable Input 136(gl_SubgroupLtMask): 131(ptr) Variable Input 141: TypePointer Function 130(ivec4) 143: 52(bool) ConstantFalse 145: 130(ivec4) ConstantComposite 91 91 91 91 159: 52(bool) ConstantTrue 216: 30(int) Constant 85 217: 130(ivec4) ConstantComposite 216 36 36 36 240: 30(int) Constant 32 241: 33(ivec3) ConstantComposite 240 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) Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label ControlBarrier 98 98 124 MemoryBarrier 98 124 MemoryBarrier 98 125 MemoryBarrier 98 126 127: 52(bool) GroupNonUniformElect 98 MemoryBarrier 98 95 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label 142(ballot): 141(ptr) Variable Function 137: 9(fvec4) Load 12(f4) 138: 9(fvec4) GroupNonUniformBroadcast 98 137 36 139: 9(fvec4) Load 12(f4) 140: 9(fvec4) GroupNonUniformBroadcastFirst 98 139 144: 130(ivec4) GroupNonUniformBallot 98 143 Store 142(ballot) 144 146: 52(bool) GroupNonUniformInverseBallot 98 145 147: 130(ivec4) Load 142(ballot) 148: 52(bool) GroupNonUniformBallotBitExtract 98 147 36 149: 130(ivec4) Load 142(ballot) 150: 30(int) GroupNonUniformBallotBitCount 98 Reduce 149 151: 130(ivec4) Load 142(ballot) 152: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 151 153: 130(ivec4) Load 142(ballot) 154: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 153 155: 130(ivec4) Load 142(ballot) 156: 30(int) GroupNonUniformBallotFindLSB 98 155 157: 130(ivec4) Load 142(ballot) 158: 30(int) GroupNonUniformBallotFindMSB 98 157 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label 160: 52(bool) GroupNonUniformAll 98 159 161: 52(bool) GroupNonUniformAny 98 143 162: 9(fvec4) Load 15(f4) 163: 52(bool) GroupNonUniformAllEqual 98 162 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label 164: 9(fvec4) Load 18(f4) 165: 9(fvec4) GroupNonUniformShuffle 98 164 36 166: 9(fvec4) Load 18(f4) 167: 9(fvec4) GroupNonUniformShuffleXor 98 166 91 168: 9(fvec4) Load 18(f4) 169: 9(fvec4) GroupNonUniformShuffleUp 98 168 91 170: 9(fvec4) Load 18(f4) 171: 9(fvec4) GroupNonUniformShuffleDown 98 170 91 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label 180(ballot): 141(ptr) Variable Function 172: 9(fvec4) Load 21(f4) 173: 9(fvec4) GroupNonUniformFAdd 98 Reduce 172 174: 9(fvec4) Load 21(f4) 175: 9(fvec4) GroupNonUniformFMul 98 Reduce 174 176: 9(fvec4) Load 21(f4) 177: 9(fvec4) GroupNonUniformFMin 98 Reduce 176 178: 9(fvec4) Load 21(f4) 179: 9(fvec4) GroupNonUniformFMax 98 Reduce 178 181: 130(ivec4) Load 180(ballot) 182: 130(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 181 183: 130(ivec4) Load 180(ballot) 184: 130(ivec4) GroupNonUniformBitwiseOr 98 Reduce 183 185: 130(ivec4) Load 180(ballot) 186: 130(ivec4) GroupNonUniformBitwiseXor 98 Reduce 185 187: 9(fvec4) Load 21(f4) 188: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 187 189: 9(fvec4) Load 21(f4) 190: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 189 191: 9(fvec4) Load 21(f4) 192: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 191 193: 9(fvec4) Load 21(f4) 194: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 193 195: 130(ivec4) Load 180(ballot) 196: 130(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 195 197: 130(ivec4) Load 180(ballot) 198: 130(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 197 199: 130(ivec4) Load 180(ballot) 200: 130(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 199 201: 9(fvec4) Load 21(f4) 202: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 201 203: 9(fvec4) Load 21(f4) 204: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 203 205: 9(fvec4) Load 21(f4) 206: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 205 207: 9(fvec4) Load 21(f4) 208: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 207 209: 130(ivec4) Load 180(ballot) 210: 130(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 209 211: 130(ivec4) Load 180(ballot) 212: 130(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 211 213: 130(ivec4) Load 180(ballot) 214: 130(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 213 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label 215(ballot): 141(ptr) Variable Function Store 215(ballot) 217 218: 9(fvec4) Load 24(f4) 219: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 218 96 220: 9(fvec4) Load 24(f4) 221: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 220 96 222: 9(fvec4) Load 24(f4) 223: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 222 96 224: 9(fvec4) Load 24(f4) 225: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 224 96 226: 130(ivec4) Load 215(ballot) 227: 130(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 226 96 228: 130(ivec4) Load 215(ballot) 229: 130(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 228 96 230: 130(ivec4) Load 215(ballot) 231: 130(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 230 96 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label 232: 9(fvec4) Load 27(f4) 233: 9(fvec4) GroupNonUniformQuadBroadcast 98 232 36 234: 9(fvec4) Load 27(f4) 235: 9(fvec4) GroupNonUniformQuadSwap 98 234 36 236: 9(fvec4) Load 27(f4) 237: 9(fvec4) GroupNonUniformQuadSwap 98 236 91 238: 9(fvec4) Load 27(f4) 239: 9(fvec4) GroupNonUniformQuadSwap 98 238 96 Return FunctionEnd