Updated glslang.

This commit is contained in:
Branimir Karadžić 2018-11-25 20:11:25 -08:00
parent 626db4a59f
commit 109ceef8b4
6 changed files with 399 additions and 369 deletions

View File

@ -1,7 +1,7 @@
spv.subgroupBallot.comp spv.subgroupBallot.comp
// Module Version 10300 // Module Version 10300
// Generated by (magic number): 80007 // Generated by (magic number): 80007
// Id's are bound by 417 // Id's are bound by 397
Capability Shader Capability Shader
Capability Float64 Capability Float64
@ -51,7 +51,7 @@ spv.subgroupBallot.comp
Decorate 46(Buffers) Block Decorate 46(Buffers) Block
Decorate 49(data) DescriptorSet 0 Decorate 49(data) DescriptorSet 0
Decorate 49(data) Binding 0 Decorate 49(data) Binding 0
Decorate 416 BuiltIn WorkgroupSize Decorate 396 BuiltIn WorkgroupSize
2: TypeVoid 2: TypeVoid
3: TypeFunction 2 3: TypeFunction 2
6: TypeInt 32 0 6: TypeInt 32 0
@ -91,30 +91,30 @@ spv.subgroupBallot.comp
83: TypeVector 36(bool) 4 83: TypeVector 36(bool) 4
88: TypePointer StorageBuffer 17(ivec4) 88: TypePointer StorageBuffer 17(ivec4)
96: TypePointer StorageBuffer 40(float) 96: TypePointer StorageBuffer 40(float)
103: TypeVector 40(float) 2 102: TypeVector 40(float) 2
104: TypePointer StorageBuffer 41(fvec4) 103: TypePointer StorageBuffer 41(fvec4)
114: TypeVector 40(float) 3 112: TypeVector 40(float) 3
124: 42(int) Constant 3 121: 42(int) Constant 3
131: TypePointer StorageBuffer 42(int) 127: TypePointer StorageBuffer 42(int)
138: TypeVector 42(int) 2 133: TypeVector 42(int) 2
139: TypePointer StorageBuffer 43(ivec4) 134: TypePointer StorageBuffer 43(ivec4)
149: TypeVector 42(int) 3 143: TypeVector 42(int) 3
171: TypeVector 6(int) 2 162: TypeVector 6(int) 2
181: TypeVector 6(int) 3 171: TypeVector 6(int) 3
197: TypePointer StorageBuffer 44(float64_t) 185: TypePointer StorageBuffer 44(float64_t)
204: TypeVector 44(float64_t) 2 191: TypeVector 44(float64_t) 2
205: TypePointer StorageBuffer 45(f64vec4) 192: TypePointer StorageBuffer 45(f64vec4)
215: TypeVector 44(float64_t) 3 201: TypeVector 44(float64_t) 3
242: 138(ivec2) ConstantComposite 61 61 225: 133(ivec2) ConstantComposite 61 61
243: TypeVector 36(bool) 2 226: TypeVector 36(bool) 2
247: 138(ivec2) ConstantComposite 60 60 229: 133(ivec2) ConstantComposite 60 60
256: 149(ivec3) ConstantComposite 61 61 61 238: 143(ivec3) ConstantComposite 61 61 61
257: TypeVector 36(bool) 3 239: TypeVector 36(bool) 3
261: 149(ivec3) ConstantComposite 60 60 60 242: 143(ivec3) ConstantComposite 60 60 60
269: 43(ivec4) ConstantComposite 61 61 61 61 250: 43(ivec4) ConstantComposite 61 61 61 61
273: 43(ivec4) ConstantComposite 60 60 60 60 253: 43(ivec4) ConstantComposite 60 60 60 60
415: 6(int) Constant 8 395: 6(int) Constant 8
416: 181(ivec3) ConstantComposite 415 415 64 396: 171(ivec3) ConstantComposite 395 395 64
4(main): 2 Function None 3 4(main): 2 Function None 3
5: Label 5: Label
8(invocation): 7(ptr) Variable Function 8(invocation): 7(ptr) Variable Function
@ -179,346 +179,326 @@ spv.subgroupBallot.comp
87: Label 87: Label
92: 36(bool) Phi 85 5 91 86 92: 36(bool) Phi 85 5 91 86
SelectionMerge 94 None SelectionMerge 94 None
BranchConditional 92 93 276 BranchConditional 92 93 256
93: Label 93: Label
95: 6(int) Load 8(invocation) 95: 6(int) Load 8(invocation)
97: 96(ptr) AccessChain 49(data) 61 61 54 97: 96(ptr) AccessChain 49(data) 61 61 54
98: 40(float) Load 97 98: 40(float) Load 97
99: 6(int) Load 8(invocation) 99: 40(float) GroupNonUniformBroadcast 38 98 38
100: 40(float) GroupNonUniformBroadcast 38 98 99 100: 96(ptr) AccessChain 49(data) 95 61 54
101: 96(ptr) AccessChain 49(data) 95 61 54 Store 100 99
Store 101 100 101: 6(int) Load 8(invocation)
102: 6(int) Load 8(invocation) 104: 103(ptr) AccessChain 49(data) 60 61
105: 104(ptr) AccessChain 49(data) 60 61 105: 41(fvec4) Load 104
106: 41(fvec4) Load 105 106: 102(fvec2) VectorShuffle 105 105 0 1
107: 103(fvec2) VectorShuffle 106 106 0 1 107: 102(fvec2) GroupNonUniformBroadcast 38 106 38
108: 6(int) Load 8(invocation) 108: 103(ptr) AccessChain 49(data) 101 61
109: 103(fvec2) GroupNonUniformBroadcast 38 107 108 109: 41(fvec4) Load 108
110: 104(ptr) AccessChain 49(data) 102 61 110: 41(fvec4) VectorShuffle 109 107 4 5 2 3
111: 41(fvec4) Load 110 Store 108 110
112: 41(fvec4) VectorShuffle 111 109 4 5 2 3 111: 6(int) Load 8(invocation)
Store 110 112 113: 103(ptr) AccessChain 49(data) 51 61
113: 6(int) Load 8(invocation) 114: 41(fvec4) Load 113
115: 104(ptr) AccessChain 49(data) 51 61 115: 112(fvec3) VectorShuffle 114 114 0 1 2
116: 41(fvec4) Load 115 116: 112(fvec3) GroupNonUniformBroadcast 38 115 38
117: 114(fvec3) VectorShuffle 116 116 0 1 2 117: 103(ptr) AccessChain 49(data) 111 61
118: 6(int) Load 8(invocation) 118: 41(fvec4) Load 117
119: 114(fvec3) GroupNonUniformBroadcast 38 117 118 119: 41(fvec4) VectorShuffle 118 116 4 5 6 3
120: 104(ptr) AccessChain 49(data) 113 61 Store 117 119
121: 41(fvec4) Load 120 120: 6(int) Load 8(invocation)
122: 41(fvec4) VectorShuffle 121 119 4 5 6 3 122: 103(ptr) AccessChain 49(data) 121 61
Store 120 122 123: 41(fvec4) Load 122
123: 6(int) Load 8(invocation) 124: 41(fvec4) GroupNonUniformBroadcast 38 123 38
125: 104(ptr) AccessChain 49(data) 124 61 125: 103(ptr) AccessChain 49(data) 120 61
126: 41(fvec4) Load 125 Store 125 124
127: 6(int) Load 8(invocation) 126: 6(int) Load 8(invocation)
128: 41(fvec4) GroupNonUniformBroadcast 38 126 127 128: 127(ptr) AccessChain 49(data) 61 60 54
129: 104(ptr) AccessChain 49(data) 123 61 129: 42(int) Load 128
Store 129 128 130: 42(int) GroupNonUniformBroadcast 38 129 72
130: 6(int) Load 8(invocation) 131: 127(ptr) AccessChain 49(data) 126 60 54
132: 131(ptr) AccessChain 49(data) 61 60 54 Store 131 130
133: 42(int) Load 132 132: 6(int) Load 8(invocation)
134: 6(int) Load 8(invocation) 135: 134(ptr) AccessChain 49(data) 60 60
135: 42(int) GroupNonUniformBroadcast 38 133 134 136: 43(ivec4) Load 135
136: 131(ptr) AccessChain 49(data) 130 60 54 137: 133(ivec2) VectorShuffle 136 136 0 1
Store 136 135 138: 133(ivec2) GroupNonUniformBroadcast 38 137 72
137: 6(int) Load 8(invocation) 139: 134(ptr) AccessChain 49(data) 132 60
140: 139(ptr) AccessChain 49(data) 60 60 140: 43(ivec4) Load 139
141: 43(ivec4) Load 140 141: 43(ivec4) VectorShuffle 140 138 4 5 2 3
142: 138(ivec2) VectorShuffle 141 141 0 1 Store 139 141
143: 6(int) Load 8(invocation) 142: 6(int) Load 8(invocation)
144: 138(ivec2) GroupNonUniformBroadcast 38 142 143 144: 134(ptr) AccessChain 49(data) 51 60
145: 139(ptr) AccessChain 49(data) 137 60 145: 43(ivec4) Load 144
146: 43(ivec4) Load 145 146: 143(ivec3) VectorShuffle 145 145 0 1 2
147: 43(ivec4) VectorShuffle 146 144 4 5 2 3 147: 143(ivec3) GroupNonUniformBroadcast 38 146 72
Store 145 147 148: 134(ptr) AccessChain 49(data) 142 60
148: 6(int) Load 8(invocation) 149: 43(ivec4) Load 148
150: 139(ptr) AccessChain 49(data) 51 60 150: 43(ivec4) VectorShuffle 149 147 4 5 6 3
151: 43(ivec4) Load 150 Store 148 150
152: 149(ivec3) VectorShuffle 151 151 0 1 2 151: 6(int) Load 8(invocation)
153: 6(int) Load 8(invocation) 152: 134(ptr) AccessChain 49(data) 121 60
154: 149(ivec3) GroupNonUniformBroadcast 38 152 153 153: 43(ivec4) Load 152
155: 139(ptr) AccessChain 49(data) 148 60 154: 43(ivec4) GroupNonUniformBroadcast 38 153 72
156: 43(ivec4) Load 155 155: 134(ptr) AccessChain 49(data) 151 60
157: 43(ivec4) VectorShuffle 156 154 4 5 6 3 Store 155 154
Store 155 157 156: 6(int) Load 8(invocation)
158: 6(int) Load 8(invocation) 157: 55(ptr) AccessChain 49(data) 61 51 54
159: 139(ptr) AccessChain 49(data) 124 60 158: 6(int) Load 157
160: 43(ivec4) Load 159 159: 6(int) GroupNonUniformBroadcast 38 158 64
160: 55(ptr) AccessChain 49(data) 156 51 54
Store 160 159
161: 6(int) Load 8(invocation) 161: 6(int) Load 8(invocation)
162: 43(ivec4) GroupNonUniformBroadcast 38 160 161 163: 88(ptr) AccessChain 49(data) 60 51
163: 139(ptr) AccessChain 49(data) 158 60 164: 17(ivec4) Load 163
Store 163 162 165: 162(ivec2) VectorShuffle 164 164 0 1
164: 6(int) Load 8(invocation) 166: 162(ivec2) GroupNonUniformBroadcast 38 165 64
165: 55(ptr) AccessChain 49(data) 61 51 54 167: 88(ptr) AccessChain 49(data) 161 51
166: 6(int) Load 165 168: 17(ivec4) Load 167
167: 6(int) Load 8(invocation) 169: 17(ivec4) VectorShuffle 168 166 4 5 2 3
168: 6(int) GroupNonUniformBroadcast 38 166 167 Store 167 169
169: 55(ptr) AccessChain 49(data) 164 51 54
Store 169 168
170: 6(int) Load 8(invocation) 170: 6(int) Load 8(invocation)
172: 88(ptr) AccessChain 49(data) 60 51 172: 88(ptr) AccessChain 49(data) 51 51
173: 17(ivec4) Load 172 173: 17(ivec4) Load 172
174: 171(ivec2) VectorShuffle 173 173 0 1 174: 171(ivec3) VectorShuffle 173 173 0 1 2
175: 6(int) Load 8(invocation) 175: 171(ivec3) GroupNonUniformBroadcast 38 174 64
176: 171(ivec2) GroupNonUniformBroadcast 38 174 175 176: 88(ptr) AccessChain 49(data) 170 51
177: 88(ptr) AccessChain 49(data) 170 51 177: 17(ivec4) Load 176
178: 17(ivec4) Load 177 178: 17(ivec4) VectorShuffle 177 175 4 5 6 3
179: 17(ivec4) VectorShuffle 178 176 4 5 2 3 Store 176 178
Store 177 179 179: 6(int) Load 8(invocation)
180: 6(int) Load 8(invocation) 180: 88(ptr) AccessChain 49(data) 121 51
182: 88(ptr) AccessChain 49(data) 51 51 181: 17(ivec4) Load 180
183: 17(ivec4) Load 182 182: 17(ivec4) GroupNonUniformBroadcast 38 181 64
184: 181(ivec3) VectorShuffle 183 183 0 1 2 183: 88(ptr) AccessChain 49(data) 179 51
185: 6(int) Load 8(invocation) Store 183 182
186: 181(ivec3) GroupNonUniformBroadcast 38 184 185 184: 6(int) Load 8(invocation)
187: 88(ptr) AccessChain 49(data) 180 51 186: 185(ptr) AccessChain 49(data) 61 121 54
188: 17(ivec4) Load 187 187:44(float64_t) Load 186
189: 17(ivec4) VectorShuffle 188 186 4 5 6 3 188:44(float64_t) GroupNonUniformBroadcast 38 187 54
Store 187 189 189: 185(ptr) AccessChain 49(data) 184 121 54
Store 189 188
190: 6(int) Load 8(invocation) 190: 6(int) Load 8(invocation)
191: 88(ptr) AccessChain 49(data) 124 51 193: 192(ptr) AccessChain 49(data) 60 121
192: 17(ivec4) Load 191 194: 45(f64vec4) Load 193
193: 6(int) Load 8(invocation) 195:191(f64vec2) VectorShuffle 194 194 0 1
194: 17(ivec4) GroupNonUniformBroadcast 38 192 193 196:191(f64vec2) GroupNonUniformBroadcast 38 195 54
195: 88(ptr) AccessChain 49(data) 190 51 197: 192(ptr) AccessChain 49(data) 190 121
Store 195 194 198: 45(f64vec4) Load 197
196: 6(int) Load 8(invocation) 199: 45(f64vec4) VectorShuffle 198 196 4 5 2 3
198: 197(ptr) AccessChain 49(data) 61 124 54 Store 197 199
199:44(float64_t) Load 198
200: 6(int) Load 8(invocation) 200: 6(int) Load 8(invocation)
201:44(float64_t) GroupNonUniformBroadcast 38 199 200 202: 192(ptr) AccessChain 49(data) 51 121
202: 197(ptr) AccessChain 49(data) 196 124 54 203: 45(f64vec4) Load 202
Store 202 201 204:201(f64vec3) VectorShuffle 203 203 0 1 2
203: 6(int) Load 8(invocation) 205:201(f64vec3) GroupNonUniformBroadcast 38 204 54
206: 205(ptr) AccessChain 49(data) 60 124 206: 192(ptr) AccessChain 49(data) 200 121
207: 45(f64vec4) Load 206 207: 45(f64vec4) Load 206
208:204(f64vec2) VectorShuffle 207 207 0 1 208: 45(f64vec4) VectorShuffle 207 205 4 5 6 3
Store 206 208
209: 6(int) Load 8(invocation) 209: 6(int) Load 8(invocation)
210:204(f64vec2) GroupNonUniformBroadcast 38 208 209 210: 192(ptr) AccessChain 49(data) 121 121
211: 205(ptr) AccessChain 49(data) 203 124 211: 45(f64vec4) Load 210
212: 45(f64vec4) Load 211 212: 45(f64vec4) GroupNonUniformBroadcast 38 211 54
213: 45(f64vec4) VectorShuffle 212 210 4 5 2 3 213: 192(ptr) AccessChain 49(data) 209 121
Store 211 213 Store 213 212
214: 6(int) Load 8(invocation) 214: 6(int) Load 8(invocation)
216: 205(ptr) AccessChain 49(data) 51 124 215: 127(ptr) AccessChain 49(data) 61 60 54
217: 45(f64vec4) Load 216 216: 42(int) Load 215
218:215(f64vec3) VectorShuffle 217 217 0 1 2 217: 36(bool) SLessThan 216 61
219: 6(int) Load 8(invocation) 218: 36(bool) GroupNonUniformBroadcast 38 217 64
220:215(f64vec3) GroupNonUniformBroadcast 38 218 219 219: 42(int) Select 218 60 61
221: 205(ptr) AccessChain 49(data) 214 124 220: 127(ptr) AccessChain 49(data) 214 60 54
222: 45(f64vec4) Load 221 Store 220 219
223: 45(f64vec4) VectorShuffle 222 220 4 5 6 3 221: 6(int) Load 8(invocation)
Store 221 223 222: 134(ptr) AccessChain 49(data) 60 60
224: 6(int) Load 8(invocation) 223: 43(ivec4) Load 222
225: 205(ptr) AccessChain 49(data) 124 124 224: 133(ivec2) VectorShuffle 223 223 0 1
226: 45(f64vec4) Load 225 227: 226(bvec2) SLessThan 224 225
227: 6(int) Load 8(invocation) 228: 226(bvec2) GroupNonUniformBroadcast 38 227 64
228: 45(f64vec4) GroupNonUniformBroadcast 38 226 227 230: 133(ivec2) Select 228 229 225
229: 205(ptr) AccessChain 49(data) 224 124 231: 134(ptr) AccessChain 49(data) 221 60
Store 229 228 232: 43(ivec4) Load 231
230: 6(int) Load 8(invocation) 233: 43(ivec4) VectorShuffle 232 230 4 5 2 3
231: 131(ptr) AccessChain 49(data) 61 60 54 Store 231 233
232: 42(int) Load 231
233: 36(bool) SLessThan 232 61
234: 6(int) Load 8(invocation) 234: 6(int) Load 8(invocation)
235: 36(bool) GroupNonUniformBroadcast 38 233 234 235: 134(ptr) AccessChain 49(data) 60 60
236: 42(int) Select 235 60 61 236: 43(ivec4) Load 235
237: 131(ptr) AccessChain 49(data) 230 60 54 237: 143(ivec3) VectorShuffle 236 236 0 1 2
Store 237 236 240: 239(bvec3) SLessThan 237 238
238: 6(int) Load 8(invocation) 241: 239(bvec3) GroupNonUniformBroadcast 38 240 64
239: 139(ptr) AccessChain 49(data) 60 60 243: 143(ivec3) Select 241 242 238
240: 43(ivec4) Load 239 244: 134(ptr) AccessChain 49(data) 234 60
241: 138(ivec2) VectorShuffle 240 240 0 1 245: 43(ivec4) Load 244
244: 243(bvec2) SLessThan 241 242 246: 43(ivec4) VectorShuffle 245 243 4 5 6 3
245: 6(int) Load 8(invocation) Store 244 246
246: 243(bvec2) GroupNonUniformBroadcast 38 244 245 247: 6(int) Load 8(invocation)
248: 138(ivec2) Select 246 247 242 248: 134(ptr) AccessChain 49(data) 60 60
249: 139(ptr) AccessChain 49(data) 238 60 249: 43(ivec4) Load 248
250: 43(ivec4) Load 249 251: 83(bvec4) SLessThan 249 250
251: 43(ivec4) VectorShuffle 250 248 4 5 2 3 252: 83(bvec4) GroupNonUniformBroadcast 38 251 64
Store 249 251 254: 43(ivec4) Select 252 253 250
252: 6(int) Load 8(invocation) 255: 134(ptr) AccessChain 49(data) 247 60
253: 139(ptr) AccessChain 49(data) 60 60 Store 255 254
254: 43(ivec4) Load 253
255: 149(ivec3) VectorShuffle 254 254 0 1 2
258: 257(bvec3) SLessThan 255 256
259: 6(int) Load 8(invocation)
260: 257(bvec3) GroupNonUniformBroadcast 38 258 259
262: 149(ivec3) Select 260 261 256
263: 139(ptr) AccessChain 49(data) 252 60
264: 43(ivec4) Load 263
265: 43(ivec4) VectorShuffle 264 262 4 5 6 3
Store 263 265
266: 6(int) Load 8(invocation)
267: 139(ptr) AccessChain 49(data) 60 60
268: 43(ivec4) Load 267
270: 83(bvec4) SLessThan 268 269
271: 6(int) Load 8(invocation)
272: 83(bvec4) GroupNonUniformBroadcast 38 270 271
274: 43(ivec4) Select 272 273 269
275: 139(ptr) AccessChain 49(data) 266 60
Store 275 274
Branch 94 Branch 94
276: Label 256: Label
277: 6(int) Load 8(invocation) 257: 6(int) Load 8(invocation)
278: 96(ptr) AccessChain 49(data) 61 61 54 258: 96(ptr) AccessChain 49(data) 61 61 54
279: 40(float) Load 278 259: 40(float) Load 258
280: 40(float) GroupNonUniformBroadcastFirst 38 279 260: 40(float) GroupNonUniformBroadcastFirst 38 259
281: 96(ptr) AccessChain 49(data) 277 61 54 261: 96(ptr) AccessChain 49(data) 257 61 54
Store 281 280 Store 261 260
282: 6(int) Load 8(invocation) 262: 6(int) Load 8(invocation)
283: 104(ptr) AccessChain 49(data) 60 61 263: 103(ptr) AccessChain 49(data) 60 61
284: 41(fvec4) Load 283 264: 41(fvec4) Load 263
285: 103(fvec2) VectorShuffle 284 284 0 1 265: 102(fvec2) VectorShuffle 264 264 0 1
286: 103(fvec2) GroupNonUniformBroadcastFirst 38 285 266: 102(fvec2) GroupNonUniformBroadcastFirst 38 265
287: 104(ptr) AccessChain 49(data) 282 61 267: 103(ptr) AccessChain 49(data) 262 61
288: 41(fvec4) Load 287 268: 41(fvec4) Load 267
289: 41(fvec4) VectorShuffle 288 286 4 5 2 3 269: 41(fvec4) VectorShuffle 268 266 4 5 2 3
Store 287 289 Store 267 269
290: 6(int) Load 8(invocation) 270: 6(int) Load 8(invocation)
291: 104(ptr) AccessChain 49(data) 51 61 271: 103(ptr) AccessChain 49(data) 51 61
292: 41(fvec4) Load 291 272: 41(fvec4) Load 271
293: 114(fvec3) VectorShuffle 292 292 0 1 2 273: 112(fvec3) VectorShuffle 272 272 0 1 2
294: 114(fvec3) GroupNonUniformBroadcastFirst 38 293 274: 112(fvec3) GroupNonUniformBroadcastFirst 38 273
295: 104(ptr) AccessChain 49(data) 290 61 275: 103(ptr) AccessChain 49(data) 270 61
296: 41(fvec4) Load 295 276: 41(fvec4) Load 275
297: 41(fvec4) VectorShuffle 296 294 4 5 6 3 277: 41(fvec4) VectorShuffle 276 274 4 5 6 3
Store 295 297 Store 275 277
298: 6(int) Load 8(invocation) 278: 6(int) Load 8(invocation)
299: 104(ptr) AccessChain 49(data) 124 61 279: 103(ptr) AccessChain 49(data) 121 61
300: 41(fvec4) Load 299 280: 41(fvec4) Load 279
301: 41(fvec4) GroupNonUniformBroadcastFirst 38 300 281: 41(fvec4) GroupNonUniformBroadcastFirst 38 280
302: 104(ptr) AccessChain 49(data) 298 61 282: 103(ptr) AccessChain 49(data) 278 61
Store 302 301 Store 282 281
303: 6(int) Load 8(invocation) 283: 6(int) Load 8(invocation)
304: 131(ptr) AccessChain 49(data) 61 60 54 284: 127(ptr) AccessChain 49(data) 61 60 54
305: 42(int) Load 304 285: 42(int) Load 284
306: 42(int) GroupNonUniformBroadcastFirst 38 305 286: 42(int) GroupNonUniformBroadcastFirst 38 285
307: 131(ptr) AccessChain 49(data) 303 60 54 287: 127(ptr) AccessChain 49(data) 283 60 54
Store 307 306 Store 287 286
308: 6(int) Load 8(invocation) 288: 6(int) Load 8(invocation)
309: 139(ptr) AccessChain 49(data) 60 60 289: 134(ptr) AccessChain 49(data) 60 60
310: 43(ivec4) Load 309 290: 43(ivec4) Load 289
311: 138(ivec2) VectorShuffle 310 310 0 1 291: 133(ivec2) VectorShuffle 290 290 0 1
312: 138(ivec2) GroupNonUniformBroadcastFirst 38 311 292: 133(ivec2) GroupNonUniformBroadcastFirst 38 291
313: 139(ptr) AccessChain 49(data) 308 60 293: 134(ptr) AccessChain 49(data) 288 60
314: 43(ivec4) Load 313 294: 43(ivec4) Load 293
315: 43(ivec4) VectorShuffle 314 312 4 5 2 3 295: 43(ivec4) VectorShuffle 294 292 4 5 2 3
Store 313 315 Store 293 295
316: 6(int) Load 8(invocation) 296: 6(int) Load 8(invocation)
317: 139(ptr) AccessChain 49(data) 51 60 297: 134(ptr) AccessChain 49(data) 51 60
318: 43(ivec4) Load 317 298: 43(ivec4) Load 297
319: 149(ivec3) VectorShuffle 318 318 0 1 2 299: 143(ivec3) VectorShuffle 298 298 0 1 2
320: 149(ivec3) GroupNonUniformBroadcastFirst 38 319 300: 143(ivec3) GroupNonUniformBroadcastFirst 38 299
321: 139(ptr) AccessChain 49(data) 316 60 301: 134(ptr) AccessChain 49(data) 296 60
322: 43(ivec4) Load 321 302: 43(ivec4) Load 301
323: 43(ivec4) VectorShuffle 322 320 4 5 6 3 303: 43(ivec4) VectorShuffle 302 300 4 5 6 3
Store 321 323 Store 301 303
324: 6(int) Load 8(invocation) 304: 6(int) Load 8(invocation)
325: 139(ptr) AccessChain 49(data) 124 60 305: 134(ptr) AccessChain 49(data) 121 60
326: 43(ivec4) Load 325 306: 43(ivec4) Load 305
327: 43(ivec4) GroupNonUniformBroadcastFirst 38 326 307: 43(ivec4) GroupNonUniformBroadcastFirst 38 306
328: 139(ptr) AccessChain 49(data) 324 60 308: 134(ptr) AccessChain 49(data) 304 60
Store 328 327 Store 308 307
329: 6(int) Load 8(invocation) 309: 6(int) Load 8(invocation)
330: 55(ptr) AccessChain 49(data) 61 51 54 310: 55(ptr) AccessChain 49(data) 61 51 54
331: 6(int) Load 330 311: 6(int) Load 310
332: 6(int) GroupNonUniformBroadcastFirst 38 331 312: 6(int) GroupNonUniformBroadcastFirst 38 311
333: 55(ptr) AccessChain 49(data) 329 51 54 313: 55(ptr) AccessChain 49(data) 309 51 54
Store 333 332 Store 313 312
334: 6(int) Load 8(invocation) 314: 6(int) Load 8(invocation)
335: 88(ptr) AccessChain 49(data) 60 51 315: 88(ptr) AccessChain 49(data) 60 51
336: 17(ivec4) Load 335 316: 17(ivec4) Load 315
337: 171(ivec2) VectorShuffle 336 336 0 1 317: 162(ivec2) VectorShuffle 316 316 0 1
338: 171(ivec2) GroupNonUniformBroadcastFirst 38 337 318: 162(ivec2) GroupNonUniformBroadcastFirst 38 317
339: 88(ptr) AccessChain 49(data) 334 51 319: 88(ptr) AccessChain 49(data) 314 51
340: 17(ivec4) Load 339 320: 17(ivec4) Load 319
341: 17(ivec4) VectorShuffle 340 338 4 5 2 3 321: 17(ivec4) VectorShuffle 320 318 4 5 2 3
Store 339 341 Store 319 321
342: 6(int) Load 8(invocation) 322: 6(int) Load 8(invocation)
343: 88(ptr) AccessChain 49(data) 51 51 323: 88(ptr) AccessChain 49(data) 51 51
344: 17(ivec4) Load 343 324: 17(ivec4) Load 323
345: 181(ivec3) VectorShuffle 344 344 0 1 2 325: 171(ivec3) VectorShuffle 324 324 0 1 2
346: 181(ivec3) GroupNonUniformBroadcastFirst 38 345 326: 171(ivec3) GroupNonUniformBroadcastFirst 38 325
347: 88(ptr) AccessChain 49(data) 342 51 327: 88(ptr) AccessChain 49(data) 322 51
348: 17(ivec4) Load 347 328: 17(ivec4) Load 327
349: 17(ivec4) VectorShuffle 348 346 4 5 6 3 329: 17(ivec4) VectorShuffle 328 326 4 5 6 3
Store 347 349 Store 327 329
350: 6(int) Load 8(invocation) 330: 6(int) Load 8(invocation)
351: 88(ptr) AccessChain 49(data) 124 51 331: 88(ptr) AccessChain 49(data) 121 51
352: 17(ivec4) Load 351 332: 17(ivec4) Load 331
353: 17(ivec4) GroupNonUniformBroadcastFirst 38 352 333: 17(ivec4) GroupNonUniformBroadcastFirst 38 332
354: 88(ptr) AccessChain 49(data) 350 51 334: 88(ptr) AccessChain 49(data) 330 51
Store 354 353 Store 334 333
355: 6(int) Load 8(invocation) 335: 6(int) Load 8(invocation)
356: 197(ptr) AccessChain 49(data) 61 124 54 336: 185(ptr) AccessChain 49(data) 61 121 54
357:44(float64_t) Load 356 337:44(float64_t) Load 336
358:44(float64_t) GroupNonUniformBroadcastFirst 38 357 338:44(float64_t) GroupNonUniformBroadcastFirst 38 337
359: 197(ptr) AccessChain 49(data) 355 124 54 339: 185(ptr) AccessChain 49(data) 335 121 54
Store 359 358 Store 339 338
360: 6(int) Load 8(invocation) 340: 6(int) Load 8(invocation)
361: 205(ptr) AccessChain 49(data) 60 124 341: 192(ptr) AccessChain 49(data) 60 121
362: 45(f64vec4) Load 361 342: 45(f64vec4) Load 341
363:204(f64vec2) VectorShuffle 362 362 0 1 343:191(f64vec2) VectorShuffle 342 342 0 1
364:204(f64vec2) GroupNonUniformBroadcastFirst 38 363 344:191(f64vec2) GroupNonUniformBroadcastFirst 38 343
365: 205(ptr) AccessChain 49(data) 360 124 345: 192(ptr) AccessChain 49(data) 340 121
366: 45(f64vec4) Load 365 346: 45(f64vec4) Load 345
367: 45(f64vec4) VectorShuffle 366 364 4 5 2 3 347: 45(f64vec4) VectorShuffle 346 344 4 5 2 3
Store 365 367 Store 345 347
348: 6(int) Load 8(invocation)
349: 192(ptr) AccessChain 49(data) 51 121
350: 45(f64vec4) Load 349
351:201(f64vec3) VectorShuffle 350 350 0 1 2
352:201(f64vec3) GroupNonUniformBroadcastFirst 38 351
353: 192(ptr) AccessChain 49(data) 348 121
354: 45(f64vec4) Load 353
355: 45(f64vec4) VectorShuffle 354 352 4 5 6 3
Store 353 355
356: 6(int) Load 8(invocation)
357: 192(ptr) AccessChain 49(data) 121 121
358: 45(f64vec4) Load 357
359: 45(f64vec4) GroupNonUniformBroadcastFirst 38 358
360: 192(ptr) AccessChain 49(data) 356 121
Store 360 359
361: 6(int) Load 8(invocation)
362: 127(ptr) AccessChain 49(data) 61 60 54
363: 42(int) Load 362
364: 36(bool) SLessThan 363 61
365: 36(bool) GroupNonUniformBroadcastFirst 38 364
366: 42(int) Select 365 60 61
367: 127(ptr) AccessChain 49(data) 361 60 54
Store 367 366
368: 6(int) Load 8(invocation) 368: 6(int) Load 8(invocation)
369: 205(ptr) AccessChain 49(data) 51 124 369: 134(ptr) AccessChain 49(data) 60 60
370: 45(f64vec4) Load 369 370: 43(ivec4) Load 369
371:215(f64vec3) VectorShuffle 370 370 0 1 2 371: 133(ivec2) VectorShuffle 370 370 0 1
372:215(f64vec3) GroupNonUniformBroadcastFirst 38 371 372: 226(bvec2) SLessThan 371 225
373: 205(ptr) AccessChain 49(data) 368 124 373: 226(bvec2) GroupNonUniformBroadcastFirst 38 372
374: 45(f64vec4) Load 373 374: 133(ivec2) Select 373 229 225
375: 45(f64vec4) VectorShuffle 374 372 4 5 6 3 375: 134(ptr) AccessChain 49(data) 368 60
Store 373 375 376: 43(ivec4) Load 375
376: 6(int) Load 8(invocation) 377: 43(ivec4) VectorShuffle 376 374 4 5 2 3
377: 205(ptr) AccessChain 49(data) 124 124 Store 375 377
378: 45(f64vec4) Load 377 378: 6(int) Load 8(invocation)
379: 45(f64vec4) GroupNonUniformBroadcastFirst 38 378 379: 134(ptr) AccessChain 49(data) 60 60
380: 205(ptr) AccessChain 49(data) 376 124 380: 43(ivec4) Load 379
Store 380 379 381: 143(ivec3) VectorShuffle 380 380 0 1 2
381: 6(int) Load 8(invocation) 382: 239(bvec3) SLessThan 381 238
382: 131(ptr) AccessChain 49(data) 61 60 54 383: 239(bvec3) GroupNonUniformBroadcastFirst 38 382
383: 42(int) Load 382 384: 143(ivec3) Select 383 242 238
384: 36(bool) SLessThan 383 61 385: 134(ptr) AccessChain 49(data) 378 60
385: 36(bool) GroupNonUniformBroadcastFirst 38 384 386: 43(ivec4) Load 385
386: 42(int) Select 385 60 61 387: 43(ivec4) VectorShuffle 386 384 4 5 6 3
387: 131(ptr) AccessChain 49(data) 381 60 54 Store 385 387
Store 387 386
388: 6(int) Load 8(invocation) 388: 6(int) Load 8(invocation)
389: 139(ptr) AccessChain 49(data) 60 60 389: 134(ptr) AccessChain 49(data) 60 60
390: 43(ivec4) Load 389 390: 43(ivec4) Load 389
391: 138(ivec2) VectorShuffle 390 390 0 1 391: 83(bvec4) SLessThan 390 250
392: 243(bvec2) SLessThan 391 242 392: 83(bvec4) GroupNonUniformBroadcastFirst 38 391
393: 243(bvec2) GroupNonUniformBroadcastFirst 38 392 393: 43(ivec4) Select 392 253 250
394: 138(ivec2) Select 393 247 242 394: 134(ptr) AccessChain 49(data) 388 60
395: 139(ptr) AccessChain 49(data) 388 60 Store 394 393
396: 43(ivec4) Load 395
397: 43(ivec4) VectorShuffle 396 394 4 5 2 3
Store 395 397
398: 6(int) Load 8(invocation)
399: 139(ptr) AccessChain 49(data) 60 60
400: 43(ivec4) Load 399
401: 149(ivec3) VectorShuffle 400 400 0 1 2
402: 257(bvec3) SLessThan 401 256
403: 257(bvec3) GroupNonUniformBroadcastFirst 38 402
404: 149(ivec3) Select 403 261 256
405: 139(ptr) AccessChain 49(data) 398 60
406: 43(ivec4) Load 405
407: 43(ivec4) VectorShuffle 406 404 4 5 6 3
Store 405 407
408: 6(int) Load 8(invocation)
409: 139(ptr) AccessChain 49(data) 60 60
410: 43(ivec4) Load 409
411: 83(bvec4) SLessThan 410 269
412: 83(bvec4) GroupNonUniformBroadcastFirst 38 411
413: 43(ivec4) Select 412 273 269
414: 139(ptr) AccessChain 49(data) 408 60
Store 414 413
Branch 94 Branch 94
94: Label 94: Label
Return Return

View File

@ -0,0 +1,6 @@
spv.subgroupBallotNeg.comp
ERROR: 0:32: 'id' : argument must be compile-time constant
ERROR: 1 compilation errors. No code generated.
SPIR-V is not generated for failed compile or link

40
3rdparty/glslang/Test/spv.subgroupBallot.comp vendored Normal file → Executable file
View File

@ -31,30 +31,30 @@ void main()
if ((relMask == result) && subgroupInverseBallot(data[0].u4)) if ((relMask == result) && subgroupInverseBallot(data[0].u4))
{ {
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, 3);
data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, invocation); data[invocation].f4.xy = subgroupBroadcast(data[1].f4.xy, 3);
data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, invocation); data[invocation].f4.xyz = subgroupBroadcast(data[2].f4.xyz, 3);
data[invocation].f4 = subgroupBroadcast(data[3].f4, invocation); data[invocation].f4 = subgroupBroadcast(data[3].f4, 3);
data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, invocation); data[invocation].i4.x = subgroupBroadcast(data[0].i4.x, 2);
data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, invocation); data[invocation].i4.xy = subgroupBroadcast(data[1].i4.xy, 2);
data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, invocation); data[invocation].i4.xyz = subgroupBroadcast(data[2].i4.xyz, 2);
data[invocation].i4 = subgroupBroadcast(data[3].i4, invocation); data[invocation].i4 = subgroupBroadcast(data[3].i4, 2);
data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, invocation); data[invocation].u4.x = subgroupBroadcast(data[0].u4.x, 1);
data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, invocation); data[invocation].u4.xy = subgroupBroadcast(data[1].u4.xy, 1);
data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, invocation); data[invocation].u4.xyz = subgroupBroadcast(data[2].u4.xyz, 1);
data[invocation].u4 = subgroupBroadcast(data[3].u4, invocation); data[invocation].u4 = subgroupBroadcast(data[3].u4, 1);
data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, invocation); data[invocation].d4.x = subgroupBroadcast(data[0].d4.x, 0);
data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, invocation); data[invocation].d4.xy = subgroupBroadcast(data[1].d4.xy, 0);
data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, invocation); data[invocation].d4.xyz = subgroupBroadcast(data[2].d4.xyz, 0);
data[invocation].d4 = subgroupBroadcast(data[3].d4, invocation); data[invocation].d4 = subgroupBroadcast(data[3].d4, 0);
data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, invocation)); data[invocation].i4.x = int(subgroupBroadcast(data[0].i4.x < 0, 1));
data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), invocation)); data[invocation].i4.xy = ivec2(subgroupBroadcast(lessThan(data[1].i4.xy, ivec2(0)), 1));
data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), invocation)); data[invocation].i4.xyz = ivec3(subgroupBroadcast(lessThan(data[1].i4.xyz, ivec3(0)), 1));
data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), invocation)); data[invocation].i4 = ivec4(subgroupBroadcast(lessThan(data[1].i4, ivec4(0)), 1));
} }
else else
{ {

View File

@ -0,0 +1,33 @@
#version 450
#extension GL_KHR_shader_subgroup_ballot: enable
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
layout(binding = 0) buffer Buffers
{
vec4 f4;
ivec4 i4;
uvec4 u4;
dvec4 d4;
} data[4];
void main()
{
uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4;
uvec4 relMask = gl_SubgroupEqMask +
gl_SubgroupGeMask +
gl_SubgroupGtMask +
gl_SubgroupLeMask +
gl_SubgroupLtMask;
uvec4 result = subgroupBallot(true);
data[invocation].u4.x = subgroupBallotBitCount(result);
data[invocation].u4.y = subgroupBallotBitExtract(result, 0) ? 1 : 0;
data[invocation].u4.z = subgroupBallotInclusiveBitCount(result) + subgroupBallotExclusiveBitCount(result);
data[invocation].u4.w = subgroupBallotFindLSB(result) + subgroupBallotFindMSB(result);
data[invocation].f4.x = subgroupBroadcast(data[0].f4.x, invocation); // ERROR: not constant
}

View File

@ -1998,6 +1998,10 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
case EOpSubgroupClusteredAnd: case EOpSubgroupClusteredAnd:
case EOpSubgroupClusteredOr: case EOpSubgroupClusteredOr:
case EOpSubgroupClusteredXor: case EOpSubgroupClusteredXor:
// The <clusterSize> as used in the subgroupClustered<op>() operations must be:
// - An integral constant expression.
// - At least 1.
// - A power of 2.
if ((*argp)[1]->getAsConstantUnion() == nullptr) if ((*argp)[1]->getAsConstantUnion() == nullptr)
error(loc, "argument must be compile-time constant", "cluster size", ""); error(loc, "argument must be compile-time constant", "cluster size", "");
else { else {
@ -2009,6 +2013,12 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
} }
break; break;
case EOpSubgroupBroadcast:
// <id> must be an integral constant expression.
if ((*argp)[1]->getAsConstantUnion() == nullptr)
error(loc, "argument must be compile-time constant", "id", "");
break;
case EOpBarrier: case EOpBarrier:
case EOpMemoryBarrier: case EOpMemoryBarrier:
if (argp->size() > 0) { if (argp->size() > 0) {

1
3rdparty/glslang/gtests/Spv.FromFile.cpp vendored Normal file → Executable file
View File

@ -388,6 +388,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.subgroupArithmetic.comp", "spv.subgroupArithmetic.comp",
"spv.subgroupBasic.comp", "spv.subgroupBasic.comp",
"spv.subgroupBallot.comp", "spv.subgroupBallot.comp",
"spv.subgroupBallotNeg.comp",
"spv.subgroupClustered.comp", "spv.subgroupClustered.comp",
"spv.subgroupClusteredNeg.comp", "spv.subgroupClusteredNeg.comp",
"spv.subgroupPartitioned.comp", "spv.subgroupPartitioned.comp",