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

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