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

@ -2323,7 +2323,7 @@ local_size = (32, 16, 1)
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 369
// Id's are bound by 403
Capability Shader
Capability Float64
@ -2332,7 +2332,7 @@ local_size = (32, 16, 1)
Capability GroupNonUniformBallot
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "CSMain" 364
EntryPoint GLCompute 4 "CSMain" 398
ExecutionMode 4 LocalSize 32 16 1
Source HLSL 500
Name 4 "CSMain"
@ -2346,9 +2346,9 @@ local_size = (32, 16, 1)
Name 22 "data"
MemberName 22(data) 0 "@data"
Name 24 "data"
Name 362 "dti"
Name 364 "dti"
Name 366 "param"
Name 396 "dti"
Name 398 "dti"
Name 400 "param"
MemberDecorate 20(Types) 0 Offset 0
MemberDecorate 20(Types) 1 Offset 16
MemberDecorate 20(Types) 2 Offset 32
@ -2358,7 +2358,7 @@ local_size = (32, 16, 1)
Decorate 22(data) BufferBlock
Decorate 24(data) DescriptorSet 0
Decorate 24(data) Binding 0
Decorate 364(dti) BuiltIn GlobalInvocationId
Decorate 398(dti) BuiltIn GlobalInvocationId
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 0
@ -2384,33 +2384,35 @@ local_size = (32, 16, 1)
35: 6(int) Constant 3
42: TypePointer Uniform 6(int)
51: TypeVector 6(int) 2
72: 14(int) Constant 1
75: TypePointer Uniform 15(ivec4)
84: TypePointer Uniform 14(int)
93: TypeVector 14(int) 2
105: TypeVector 14(int) 3
115: 14(int) Constant 2
118: TypePointer Uniform 17(fvec4)
127: TypePointer Uniform 16(float)
136: TypeVector 16(float) 2
148: TypeVector 16(float) 3
158: 14(int) Constant 3
161: TypePointer Uniform 19(f64vec4)
170: TypePointer Uniform 18(float64_t)
179: TypeVector 18(float64_t) 2
191: TypeVector 18(float64_t) 3
357: TypeBool
363: TypePointer Input 7(ivec3)
364(dti): 363(ptr) Variable Input
58: 6(int) Constant 1
73: 6(int) Constant 2
78: 14(int) Constant 1
81: TypePointer Uniform 15(ivec4)
90: TypePointer Uniform 14(int)
99: TypeVector 14(int) 2
112: TypeVector 14(int) 3
125: 14(int) Constant 2
128: TypePointer Uniform 17(fvec4)
137: TypePointer Uniform 16(float)
146: TypeVector 16(float) 2
159: TypeVector 16(float) 3
172: 14(int) Constant 3
175: TypePointer Uniform 19(f64vec4)
184: TypePointer Uniform 18(float64_t)
193: TypeVector 18(float64_t) 2
206: TypeVector 18(float64_t) 3
391: TypeBool
397: TypePointer Input 7(ivec3)
398(dti): 397(ptr) Variable Input
4(CSMain): 2 Function None 3
5: Label
362(dti): 8(ptr) Variable Function
366(param): 8(ptr) Variable Function
365: 7(ivec3) Load 364(dti)
Store 362(dti) 365
367: 7(ivec3) Load 362(dti)
Store 366(param) 367
368: 2 FunctionCall 11(@CSMain(vu3;) 366(param)
396(dti): 8(ptr) Variable Function
400(param): 8(ptr) Variable Function
399: 7(ivec3) Load 398(dti)
Store 396(dti) 399
401: 7(ivec3) Load 396(dti)
Store 400(param) 401
402: 2 FunctionCall 11(@CSMain(vu3;) 400(param)
Return
FunctionEnd
11(@CSMain(vu3;): 2 Function None 9
@ -2442,326 +2444,382 @@ local_size = (32, 16, 1)
53: 13(ivec4) Load 52
54: 51(ivec2) VectorShuffle 53 53 0 1
55: 51(ivec2) GroupNonUniformIAdd 35 InclusiveScan 54
56: 32(ptr) AccessChain 24(data) 25 48 25
57: 13(ivec4) Load 56
58: 13(ivec4) VectorShuffle 57 55 4 5 2 3
Store 56 58
59: 27(ptr) AccessChain 10(dti) 26
60: 6(int) Load 59
56: 42(ptr) AccessChain 24(data) 25 48 25 26
57: 6(int) CompositeExtract 55 0
Store 56 57
59: 42(ptr) AccessChain 24(data) 25 48 25 58
60: 6(int) CompositeExtract 55 1
Store 59 60
61: 27(ptr) AccessChain 10(dti) 26
62: 6(int) Load 61
63: 32(ptr) AccessChain 24(data) 25 62 25
64: 13(ivec4) Load 63
65: 7(ivec3) VectorShuffle 64 64 0 1 2
66: 7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 65
67: 32(ptr) AccessChain 24(data) 25 60 25
68: 13(ivec4) Load 67
69: 13(ivec4) VectorShuffle 68 66 4 5 6 3
Store 67 69
70: 27(ptr) AccessChain 10(dti) 26
71: 6(int) Load 70
73: 27(ptr) AccessChain 10(dti) 26
74: 6(int) Load 73
76: 75(ptr) AccessChain 24(data) 25 74 72
77: 15(ivec4) Load 76
78: 15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 77
79: 75(ptr) AccessChain 24(data) 25 71 72
Store 79 78
80: 27(ptr) AccessChain 10(dti) 26
81: 6(int) Load 80
82: 27(ptr) AccessChain 10(dti) 26
83: 6(int) Load 82
85: 84(ptr) AccessChain 24(data) 25 83 72 26
86: 14(int) Load 85
87: 14(int) GroupNonUniformIAdd 35 InclusiveScan 86
88: 84(ptr) AccessChain 24(data) 25 81 72 26
Store 88 87
89: 27(ptr) AccessChain 10(dti) 26
90: 6(int) Load 89
91: 27(ptr) AccessChain 10(dti) 26
92: 6(int) Load 91
94: 75(ptr) AccessChain 24(data) 25 92 72
95: 15(ivec4) Load 94
96: 93(ivec2) VectorShuffle 95 95 0 1
97: 93(ivec2) GroupNonUniformIAdd 35 InclusiveScan 96
98: 75(ptr) AccessChain 24(data) 25 90 72
99: 15(ivec4) Load 98
100: 15(ivec4) VectorShuffle 99 97 4 5 2 3
Store 98 100
101: 27(ptr) AccessChain 10(dti) 26
102: 6(int) Load 101
103: 27(ptr) AccessChain 10(dti) 26
104: 6(int) Load 103
106: 75(ptr) AccessChain 24(data) 25 104 72
107: 15(ivec4) Load 106
108: 105(ivec3) VectorShuffle 107 107 0 1 2
109: 105(ivec3) GroupNonUniformIAdd 35 InclusiveScan 108
110: 75(ptr) AccessChain 24(data) 25 102 72
111: 15(ivec4) Load 110
112: 15(ivec4) VectorShuffle 111 109 4 5 6 3
Store 110 112
113: 27(ptr) AccessChain 10(dti) 26
114: 6(int) Load 113
116: 27(ptr) AccessChain 10(dti) 26
117: 6(int) Load 116
119: 118(ptr) AccessChain 24(data) 25 117 115
120: 17(fvec4) Load 119
121: 17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 120
122: 118(ptr) AccessChain 24(data) 25 114 115
Store 122 121
63: 27(ptr) AccessChain 10(dti) 26
64: 6(int) Load 63
65: 32(ptr) AccessChain 24(data) 25 64 25
66: 13(ivec4) Load 65
67: 7(ivec3) VectorShuffle 66 66 0 1 2
68: 7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 67
69: 42(ptr) AccessChain 24(data) 25 62 25 26
70: 6(int) CompositeExtract 68 0
Store 69 70
71: 42(ptr) AccessChain 24(data) 25 62 25 58
72: 6(int) CompositeExtract 68 1
Store 71 72
74: 42(ptr) AccessChain 24(data) 25 62 25 73
75: 6(int) CompositeExtract 68 2
Store 74 75
76: 27(ptr) AccessChain 10(dti) 26
77: 6(int) Load 76
79: 27(ptr) AccessChain 10(dti) 26
80: 6(int) Load 79
82: 81(ptr) AccessChain 24(data) 25 80 78
83: 15(ivec4) Load 82
84: 15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 83
85: 81(ptr) AccessChain 24(data) 25 77 78
Store 85 84
86: 27(ptr) AccessChain 10(dti) 26
87: 6(int) Load 86
88: 27(ptr) AccessChain 10(dti) 26
89: 6(int) Load 88
91: 90(ptr) AccessChain 24(data) 25 89 78 26
92: 14(int) Load 91
93: 14(int) GroupNonUniformIAdd 35 InclusiveScan 92
94: 90(ptr) AccessChain 24(data) 25 87 78 26
Store 94 93
95: 27(ptr) AccessChain 10(dti) 26
96: 6(int) Load 95
97: 27(ptr) AccessChain 10(dti) 26
98: 6(int) Load 97
100: 81(ptr) AccessChain 24(data) 25 98 78
101: 15(ivec4) Load 100
102: 99(ivec2) VectorShuffle 101 101 0 1
103: 99(ivec2) GroupNonUniformIAdd 35 InclusiveScan 102
104: 90(ptr) AccessChain 24(data) 25 96 78 26
105: 14(int) CompositeExtract 103 0
Store 104 105
106: 90(ptr) AccessChain 24(data) 25 96 78 58
107: 14(int) CompositeExtract 103 1
Store 106 107
108: 27(ptr) AccessChain 10(dti) 26
109: 6(int) Load 108
110: 27(ptr) AccessChain 10(dti) 26
111: 6(int) Load 110
113: 81(ptr) AccessChain 24(data) 25 111 78
114: 15(ivec4) Load 113
115: 112(ivec3) VectorShuffle 114 114 0 1 2
116: 112(ivec3) GroupNonUniformIAdd 35 InclusiveScan 115
117: 90(ptr) AccessChain 24(data) 25 109 78 26
118: 14(int) CompositeExtract 116 0
Store 117 118
119: 90(ptr) AccessChain 24(data) 25 109 78 58
120: 14(int) CompositeExtract 116 1
Store 119 120
121: 90(ptr) AccessChain 24(data) 25 109 78 73
122: 14(int) CompositeExtract 116 2
Store 121 122
123: 27(ptr) AccessChain 10(dti) 26
124: 6(int) Load 123
125: 27(ptr) AccessChain 10(dti) 26
126: 6(int) Load 125
128: 127(ptr) AccessChain 24(data) 25 126 115 26
129: 16(float) Load 128
130: 16(float) GroupNonUniformFAdd 35 InclusiveScan 129
131: 127(ptr) AccessChain 24(data) 25 124 115 26
Store 131 130
132: 27(ptr) AccessChain 10(dti) 26
133: 6(int) Load 132
134: 27(ptr) AccessChain 10(dti) 26
135: 6(int) Load 134
137: 118(ptr) AccessChain 24(data) 25 135 115
138: 17(fvec4) Load 137
139: 136(fvec2) VectorShuffle 138 138 0 1
140: 136(fvec2) GroupNonUniformFAdd 35 InclusiveScan 139
141: 118(ptr) AccessChain 24(data) 25 133 115
142: 17(fvec4) Load 141
143: 17(fvec4) VectorShuffle 142 140 4 5 2 3
Store 141 143
126: 27(ptr) AccessChain 10(dti) 26
127: 6(int) Load 126
129: 128(ptr) AccessChain 24(data) 25 127 125
130: 17(fvec4) Load 129
131: 17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 130
132: 128(ptr) AccessChain 24(data) 25 124 125
Store 132 131
133: 27(ptr) AccessChain 10(dti) 26
134: 6(int) Load 133
135: 27(ptr) AccessChain 10(dti) 26
136: 6(int) Load 135
138: 137(ptr) AccessChain 24(data) 25 136 125 26
139: 16(float) Load 138
140: 16(float) GroupNonUniformFAdd 35 InclusiveScan 139
141: 137(ptr) AccessChain 24(data) 25 134 125 26
Store 141 140
142: 27(ptr) AccessChain 10(dti) 26
143: 6(int) Load 142
144: 27(ptr) AccessChain 10(dti) 26
145: 6(int) Load 144
146: 27(ptr) AccessChain 10(dti) 26
147: 6(int) Load 146
149: 118(ptr) AccessChain 24(data) 25 147 115
150: 17(fvec4) Load 149
151: 148(fvec3) VectorShuffle 150 150 0 1 2
152: 148(fvec3) GroupNonUniformFAdd 35 InclusiveScan 151
153: 118(ptr) AccessChain 24(data) 25 145 115
154: 17(fvec4) Load 153
155: 17(fvec4) VectorShuffle 154 152 4 5 6 3
Store 153 155
156: 27(ptr) AccessChain 10(dti) 26
157: 6(int) Load 156
159: 27(ptr) AccessChain 10(dti) 26
160: 6(int) Load 159
162: 161(ptr) AccessChain 24(data) 25 160 158
163: 19(f64vec4) Load 162
164: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 163
165: 161(ptr) AccessChain 24(data) 25 157 158
Store 165 164
166: 27(ptr) AccessChain 10(dti) 26
167: 6(int) Load 166
168: 27(ptr) AccessChain 10(dti) 26
169: 6(int) Load 168
171: 170(ptr) AccessChain 24(data) 25 169 158 26
172:18(float64_t) Load 171
173:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 172
174: 170(ptr) AccessChain 24(data) 25 167 158 26
Store 174 173
175: 27(ptr) AccessChain 10(dti) 26
176: 6(int) Load 175
177: 27(ptr) AccessChain 10(dti) 26
178: 6(int) Load 177
180: 161(ptr) AccessChain 24(data) 25 178 158
181: 19(f64vec4) Load 180
182:179(f64vec2) VectorShuffle 181 181 0 1
183:179(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 182
184: 161(ptr) AccessChain 24(data) 25 176 158
185: 19(f64vec4) Load 184
186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
Store 184 186
187: 27(ptr) AccessChain 10(dti) 26
188: 6(int) Load 187
147: 128(ptr) AccessChain 24(data) 25 145 125
148: 17(fvec4) Load 147
149: 146(fvec2) VectorShuffle 148 148 0 1
150: 146(fvec2) GroupNonUniformFAdd 35 InclusiveScan 149
151: 137(ptr) AccessChain 24(data) 25 143 125 26
152: 16(float) CompositeExtract 150 0
Store 151 152
153: 137(ptr) AccessChain 24(data) 25 143 125 58
154: 16(float) CompositeExtract 150 1
Store 153 154
155: 27(ptr) AccessChain 10(dti) 26
156: 6(int) Load 155
157: 27(ptr) AccessChain 10(dti) 26
158: 6(int) Load 157
160: 128(ptr) AccessChain 24(data) 25 158 125
161: 17(fvec4) Load 160
162: 159(fvec3) VectorShuffle 161 161 0 1 2
163: 159(fvec3) GroupNonUniformFAdd 35 InclusiveScan 162
164: 137(ptr) AccessChain 24(data) 25 156 125 26
165: 16(float) CompositeExtract 163 0
Store 164 165
166: 137(ptr) AccessChain 24(data) 25 156 125 58
167: 16(float) CompositeExtract 163 1
Store 166 167
168: 137(ptr) AccessChain 24(data) 25 156 125 73
169: 16(float) CompositeExtract 163 2
Store 168 169
170: 27(ptr) AccessChain 10(dti) 26
171: 6(int) Load 170
173: 27(ptr) AccessChain 10(dti) 26
174: 6(int) Load 173
176: 175(ptr) AccessChain 24(data) 25 174 172
177: 19(f64vec4) Load 176
178: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 177
179: 175(ptr) AccessChain 24(data) 25 171 172
Store 179 178
180: 27(ptr) AccessChain 10(dti) 26
181: 6(int) Load 180
182: 27(ptr) AccessChain 10(dti) 26
183: 6(int) Load 182
185: 184(ptr) AccessChain 24(data) 25 183 172 26
186:18(float64_t) Load 185
187:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 186
188: 184(ptr) AccessChain 24(data) 25 181 172 26
Store 188 187
189: 27(ptr) AccessChain 10(dti) 26
190: 6(int) Load 189
192: 161(ptr) AccessChain 24(data) 25 190 158
193: 19(f64vec4) Load 192
194:191(f64vec3) VectorShuffle 193 193 0 1 2
195:191(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 194
196: 161(ptr) AccessChain 24(data) 25 188 158
197: 19(f64vec4) Load 196
198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
Store 196 198
199: 27(ptr) AccessChain 10(dti) 26
200: 6(int) Load 199
201: 27(ptr) AccessChain 10(dti) 26
202: 6(int) Load 201
203: 32(ptr) AccessChain 24(data) 25 202 25
204: 13(ivec4) Load 203
205: 13(ivec4) GroupNonUniformIMul 35 InclusiveScan 204
206: 32(ptr) AccessChain 24(data) 25 200 25
Store 206 205
207: 27(ptr) AccessChain 10(dti) 26
208: 6(int) Load 207
209: 27(ptr) AccessChain 10(dti) 26
210: 6(int) Load 209
211: 42(ptr) AccessChain 24(data) 25 210 25 26
212: 6(int) Load 211
213: 6(int) GroupNonUniformIMul 35 InclusiveScan 212
214: 42(ptr) AccessChain 24(data) 25 208 25 26
Store 214 213
215: 27(ptr) AccessChain 10(dti) 26
216: 6(int) Load 215
191: 27(ptr) AccessChain 10(dti) 26
192: 6(int) Load 191
194: 175(ptr) AccessChain 24(data) 25 192 172
195: 19(f64vec4) Load 194
196:193(f64vec2) VectorShuffle 195 195 0 1
197:193(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 196
198: 184(ptr) AccessChain 24(data) 25 190 172 26
199:18(float64_t) CompositeExtract 197 0
Store 198 199
200: 184(ptr) AccessChain 24(data) 25 190 172 58
201:18(float64_t) CompositeExtract 197 1
Store 200 201
202: 27(ptr) AccessChain 10(dti) 26
203: 6(int) Load 202
204: 27(ptr) AccessChain 10(dti) 26
205: 6(int) Load 204
207: 175(ptr) AccessChain 24(data) 25 205 172
208: 19(f64vec4) Load 207
209:206(f64vec3) VectorShuffle 208 208 0 1 2
210:206(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 209
211: 184(ptr) AccessChain 24(data) 25 203 172 26
212:18(float64_t) CompositeExtract 210 0
Store 211 212
213: 184(ptr) AccessChain 24(data) 25 203 172 58
214:18(float64_t) CompositeExtract 210 1
Store 213 214
215: 184(ptr) AccessChain 24(data) 25 203 172 73
216:18(float64_t) CompositeExtract 210 2
Store 215 216
217: 27(ptr) AccessChain 10(dti) 26
218: 6(int) Load 217
219: 32(ptr) AccessChain 24(data) 25 218 25
220: 13(ivec4) Load 219
221: 51(ivec2) VectorShuffle 220 220 0 1
222: 51(ivec2) GroupNonUniformIMul 35 InclusiveScan 221
223: 32(ptr) AccessChain 24(data) 25 216 25
224: 13(ivec4) Load 223
225: 13(ivec4) VectorShuffle 224 222 4 5 2 3
Store 223 225
226: 27(ptr) AccessChain 10(dti) 26
227: 6(int) Load 226
228: 27(ptr) AccessChain 10(dti) 26
229: 6(int) Load 228
230: 32(ptr) AccessChain 24(data) 25 229 25
231: 13(ivec4) Load 230
232: 7(ivec3) VectorShuffle 231 231 0 1 2
233: 7(ivec3) GroupNonUniformIMul 35 InclusiveScan 232
234: 32(ptr) AccessChain 24(data) 25 227 25
235: 13(ivec4) Load 234
236: 13(ivec4) VectorShuffle 235 233 4 5 6 3
Store 234 236
237: 27(ptr) AccessChain 10(dti) 26
238: 6(int) Load 237
239: 27(ptr) AccessChain 10(dti) 26
240: 6(int) Load 239
241: 75(ptr) AccessChain 24(data) 25 240 72
242: 15(ivec4) Load 241
243: 15(ivec4) GroupNonUniformIMul 35 InclusiveScan 242
244: 75(ptr) AccessChain 24(data) 25 238 72
Store 244 243
219: 27(ptr) AccessChain 10(dti) 26
220: 6(int) Load 219
221: 32(ptr) AccessChain 24(data) 25 220 25
222: 13(ivec4) Load 221
223: 13(ivec4) GroupNonUniformIMul 35 InclusiveScan 222
224: 32(ptr) AccessChain 24(data) 25 218 25
Store 224 223
225: 27(ptr) AccessChain 10(dti) 26
226: 6(int) Load 225
227: 27(ptr) AccessChain 10(dti) 26
228: 6(int) Load 227
229: 42(ptr) AccessChain 24(data) 25 228 25 26
230: 6(int) Load 229
231: 6(int) GroupNonUniformIMul 35 InclusiveScan 230
232: 42(ptr) AccessChain 24(data) 25 226 25 26
Store 232 231
233: 27(ptr) AccessChain 10(dti) 26
234: 6(int) Load 233
235: 27(ptr) AccessChain 10(dti) 26
236: 6(int) Load 235
237: 32(ptr) AccessChain 24(data) 25 236 25
238: 13(ivec4) Load 237
239: 51(ivec2) VectorShuffle 238 238 0 1
240: 51(ivec2) GroupNonUniformIMul 35 InclusiveScan 239
241: 42(ptr) AccessChain 24(data) 25 234 25 26
242: 6(int) CompositeExtract 240 0
Store 241 242
243: 42(ptr) AccessChain 24(data) 25 234 25 58
244: 6(int) CompositeExtract 240 1
Store 243 244
245: 27(ptr) AccessChain 10(dti) 26
246: 6(int) Load 245
247: 27(ptr) AccessChain 10(dti) 26
248: 6(int) Load 247
249: 84(ptr) AccessChain 24(data) 25 248 72 26
250: 14(int) Load 249
251: 14(int) GroupNonUniformIMul 35 InclusiveScan 250
252: 84(ptr) AccessChain 24(data) 25 246 72 26
Store 252 251
253: 27(ptr) AccessChain 10(dti) 26
254: 6(int) Load 253
255: 27(ptr) AccessChain 10(dti) 26
256: 6(int) Load 255
257: 75(ptr) AccessChain 24(data) 25 256 72
258: 15(ivec4) Load 257
259: 93(ivec2) VectorShuffle 258 258 0 1
260: 93(ivec2) GroupNonUniformIMul 35 InclusiveScan 259
261: 75(ptr) AccessChain 24(data) 25 254 72
262: 15(ivec4) Load 261
263: 15(ivec4) VectorShuffle 262 260 4 5 2 3
Store 261 263
264: 27(ptr) AccessChain 10(dti) 26
265: 6(int) Load 264
266: 27(ptr) AccessChain 10(dti) 26
267: 6(int) Load 266
268: 75(ptr) AccessChain 24(data) 25 267 72
269: 15(ivec4) Load 268
270: 105(ivec3) VectorShuffle 269 269 0 1 2
271: 105(ivec3) GroupNonUniformIMul 35 InclusiveScan 270
272: 75(ptr) AccessChain 24(data) 25 265 72
273: 15(ivec4) Load 272
274: 15(ivec4) VectorShuffle 273 271 4 5 6 3
Store 272 274
249: 32(ptr) AccessChain 24(data) 25 248 25
250: 13(ivec4) Load 249
251: 7(ivec3) VectorShuffle 250 250 0 1 2
252: 7(ivec3) GroupNonUniformIMul 35 InclusiveScan 251
253: 42(ptr) AccessChain 24(data) 25 246 25 26
254: 6(int) CompositeExtract 252 0
Store 253 254
255: 42(ptr) AccessChain 24(data) 25 246 25 58
256: 6(int) CompositeExtract 252 1
Store 255 256
257: 42(ptr) AccessChain 24(data) 25 246 25 73
258: 6(int) CompositeExtract 252 2
Store 257 258
259: 27(ptr) AccessChain 10(dti) 26
260: 6(int) Load 259
261: 27(ptr) AccessChain 10(dti) 26
262: 6(int) Load 261
263: 81(ptr) AccessChain 24(data) 25 262 78
264: 15(ivec4) Load 263
265: 15(ivec4) GroupNonUniformIMul 35 InclusiveScan 264
266: 81(ptr) AccessChain 24(data) 25 260 78
Store 266 265
267: 27(ptr) AccessChain 10(dti) 26
268: 6(int) Load 267
269: 27(ptr) AccessChain 10(dti) 26
270: 6(int) Load 269
271: 90(ptr) AccessChain 24(data) 25 270 78 26
272: 14(int) Load 271
273: 14(int) GroupNonUniformIMul 35 InclusiveScan 272
274: 90(ptr) AccessChain 24(data) 25 268 78 26
Store 274 273
275: 27(ptr) AccessChain 10(dti) 26
276: 6(int) Load 275
277: 27(ptr) AccessChain 10(dti) 26
278: 6(int) Load 277
279: 118(ptr) AccessChain 24(data) 25 278 115
280: 17(fvec4) Load 279
281: 17(fvec4) GroupNonUniformFMul 35 InclusiveScan 280
282: 118(ptr) AccessChain 24(data) 25 276 115
Store 282 281
283: 27(ptr) AccessChain 10(dti) 26
284: 6(int) Load 283
285: 27(ptr) AccessChain 10(dti) 26
286: 6(int) Load 285
287: 127(ptr) AccessChain 24(data) 25 286 115 26
288: 16(float) Load 287
289: 16(float) GroupNonUniformFMul 35 InclusiveScan 288
290: 127(ptr) AccessChain 24(data) 25 284 115 26
Store 290 289
291: 27(ptr) AccessChain 10(dti) 26
292: 6(int) Load 291
293: 27(ptr) AccessChain 10(dti) 26
294: 6(int) Load 293
295: 118(ptr) AccessChain 24(data) 25 294 115
296: 17(fvec4) Load 295
297: 136(fvec2) VectorShuffle 296 296 0 1
298: 136(fvec2) GroupNonUniformFMul 35 InclusiveScan 297
299: 118(ptr) AccessChain 24(data) 25 292 115
300: 17(fvec4) Load 299
301: 17(fvec4) VectorShuffle 300 298 4 5 2 3
Store 299 301
302: 27(ptr) AccessChain 10(dti) 26
303: 6(int) Load 302
304: 27(ptr) AccessChain 10(dti) 26
305: 6(int) Load 304
306: 118(ptr) AccessChain 24(data) 25 305 115
307: 17(fvec4) Load 306
308: 148(fvec3) VectorShuffle 307 307 0 1 2
309: 148(fvec3) GroupNonUniformFMul 35 InclusiveScan 308
310: 118(ptr) AccessChain 24(data) 25 303 115
311: 17(fvec4) Load 310
312: 17(fvec4) VectorShuffle 311 309 4 5 6 3
Store 310 312
313: 27(ptr) AccessChain 10(dti) 26
314: 6(int) Load 313
315: 27(ptr) AccessChain 10(dti) 26
316: 6(int) Load 315
317: 161(ptr) AccessChain 24(data) 25 316 158
318: 19(f64vec4) Load 317
319: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 318
320: 161(ptr) AccessChain 24(data) 25 314 158
Store 320 319
321: 27(ptr) AccessChain 10(dti) 26
322: 6(int) Load 321
323: 27(ptr) AccessChain 10(dti) 26
324: 6(int) Load 323
325: 170(ptr) AccessChain 24(data) 25 324 158 26
326:18(float64_t) Load 325
327:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 326
328: 170(ptr) AccessChain 24(data) 25 322 158 26
Store 328 327
279: 81(ptr) AccessChain 24(data) 25 278 78
280: 15(ivec4) Load 279
281: 99(ivec2) VectorShuffle 280 280 0 1
282: 99(ivec2) GroupNonUniformIMul 35 InclusiveScan 281
283: 90(ptr) AccessChain 24(data) 25 276 78 26
284: 14(int) CompositeExtract 282 0
Store 283 284
285: 90(ptr) AccessChain 24(data) 25 276 78 58
286: 14(int) CompositeExtract 282 1
Store 285 286
287: 27(ptr) AccessChain 10(dti) 26
288: 6(int) Load 287
289: 27(ptr) AccessChain 10(dti) 26
290: 6(int) Load 289
291: 81(ptr) AccessChain 24(data) 25 290 78
292: 15(ivec4) Load 291
293: 112(ivec3) VectorShuffle 292 292 0 1 2
294: 112(ivec3) GroupNonUniformIMul 35 InclusiveScan 293
295: 90(ptr) AccessChain 24(data) 25 288 78 26
296: 14(int) CompositeExtract 294 0
Store 295 296
297: 90(ptr) AccessChain 24(data) 25 288 78 58
298: 14(int) CompositeExtract 294 1
Store 297 298
299: 90(ptr) AccessChain 24(data) 25 288 78 73
300: 14(int) CompositeExtract 294 2
Store 299 300
301: 27(ptr) AccessChain 10(dti) 26
302: 6(int) Load 301
303: 27(ptr) AccessChain 10(dti) 26
304: 6(int) Load 303
305: 128(ptr) AccessChain 24(data) 25 304 125
306: 17(fvec4) Load 305
307: 17(fvec4) GroupNonUniformFMul 35 InclusiveScan 306
308: 128(ptr) AccessChain 24(data) 25 302 125
Store 308 307
309: 27(ptr) AccessChain 10(dti) 26
310: 6(int) Load 309
311: 27(ptr) AccessChain 10(dti) 26
312: 6(int) Load 311
313: 137(ptr) AccessChain 24(data) 25 312 125 26
314: 16(float) Load 313
315: 16(float) GroupNonUniformFMul 35 InclusiveScan 314
316: 137(ptr) AccessChain 24(data) 25 310 125 26
Store 316 315
317: 27(ptr) AccessChain 10(dti) 26
318: 6(int) Load 317
319: 27(ptr) AccessChain 10(dti) 26
320: 6(int) Load 319
321: 128(ptr) AccessChain 24(data) 25 320 125
322: 17(fvec4) Load 321
323: 146(fvec2) VectorShuffle 322 322 0 1
324: 146(fvec2) GroupNonUniformFMul 35 InclusiveScan 323
325: 137(ptr) AccessChain 24(data) 25 318 125 26
326: 16(float) CompositeExtract 324 0
Store 325 326
327: 137(ptr) AccessChain 24(data) 25 318 125 58
328: 16(float) CompositeExtract 324 1
Store 327 328
329: 27(ptr) AccessChain 10(dti) 26
330: 6(int) Load 329
331: 27(ptr) AccessChain 10(dti) 26
332: 6(int) Load 331
333: 161(ptr) AccessChain 24(data) 25 332 158
334: 19(f64vec4) Load 333
335:179(f64vec2) VectorShuffle 334 334 0 1
336:179(f64vec2) GroupNonUniformFMul 35 InclusiveScan 335
337: 161(ptr) AccessChain 24(data) 25 330 158
338: 19(f64vec4) Load 337
339: 19(f64vec4) VectorShuffle 338 336 4 5 2 3
Store 337 339
340: 27(ptr) AccessChain 10(dti) 26
341: 6(int) Load 340
342: 27(ptr) AccessChain 10(dti) 26
343: 6(int) Load 342
344: 161(ptr) AccessChain 24(data) 25 343 158
345: 19(f64vec4) Load 344
346:191(f64vec3) VectorShuffle 345 345 0 1 2
347:191(f64vec3) GroupNonUniformFMul 35 InclusiveScan 346
348: 161(ptr) AccessChain 24(data) 25 341 158
349: 19(f64vec4) Load 348
350: 19(f64vec4) VectorShuffle 349 347 4 5 6 3
Store 348 350
333: 128(ptr) AccessChain 24(data) 25 332 125
334: 17(fvec4) Load 333
335: 159(fvec3) VectorShuffle 334 334 0 1 2
336: 159(fvec3) GroupNonUniformFMul 35 InclusiveScan 335
337: 137(ptr) AccessChain 24(data) 25 330 125 26
338: 16(float) CompositeExtract 336 0
Store 337 338
339: 137(ptr) AccessChain 24(data) 25 330 125 58
340: 16(float) CompositeExtract 336 1
Store 339 340
341: 137(ptr) AccessChain 24(data) 25 330 125 73
342: 16(float) CompositeExtract 336 2
Store 341 342
343: 27(ptr) AccessChain 10(dti) 26
344: 6(int) Load 343
345: 27(ptr) AccessChain 10(dti) 26
346: 6(int) Load 345
347: 175(ptr) AccessChain 24(data) 25 346 172
348: 19(f64vec4) Load 347
349: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 348
350: 175(ptr) AccessChain 24(data) 25 344 172
Store 350 349
351: 27(ptr) AccessChain 10(dti) 26
352: 6(int) Load 351
353: 27(ptr) AccessChain 10(dti) 26
354: 6(int) Load 353
355: 42(ptr) AccessChain 24(data) 25 354 25 26
356: 6(int) Load 355
358: 357(bool) IEqual 356 26
359: 13(ivec4) GroupNonUniformBallot 35 358
360: 6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 359
361: 42(ptr) AccessChain 24(data) 25 352 25 26
Store 361 360
355: 184(ptr) AccessChain 24(data) 25 354 172 26
356:18(float64_t) Load 355
357:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 356
358: 184(ptr) AccessChain 24(data) 25 352 172 26
Store 358 357
359: 27(ptr) AccessChain 10(dti) 26
360: 6(int) Load 359
361: 27(ptr) AccessChain 10(dti) 26
362: 6(int) Load 361
363: 175(ptr) AccessChain 24(data) 25 362 172
364: 19(f64vec4) Load 363
365:193(f64vec2) VectorShuffle 364 364 0 1
366:193(f64vec2) GroupNonUniformFMul 35 InclusiveScan 365
367: 184(ptr) AccessChain 24(data) 25 360 172 26
368:18(float64_t) CompositeExtract 366 0
Store 367 368
369: 184(ptr) AccessChain 24(data) 25 360 172 58
370:18(float64_t) CompositeExtract 366 1
Store 369 370
371: 27(ptr) AccessChain 10(dti) 26
372: 6(int) Load 371
373: 27(ptr) AccessChain 10(dti) 26
374: 6(int) Load 373
375: 175(ptr) AccessChain 24(data) 25 374 172
376: 19(f64vec4) Load 375
377:206(f64vec3) VectorShuffle 376 376 0 1 2
378:206(f64vec3) GroupNonUniformFMul 35 InclusiveScan 377
379: 184(ptr) AccessChain 24(data) 25 372 172 26
380:18(float64_t) CompositeExtract 378 0
Store 379 380
381: 184(ptr) AccessChain 24(data) 25 372 172 58
382:18(float64_t) CompositeExtract 378 1
Store 381 382
383: 184(ptr) AccessChain 24(data) 25 372 172 73
384:18(float64_t) CompositeExtract 378 2
Store 383 384
385: 27(ptr) AccessChain 10(dti) 26
386: 6(int) Load 385
387: 27(ptr) AccessChain 10(dti) 26
388: 6(int) Load 387
389: 42(ptr) AccessChain 24(data) 25 388 25 26
390: 6(int) Load 389
392: 391(bool) IEqual 390 26
393: 13(ivec4) GroupNonUniformBallot 35 392
394: 6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 393
395: 42(ptr) AccessChain 24(data) 25 386 25 26
Store 395 394
Return
FunctionEnd