| 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 |