blob: 350f8d8a9a77291dac0efac523916ab53e69ac05 [file] [log] [blame]
spv.460.subgroupEXT.mesh
// Module Version 10400
// Generated by (magic number): 8000a
// Id's are bound by 280
Capability ClipDistance
Capability CullDistance
Capability GroupNonUniform
Capability GroupNonUniformVote
Capability GroupNonUniformArithmetic
Capability GroupNonUniformBallot
Capability GroupNonUniformShuffle
Capability GroupNonUniformShuffleRelative
Capability GroupNonUniformClustered
Capability GroupNonUniformQuad
Capability FragmentShadingRateKHR
Capability MeshShadingEXT
Extension "SPV_EXT_mesh_shader"
Extension "SPV_KHR_fragment_shading_rate"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176
ExecutionMode 4 LocalSize 32 1 1
ExecutionMode 4 OutputVertices 81
ExecutionMode 4 OutputPrimitivesNV 32
ExecutionMode 4 OutputTrianglesNV
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 "vertexCount"
Name 46 "primitiveCount"
Name 54 "gl_MeshPerVertexEXT"
MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position"
MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize"
MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance"
MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance"
Name 57 "gl_MeshVerticesEXT"
Name 106 "gl_MeshPerPrimitiveEXT"
MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID"
MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer"
MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex"
MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT"
MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT"
Name 109 "gl_MeshPrimitivesEXT"
Name 148 "gl_PrimitiveTriangleIndicesEXT"
Name 162 "gl_SubgroupSize"
Name 163 "gl_SubgroupInvocationID"
Name 168 "gl_NumSubgroups"
Name 169 "gl_SubgroupID"
Name 172 "gl_SubgroupEqMask"
Name 173 "gl_SubgroupGeMask"
Name 174 "gl_SubgroupGtMask"
Name 175 "gl_SubgroupLeMask"
Name 176 "gl_SubgroupLtMask"
Name 182 "ballot"
Name 219 "ballot"
Name 254 "ballot"
Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId
Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId
MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position
MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize
MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance
MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance
Decorate 54(gl_MeshPerVertexEXT) Block
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV
MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR
Decorate 106(gl_MeshPerPrimitiveEXT) Block
Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT
Decorate 162(gl_SubgroupSize) RelaxedPrecision
Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision
Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups
Decorate 169(gl_SubgroupID) BuiltIn SubgroupId
Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR
Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR
Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR
Decorate 279 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
45: 30(int) Constant 81
47: 30(int) Constant 32
50: 30(int) Constant 4
51: TypeArray 8(float) 50
52: 30(int) Constant 3
53: TypeArray 8(float) 52
54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53
55: TypeArray 54(gl_MeshPerVertexEXT) 45
56: TypePointer Output 55
57(gl_MeshVerticesEXT): 56(ptr) Variable Output
59: TypeInt 32 1
60: 59(int) Constant 0
61: 8(float) Constant 1065353216
62: 9(fvec4) ConstantComposite 61 61 61 61
63: TypePointer Output 9(fvec4)
66: 59(int) Constant 1
67: 8(float) Constant 1073741824
68: TypePointer Output 8(float)
71: 59(int) Constant 2
72: 59(int) Constant 3
73: 8(float) Constant 1077936128
76: 8(float) Constant 1082130432
78: 30(int) Constant 1
79: 30(int) Constant 264
80: 30(int) Constant 2
105: TypeBool
106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int)
107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47
108: TypePointer Output 107
109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output
111: 59(int) Constant 6
112: TypePointer Output 59(int)
115: 59(int) Constant 7
118: 59(int) Constant 8
121: 105(bool) ConstantFalse
122: TypePointer Output 105(bool)
145: 30(int) Constant 96
146: TypeArray 33(ivec3) 145
147: TypePointer Output 146
148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output
149: 33(ivec3) ConstantComposite 78 78 78
150: TypePointer Output 33(ivec3)
154: 33(ivec3) ConstantComposite 80 80 80
162(gl_SubgroupSize): 37(ptr) Variable Input
163(gl_SubgroupInvocationID): 37(ptr) Variable Input
164: 30(int) Constant 3400
165: 30(int) Constant 72
166: 30(int) Constant 2056
168(gl_NumSubgroups): 37(ptr) Variable Input
169(gl_SubgroupID): 37(ptr) Variable Input
170: TypeVector 30(int) 4
171: TypePointer Input 170(ivec4)
172(gl_SubgroupEqMask): 171(ptr) Variable Input
173(gl_SubgroupGeMask): 171(ptr) Variable Input
174(gl_SubgroupGtMask): 171(ptr) Variable Input
175(gl_SubgroupLeMask): 171(ptr) Variable Input
176(gl_SubgroupLtMask): 171(ptr) Variable Input
181: TypePointer Function 170(ivec4)
184: 170(ivec4) ConstantComposite 78 78 78 78
198: 105(bool) ConstantTrue
255: 30(int) Constant 85
256: 170(ivec4) ConstantComposite 255 36 36 36
279: 33(ivec3) ConstantComposite 47 78 78
4(main): 2 Function None 3
5: Label
32(iid): 31(ptr) Variable Function
40(gid): 31(ptr) Variable Function
44(vertexCount): 31(ptr) Variable Function
46(primitiveCount): 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(vertexCount) 45
Store 46(primitiveCount) 47
48: 30(int) Load 44(vertexCount)
49: 30(int) Load 46(primitiveCount)
SetMeshOutputsEXT 48 49
58: 30(int) Load 32(iid)
64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60
Store 64 62
65: 30(int) Load 32(iid)
69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66
Store 69 67
70: 30(int) Load 32(iid)
74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72
Store 74 73
75: 30(int) Load 32(iid)
77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71
Store 77 76
MemoryBarrier 78 79
ControlBarrier 80 80 79
81: 30(int) Load 32(iid)
82: 30(int) IAdd 81 78
83: 30(int) Load 32(iid)
84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60
85: 9(fvec4) Load 84
86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60
Store 86 85
87: 30(int) Load 32(iid)
88: 30(int) IAdd 87 78
89: 30(int) Load 32(iid)
90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66
91: 8(float) Load 90
92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66
Store 92 91
93: 30(int) Load 32(iid)
94: 30(int) IAdd 93 78
95: 30(int) Load 32(iid)
96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72
97: 8(float) Load 96
98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72
Store 98 97
99: 30(int) Load 32(iid)
100: 30(int) IAdd 99 78
101: 30(int) Load 32(iid)
102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71
103: 8(float) Load 102
104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71
Store 104 103
MemoryBarrier 78 79
ControlBarrier 80 80 79
110: 30(int) Load 32(iid)
113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60
Store 113 111
114: 30(int) Load 32(iid)
116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66
Store 116 115
117: 30(int) Load 32(iid)
119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71
Store 119 118
120: 30(int) Load 32(iid)
123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72
Store 123 121
MemoryBarrier 78 79
ControlBarrier 80 80 79
124: 30(int) Load 32(iid)
125: 30(int) IAdd 124 78
126: 30(int) Load 32(iid)
127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60
128: 59(int) Load 127
129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60
Store 129 128
130: 30(int) Load 32(iid)
131: 30(int) IAdd 130 78
132: 30(int) Load 32(iid)
133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66
134: 59(int) Load 133
135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66
Store 135 134
136: 30(int) Load 32(iid)
137: 30(int) IAdd 136 78
138: 30(int) Load 32(iid)
139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71
140: 59(int) Load 139
141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71
Store 141 140
142: 30(int) Load 32(iid)
143: 30(int) IAdd 142 78
144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72
Store 144 121
MemoryBarrier 78 79
ControlBarrier 80 80 79
151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60
Store 151 149
152: 30(int) Load 46(primitiveCount)
153: 30(int) ISub 152 78
155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153
Store 155 154
156: 30(int) Load 40(gid)
157: 30(int) Load 40(gid)
158: 30(int) ISub 157 78
159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158
160: 33(ivec3) Load 159
161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156
Store 161 160
MemoryBarrier 78 79
ControlBarrier 80 80 79
Return
FunctionEnd
6(basic_works(): 2 Function None 3
7: Label
ControlBarrier 52 52 164
MemoryBarrier 52 164
MemoryBarrier 52 165
MemoryBarrier 52 166
167: 105(bool) GroupNonUniformElect 52
MemoryBarrier 52 79
Return
FunctionEnd
13(ballot_works(vf4;): 2 Function None 11
12(f4): 10(ptr) FunctionParameter
14: Label
182(ballot): 181(ptr) Variable Function
177: 9(fvec4) Load 12(f4)
178: 9(fvec4) GroupNonUniformBroadcast 52 177 36
179: 9(fvec4) Load 12(f4)
180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179
183: 170(ivec4) GroupNonUniformBallot 52 121
Store 182(ballot) 183
185: 105(bool) GroupNonUniformInverseBallot 52 184
186: 170(ivec4) Load 182(ballot)
187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36
188: 170(ivec4) Load 182(ballot)
189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188
190: 170(ivec4) Load 182(ballot)
191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190
192: 170(ivec4) Load 182(ballot)
193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192
194: 170(ivec4) Load 182(ballot)
195: 30(int) GroupNonUniformBallotFindLSB 52 194
196: 170(ivec4) Load 182(ballot)
197: 30(int) GroupNonUniformBallotFindMSB 52 196
Return
FunctionEnd
16(vote_works(vf4;): 2 Function None 11
15(f4): 10(ptr) FunctionParameter
17: Label
199: 105(bool) GroupNonUniformAll 52 198
200: 105(bool) GroupNonUniformAny 52 121
201: 9(fvec4) Load 15(f4)
202: 105(bool) GroupNonUniformAllEqual 52 201
Return
FunctionEnd
19(shuffle_works(vf4;): 2 Function None 11
18(f4): 10(ptr) FunctionParameter
20: Label
203: 9(fvec4) Load 18(f4)
204: 9(fvec4) GroupNonUniformShuffle 52 203 36
205: 9(fvec4) Load 18(f4)
206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78
207: 9(fvec4) Load 18(f4)
208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78
209: 9(fvec4) Load 18(f4)
210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78
Return
FunctionEnd
22(arith_works(vf4;): 2 Function None 11
21(f4): 10(ptr) FunctionParameter
23: Label
219(ballot): 181(ptr) Variable Function
211: 9(fvec4) Load 21(f4)
212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211
213: 9(fvec4) Load 21(f4)
214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213
215: 9(fvec4) Load 21(f4)
216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215
217: 9(fvec4) Load 21(f4)
218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217
220: 170(ivec4) Load 219(ballot)
221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220
222: 170(ivec4) Load 219(ballot)
223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222
224: 170(ivec4) Load 219(ballot)
225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224
226: 9(fvec4) Load 21(f4)
227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226
228: 9(fvec4) Load 21(f4)
229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228
230: 9(fvec4) Load 21(f4)
231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230
232: 9(fvec4) Load 21(f4)
233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232
234: 170(ivec4) Load 219(ballot)
235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234
236: 170(ivec4) Load 219(ballot)
237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236
238: 170(ivec4) Load 219(ballot)
239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238
240: 9(fvec4) Load 21(f4)
241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240
242: 9(fvec4) Load 21(f4)
243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242
244: 9(fvec4) Load 21(f4)
245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244
246: 9(fvec4) Load 21(f4)
247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246
248: 170(ivec4) Load 219(ballot)
249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248
250: 170(ivec4) Load 219(ballot)
251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250
252: 170(ivec4) Load 219(ballot)
253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252
Return
FunctionEnd
25(clustered_works(vf4;): 2 Function None 11
24(f4): 10(ptr) FunctionParameter
26: Label
254(ballot): 181(ptr) Variable Function
Store 254(ballot) 256
257: 9(fvec4) Load 24(f4)
258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80
259: 9(fvec4) Load 24(f4)
260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80
261: 9(fvec4) Load 24(f4)
262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80
263: 9(fvec4) Load 24(f4)
264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80
265: 170(ivec4) Load 254(ballot)
266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80
267: 170(ivec4) Load 254(ballot)
268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80
269: 170(ivec4) Load 254(ballot)
270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80
Return
FunctionEnd
28(quad_works(vf4;): 2 Function None 11
27(f4): 10(ptr) FunctionParameter
29: Label
271: 9(fvec4) Load 27(f4)
272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36
273: 9(fvec4) Load 27(f4)
274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36
275: 9(fvec4) Load 27(f4)
276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78
277: 9(fvec4) Load 27(f4)
278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80
Return
FunctionEnd