blob: b160c5f615fa67bf73a47491c56a29b40f7f4e98 [file] [log] [blame]
spv.subgroupShuffle.comp
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 379
Capability Shader
Capability Float64
Capability GroupNonUniform
Capability GroupNonUniformShuffle
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main" 10 12
ExecutionMode 4 LocalSize 8 8 1
Source GLSL 450
SourceExtension "GL_KHR_shader_subgroup_basic"
SourceExtension "GL_KHR_shader_subgroup_shuffle"
Name 4 "main"
Name 8 "invocation"
Name 10 "gl_SubgroupInvocationID"
Name 12 "gl_SubgroupSize"
Name 24 "Buffers"
MemberName 24(Buffers) 0 "f4"
MemberName 24(Buffers) 1 "i4"
MemberName 24(Buffers) 2 "u4"
MemberName 24(Buffers) 3 "d4"
Name 27 "data"
Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision
Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
Decorate 11 RelaxedPrecision
Decorate 12(gl_SubgroupSize) RelaxedPrecision
Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize
Decorate 13 RelaxedPrecision
Decorate 14 RelaxedPrecision
Decorate 16 RelaxedPrecision
MemberDecorate 24(Buffers) 0 Offset 0
MemberDecorate 24(Buffers) 1 Offset 16
MemberDecorate 24(Buffers) 2 Offset 32
MemberDecorate 24(Buffers) 3 Offset 64
Decorate 24(Buffers) Block
Decorate 27(data) DescriptorSet 0
Decorate 27(data) Binding 0
Decorate 378 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
7: TypePointer Function 6(int)
9: TypePointer Input 6(int)
10(gl_SubgroupInvocationID): 9(ptr) Variable Input
12(gl_SubgroupSize): 9(ptr) Variable Input
15: 6(int) Constant 4
17: TypeFloat 32
18: TypeVector 17(float) 4
19: TypeInt 32 1
20: TypeVector 19(int) 4
21: TypeVector 6(int) 4
22: TypeFloat 64
23: TypeVector 22(float64_t) 4
24(Buffers): TypeStruct 18(fvec4) 20(ivec4) 21(ivec4) 23(f64vec4)
25: TypeArray 24(Buffers) 15
26: TypePointer StorageBuffer 25
27(data): 26(ptr) Variable StorageBuffer
29: 19(int) Constant 0
30: 6(int) Constant 0
31: TypePointer StorageBuffer 17(float)
35: 6(int) Constant 3
39: 19(int) Constant 1
40: TypeVector 17(float) 2
41: TypePointer StorageBuffer 18(fvec4)
51: 19(int) Constant 2
52: TypeVector 17(float) 3
62: 19(int) Constant 3
69: TypePointer StorageBuffer 19(int)
76: TypeVector 19(int) 2
77: TypePointer StorageBuffer 20(ivec4)
87: TypeVector 19(int) 3
103: TypePointer StorageBuffer 6(int)
110: TypeVector 6(int) 2
111: TypePointer StorageBuffer 21(ivec4)
121: TypeVector 6(int) 3
137: TypePointer StorageBuffer 22(float64_t)
144: TypeVector 22(float64_t) 2
145: TypePointer StorageBuffer 23(f64vec4)
155: TypeVector 22(float64_t) 3
173: TypeBool
183: 76(ivec2) ConstantComposite 29 29
184: TypeVector 173(bool) 2
188: 76(ivec2) ConstantComposite 39 39
197: 87(ivec3) ConstantComposite 29 29 29
198: TypeVector 173(bool) 3
202: 87(ivec3) ConstantComposite 39 39 39
210: 20(ivec4) ConstantComposite 29 29 29 29
211: TypeVector 173(bool) 4
215: 20(ivec4) ConstantComposite 39 39 39 39
376: 6(int) Constant 8
377: 6(int) Constant 1
378: 121(ivec3) ConstantComposite 376 376 377
4(main): 2 Function None 3
5: Label
8(invocation): 7(ptr) Variable Function
11: 6(int) Load 10(gl_SubgroupInvocationID)
13: 6(int) Load 12(gl_SubgroupSize)
14: 6(int) IAdd 11 13
16: 6(int) UMod 14 15
Store 8(invocation) 16
28: 6(int) Load 8(invocation)
32: 31(ptr) AccessChain 27(data) 29 29 30
33: 17(float) Load 32
34: 6(int) Load 8(invocation)
36: 17(float) GroupNonUniformShuffle 35 33 34
37: 31(ptr) AccessChain 27(data) 28 29 30
Store 37 36
38: 6(int) Load 8(invocation)
42: 41(ptr) AccessChain 27(data) 39 29
43: 18(fvec4) Load 42
44: 40(fvec2) VectorShuffle 43 43 0 1
45: 6(int) Load 8(invocation)
46: 40(fvec2) GroupNonUniformShuffle 35 44 45
47: 41(ptr) AccessChain 27(data) 38 29
48: 18(fvec4) Load 47
49: 18(fvec4) VectorShuffle 48 46 4 5 2 3
Store 47 49
50: 6(int) Load 8(invocation)
53: 41(ptr) AccessChain 27(data) 51 29
54: 18(fvec4) Load 53
55: 52(fvec3) VectorShuffle 54 54 0 1 2
56: 6(int) Load 8(invocation)
57: 52(fvec3) GroupNonUniformShuffle 35 55 56
58: 41(ptr) AccessChain 27(data) 50 29
59: 18(fvec4) Load 58
60: 18(fvec4) VectorShuffle 59 57 4 5 6 3
Store 58 60
61: 6(int) Load 8(invocation)
63: 41(ptr) AccessChain 27(data) 62 29
64: 18(fvec4) Load 63
65: 6(int) Load 8(invocation)
66: 18(fvec4) GroupNonUniformShuffle 35 64 65
67: 41(ptr) AccessChain 27(data) 61 29
Store 67 66
68: 6(int) Load 8(invocation)
70: 69(ptr) AccessChain 27(data) 29 39 30
71: 19(int) Load 70
72: 6(int) Load 8(invocation)
73: 19(int) GroupNonUniformShuffle 35 71 72
74: 69(ptr) AccessChain 27(data) 68 39 30
Store 74 73
75: 6(int) Load 8(invocation)
78: 77(ptr) AccessChain 27(data) 39 39
79: 20(ivec4) Load 78
80: 76(ivec2) VectorShuffle 79 79 0 1
81: 6(int) Load 8(invocation)
82: 76(ivec2) GroupNonUniformShuffle 35 80 81
83: 77(ptr) AccessChain 27(data) 75 39
84: 20(ivec4) Load 83
85: 20(ivec4) VectorShuffle 84 82 4 5 2 3
Store 83 85
86: 6(int) Load 8(invocation)
88: 77(ptr) AccessChain 27(data) 51 39
89: 20(ivec4) Load 88
90: 87(ivec3) VectorShuffle 89 89 0 1 2
91: 6(int) Load 8(invocation)
92: 87(ivec3) GroupNonUniformShuffle 35 90 91
93: 77(ptr) AccessChain 27(data) 86 39
94: 20(ivec4) Load 93
95: 20(ivec4) VectorShuffle 94 92 4 5 6 3
Store 93 95
96: 6(int) Load 8(invocation)
97: 77(ptr) AccessChain 27(data) 62 39
98: 20(ivec4) Load 97
99: 6(int) Load 8(invocation)
100: 20(ivec4) GroupNonUniformShuffle 35 98 99
101: 77(ptr) AccessChain 27(data) 96 39
Store 101 100
102: 6(int) Load 8(invocation)
104: 103(ptr) AccessChain 27(data) 29 51 30
105: 6(int) Load 104
106: 6(int) Load 8(invocation)
107: 6(int) GroupNonUniformShuffle 35 105 106
108: 103(ptr) AccessChain 27(data) 102 51 30
Store 108 107
109: 6(int) Load 8(invocation)
112: 111(ptr) AccessChain 27(data) 39 51
113: 21(ivec4) Load 112
114: 110(ivec2) VectorShuffle 113 113 0 1
115: 6(int) Load 8(invocation)
116: 110(ivec2) GroupNonUniformShuffle 35 114 115
117: 111(ptr) AccessChain 27(data) 109 51
118: 21(ivec4) Load 117
119: 21(ivec4) VectorShuffle 118 116 4 5 2 3
Store 117 119
120: 6(int) Load 8(invocation)
122: 111(ptr) AccessChain 27(data) 51 51
123: 21(ivec4) Load 122
124: 121(ivec3) VectorShuffle 123 123 0 1 2
125: 6(int) Load 8(invocation)
126: 121(ivec3) GroupNonUniformShuffle 35 124 125
127: 111(ptr) AccessChain 27(data) 120 51
128: 21(ivec4) Load 127
129: 21(ivec4) VectorShuffle 128 126 4 5 6 3
Store 127 129
130: 6(int) Load 8(invocation)
131: 111(ptr) AccessChain 27(data) 62 51
132: 21(ivec4) Load 131
133: 6(int) Load 8(invocation)
134: 21(ivec4) GroupNonUniformShuffle 35 132 133
135: 111(ptr) AccessChain 27(data) 130 51
Store 135 134
136: 6(int) Load 8(invocation)
138: 137(ptr) AccessChain 27(data) 29 62 30
139:22(float64_t) Load 138
140: 6(int) Load 8(invocation)
141:22(float64_t) GroupNonUniformShuffle 35 139 140
142: 137(ptr) AccessChain 27(data) 136 62 30
Store 142 141
143: 6(int) Load 8(invocation)
146: 145(ptr) AccessChain 27(data) 39 62
147: 23(f64vec4) Load 146
148:144(f64vec2) VectorShuffle 147 147 0 1
149: 6(int) Load 8(invocation)
150:144(f64vec2) GroupNonUniformShuffle 35 148 149
151: 145(ptr) AccessChain 27(data) 143 62
152: 23(f64vec4) Load 151
153: 23(f64vec4) VectorShuffle 152 150 4 5 2 3
Store 151 153
154: 6(int) Load 8(invocation)
156: 145(ptr) AccessChain 27(data) 51 62
157: 23(f64vec4) Load 156
158:155(f64vec3) VectorShuffle 157 157 0 1 2
159: 6(int) Load 8(invocation)
160:155(f64vec3) GroupNonUniformShuffle 35 158 159
161: 145(ptr) AccessChain 27(data) 154 62
162: 23(f64vec4) Load 161
163: 23(f64vec4) VectorShuffle 162 160 4 5 6 3
Store 161 163
164: 6(int) Load 8(invocation)
165: 145(ptr) AccessChain 27(data) 62 62
166: 23(f64vec4) Load 165
167: 6(int) Load 8(invocation)
168: 23(f64vec4) GroupNonUniformShuffle 35 166 167
169: 145(ptr) AccessChain 27(data) 164 62
Store 169 168
170: 6(int) Load 8(invocation)
171: 69(ptr) AccessChain 27(data) 29 39 30
172: 19(int) Load 171
174: 173(bool) SLessThan 172 29
175: 6(int) Load 8(invocation)
176: 173(bool) GroupNonUniformShuffle 35 174 175
177: 19(int) Select 176 39 29
178: 69(ptr) AccessChain 27(data) 170 39 30
Store 178 177
179: 6(int) Load 8(invocation)
180: 77(ptr) AccessChain 27(data) 39 39
181: 20(ivec4) Load 180
182: 76(ivec2) VectorShuffle 181 181 0 1
185: 184(bvec2) SLessThan 182 183
186: 6(int) Load 8(invocation)
187: 184(bvec2) GroupNonUniformShuffle 35 185 186
189: 76(ivec2) Select 187 188 183
190: 77(ptr) AccessChain 27(data) 179 39
191: 20(ivec4) Load 190
192: 20(ivec4) VectorShuffle 191 189 4 5 2 3
Store 190 192
193: 6(int) Load 8(invocation)
194: 77(ptr) AccessChain 27(data) 39 39
195: 20(ivec4) Load 194
196: 87(ivec3) VectorShuffle 195 195 0 1 2
199: 198(bvec3) SLessThan 196 197
200: 6(int) Load 8(invocation)
201: 198(bvec3) GroupNonUniformShuffle 35 199 200
203: 87(ivec3) Select 201 202 197
204: 77(ptr) AccessChain 27(data) 193 39
205: 20(ivec4) Load 204
206: 20(ivec4) VectorShuffle 205 203 4 5 6 3
Store 204 206
207: 6(int) Load 8(invocation)
208: 77(ptr) AccessChain 27(data) 39 39
209: 20(ivec4) Load 208
212: 211(bvec4) SLessThan 209 210
213: 6(int) Load 8(invocation)
214: 211(bvec4) GroupNonUniformShuffle 35 212 213
216: 20(ivec4) Select 214 215 210
217: 77(ptr) AccessChain 27(data) 207 39
Store 217 216
218: 6(int) Load 8(invocation)
219: 31(ptr) AccessChain 27(data) 29 29 30
220: 17(float) Load 219
221: 6(int) Load 8(invocation)
222: 17(float) GroupNonUniformShuffleXor 35 220 221
223: 31(ptr) AccessChain 27(data) 218 29 30
Store 223 222
224: 6(int) Load 8(invocation)
225: 41(ptr) AccessChain 27(data) 39 29
226: 18(fvec4) Load 225
227: 40(fvec2) VectorShuffle 226 226 0 1
228: 6(int) Load 8(invocation)
229: 40(fvec2) GroupNonUniformShuffleXor 35 227 228
230: 41(ptr) AccessChain 27(data) 224 29
231: 18(fvec4) Load 230
232: 18(fvec4) VectorShuffle 231 229 4 5 2 3
Store 230 232
233: 6(int) Load 8(invocation)
234: 41(ptr) AccessChain 27(data) 51 29
235: 18(fvec4) Load 234
236: 52(fvec3) VectorShuffle 235 235 0 1 2
237: 6(int) Load 8(invocation)
238: 52(fvec3) GroupNonUniformShuffleXor 35 236 237
239: 41(ptr) AccessChain 27(data) 233 29
240: 18(fvec4) Load 239
241: 18(fvec4) VectorShuffle 240 238 4 5 6 3
Store 239 241
242: 6(int) Load 8(invocation)
243: 41(ptr) AccessChain 27(data) 62 29
244: 18(fvec4) Load 243
245: 6(int) Load 8(invocation)
246: 18(fvec4) GroupNonUniformShuffleXor 35 244 245
247: 41(ptr) AccessChain 27(data) 242 29
Store 247 246
248: 6(int) Load 8(invocation)
249: 69(ptr) AccessChain 27(data) 29 39 30
250: 19(int) Load 249
251: 6(int) Load 8(invocation)
252: 19(int) GroupNonUniformShuffleXor 35 250 251
253: 69(ptr) AccessChain 27(data) 248 39 30
Store 253 252
254: 6(int) Load 8(invocation)
255: 77(ptr) AccessChain 27(data) 39 39
256: 20(ivec4) Load 255
257: 76(ivec2) VectorShuffle 256 256 0 1
258: 6(int) Load 8(invocation)
259: 76(ivec2) GroupNonUniformShuffleXor 35 257 258
260: 77(ptr) AccessChain 27(data) 254 39
261: 20(ivec4) Load 260
262: 20(ivec4) VectorShuffle 261 259 4 5 2 3
Store 260 262
263: 6(int) Load 8(invocation)
264: 77(ptr) AccessChain 27(data) 51 39
265: 20(ivec4) Load 264
266: 87(ivec3) VectorShuffle 265 265 0 1 2
267: 6(int) Load 8(invocation)
268: 87(ivec3) GroupNonUniformShuffleXor 35 266 267
269: 77(ptr) AccessChain 27(data) 263 39
270: 20(ivec4) Load 269
271: 20(ivec4) VectorShuffle 270 268 4 5 6 3
Store 269 271
272: 6(int) Load 8(invocation)
273: 77(ptr) AccessChain 27(data) 62 39
274: 20(ivec4) Load 273
275: 6(int) Load 8(invocation)
276: 20(ivec4) GroupNonUniformShuffleXor 35 274 275
277: 77(ptr) AccessChain 27(data) 272 39
Store 277 276
278: 6(int) Load 8(invocation)
279: 103(ptr) AccessChain 27(data) 29 51 30
280: 6(int) Load 279
281: 6(int) Load 8(invocation)
282: 6(int) GroupNonUniformShuffleXor 35 280 281
283: 103(ptr) AccessChain 27(data) 278 51 30
Store 283 282
284: 6(int) Load 8(invocation)
285: 111(ptr) AccessChain 27(data) 39 51
286: 21(ivec4) Load 285
287: 110(ivec2) VectorShuffle 286 286 0 1
288: 6(int) Load 8(invocation)
289: 110(ivec2) GroupNonUniformShuffleXor 35 287 288
290: 111(ptr) AccessChain 27(data) 284 51
291: 21(ivec4) Load 290
292: 21(ivec4) VectorShuffle 291 289 4 5 2 3
Store 290 292
293: 6(int) Load 8(invocation)
294: 111(ptr) AccessChain 27(data) 51 51
295: 21(ivec4) Load 294
296: 121(ivec3) VectorShuffle 295 295 0 1 2
297: 6(int) Load 8(invocation)
298: 121(ivec3) GroupNonUniformShuffleXor 35 296 297
299: 111(ptr) AccessChain 27(data) 293 51
300: 21(ivec4) Load 299
301: 21(ivec4) VectorShuffle 300 298 4 5 6 3
Store 299 301
302: 6(int) Load 8(invocation)
303: 111(ptr) AccessChain 27(data) 62 51
304: 21(ivec4) Load 303
305: 6(int) Load 8(invocation)
306: 21(ivec4) GroupNonUniformShuffleXor 35 304 305
307: 111(ptr) AccessChain 27(data) 302 51
Store 307 306
308: 6(int) Load 8(invocation)
309: 137(ptr) AccessChain 27(data) 29 62 30
310:22(float64_t) Load 309
311: 6(int) Load 8(invocation)
312:22(float64_t) GroupNonUniformShuffleXor 35 310 311
313: 137(ptr) AccessChain 27(data) 308 62 30
Store 313 312
314: 6(int) Load 8(invocation)
315: 145(ptr) AccessChain 27(data) 39 62
316: 23(f64vec4) Load 315
317:144(f64vec2) VectorShuffle 316 316 0 1
318: 6(int) Load 8(invocation)
319:144(f64vec2) GroupNonUniformShuffleXor 35 317 318
320: 145(ptr) AccessChain 27(data) 314 62
321: 23(f64vec4) Load 320
322: 23(f64vec4) VectorShuffle 321 319 4 5 2 3
Store 320 322
323: 6(int) Load 8(invocation)
324: 145(ptr) AccessChain 27(data) 51 62
325: 23(f64vec4) Load 324
326:155(f64vec3) VectorShuffle 325 325 0 1 2
327: 6(int) Load 8(invocation)
328:155(f64vec3) GroupNonUniformShuffleXor 35 326 327
329: 145(ptr) AccessChain 27(data) 323 62
330: 23(f64vec4) Load 329
331: 23(f64vec4) VectorShuffle 330 328 4 5 6 3
Store 329 331
332: 6(int) Load 8(invocation)
333: 145(ptr) AccessChain 27(data) 62 62
334: 23(f64vec4) Load 333
335: 6(int) Load 8(invocation)
336: 23(f64vec4) GroupNonUniformShuffleXor 35 334 335
337: 145(ptr) AccessChain 27(data) 332 62
Store 337 336
338: 6(int) Load 8(invocation)
339: 69(ptr) AccessChain 27(data) 29 39 30
340: 19(int) Load 339
341: 173(bool) SLessThan 340 29
342: 6(int) Load 8(invocation)
343: 173(bool) GroupNonUniformShuffleXor 35 341 342
344: 19(int) Select 343 39 29
345: 69(ptr) AccessChain 27(data) 338 39 30
Store 345 344
346: 6(int) Load 8(invocation)
347: 77(ptr) AccessChain 27(data) 39 39
348: 20(ivec4) Load 347
349: 76(ivec2) VectorShuffle 348 348 0 1
350: 184(bvec2) SLessThan 349 183
351: 6(int) Load 8(invocation)
352: 184(bvec2) GroupNonUniformShuffleXor 35 350 351
353: 76(ivec2) Select 352 188 183
354: 77(ptr) AccessChain 27(data) 346 39
355: 20(ivec4) Load 354
356: 20(ivec4) VectorShuffle 355 353 4 5 2 3
Store 354 356
357: 6(int) Load 8(invocation)
358: 77(ptr) AccessChain 27(data) 39 39
359: 20(ivec4) Load 358
360: 87(ivec3) VectorShuffle 359 359 0 1 2
361: 198(bvec3) SLessThan 360 197
362: 6(int) Load 8(invocation)
363: 198(bvec3) GroupNonUniformShuffleXor 35 361 362
364: 87(ivec3) Select 363 202 197
365: 77(ptr) AccessChain 27(data) 357 39
366: 20(ivec4) Load 365
367: 20(ivec4) VectorShuffle 366 364 4 5 6 3
Store 365 367
368: 6(int) Load 8(invocation)
369: 77(ptr) AccessChain 27(data) 39 39
370: 20(ivec4) Load 369
371: 211(bvec4) SLessThan 370 210
372: 6(int) Load 8(invocation)
373: 211(bvec4) GroupNonUniformShuffleXor 35 371 372
374: 20(ivec4) Select 373 215 210
375: 77(ptr) AccessChain 27(data) 368 39
Store 375 374
Return
FunctionEnd