Generate separate stores for partially swizzled memory stores

Full vector and fully specified vector swizzle stores are not affected by this change, only partial swizzles ie swizzles with fewer components than the vector being stored to.

Previously the vector being stored to loaded and any components not specified in the swizzle were used to create a full store to the vector.

While this change generates more SPIR-V instructions, it is necessary for correctness.

Fixes #2518.
This commit is contained in:
Jeremy Hayes 2021-07-16 15:07:16 -06:00
parent 9158061398
commit 6d5b40f051
50 changed files with 31343 additions and 26594 deletions

View file

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