glslang/Test/baseResults/spv.460.subgroupEXT.task.out
Pankaj Mistry 228c67228a GL_EXT_mesh_shader/SPV_EXT_mesh_shader implementation
Added following updates to GL_EXT_mesh_shader implementation:

1. Added SPIRV and GLSL test cases
2. Added checks to ensure NV and EXT mesh shader builtins cannot be used interchangeably.
3. Updated the language name by removing the postfix "NV" to MeshShader and TaskShader.
4. Added checks for grammar checking to comply with the spec.

5. Added gl_NumWorkGroups builtin to Mesh shader
6. Fixed data type of gl_PrimitiveLineIndicesEXT and gl_PrimitiveTriangleIndicesEXT
7. Added new constants to the resources table
8. Updates to handle new storage qualifier "taskPayloadSharedEXT"
9. Updated test cases by replacing "taskEXT" with storage qualifier "taskPayloadSharedEXT"

Addressed  Review comments
1. Fixed instruction description used by glslang disassembly.
2. Updated OpEmitMeshTasksEXT as per spec update
3. Fixed implementation that errors out if there are more then one taskPayloadSharedEXT varjables.
4. Fixed miscellaneous error logs and removed unwanted code.

SPIRV 1.6 related build failure fixes
- Update SPIRV header to 1.6
- Fix conflict wiht SPIRV 1.6 change, where localSizeId is used for execution mode for mesh/task shaders

Enable SPIRV generated for EXT_mesh_shader to be version 1.4

GL_EXT_mesh_shader: Add checks for atomic support and corresponding test cases
2022-09-01 18:02:21 -07:00

377 lines
20 KiB
Plaintext

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