mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-08 11:30:06 +00:00
33c7e30860
It is invalid if the same decoration is applied to the same id multiple times. This adds a check before adding a decoration that the decoration is not already in the list. If it is, then the duplicate is not added. Fixes #3627
376 lines
20 KiB
Plaintext
376 lines
20 KiB
Plaintext
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
|
|
Decorate 59(block0) Block
|
|
MemberDecorate 59(block0) 0 Offset 0
|
|
Decorate 61 Binding 1
|
|
Decorate 61 DescriptorSet 0
|
|
Decorate 77(uni_image) NonReadable
|
|
Decorate 77(uni_image) Binding 0
|
|
Decorate 77(uni_image) DescriptorSet 0
|
|
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
|