Allow 8/16-bit integer as array index

Also enable 8/16 bit int capability in SPIR-V in such cases.

Also enable 64 bit capabilities when used in operations.

Fixes #2779
This commit is contained in:
Greg Fischer
2021-10-18 18:28:01 -06:00
parent 6351fcef28
commit 82b2668d58
6 changed files with 988 additions and 924 deletions

View File

@@ -1,7 +1,7 @@
spv.int8.frag
// Module Version 10300
// Generated by (magic number): 8000a
// Id's are bound by 530
// Id's are bound by 544
Capability Shader
Capability Float16
@@ -48,53 +48,55 @@ spv.int8.frag
Name 117 "f64v"
Name 144 "u16v"
Name 174 "bv"
Name 192 "u8v"
Name 197 "i8"
Name 217 "i"
Name 224 "uv"
Name 240 "i16"
Name 276 "b"
Name 338 "i8v"
Name 341 "i8"
Name 351 "u8v"
Name 353 "u8"
Name 423 "i16"
Name 426 "i32"
Name 429 "i8v4"
Name 433 "u16"
Name 434 "u8v2"
Name 437 "u32"
Name 440 "u8v4"
Name 452 "bv"
Name 525 "Block"
MemberName 525(Block) 0 "i8"
MemberName 525(Block) 1 "i8v2"
MemberName 525(Block) 2 "i8v3"
MemberName 525(Block) 3 "i8v4"
MemberName 525(Block) 4 "u8"
MemberName 525(Block) 5 "u8v2"
MemberName 525(Block) 6 "u8v3"
MemberName 525(Block) 7 "u8v4"
Name 527 "block"
Name 528 "si8"
Name 529 "su8"
Name 193 "arr"
Name 201 "u8v"
Name 206 "i8"
Name 226 "i"
Name 233 "uv"
Name 249 "i16"
Name 285 "b"
Name 348 "f"
Name 352 "i8v"
Name 355 "i8"
Name 365 "u8v"
Name 367 "u8"
Name 437 "i16"
Name 440 "i32"
Name 443 "i8v4"
Name 447 "u16"
Name 448 "u8v2"
Name 451 "u32"
Name 454 "u8v4"
Name 466 "bv"
Name 539 "Block"
MemberName 539(Block) 0 "i8"
MemberName 539(Block) 1 "i8v2"
MemberName 539(Block) 2 "i8v3"
MemberName 539(Block) 3 "i8v4"
MemberName 539(Block) 4 "u8"
MemberName 539(Block) 5 "u8v2"
MemberName 539(Block) 6 "u8v3"
MemberName 539(Block) 7 "u8v4"
Name 541 "block"
Name 542 "si8"
Name 543 "su8"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 525(Block) 0 Offset 0
MemberDecorate 525(Block) 1 Offset 2
MemberDecorate 525(Block) 2 Offset 4
MemberDecorate 525(Block) 3 Offset 8
MemberDecorate 525(Block) 4 Offset 12
MemberDecorate 525(Block) 5 Offset 14
MemberDecorate 525(Block) 6 Offset 16
MemberDecorate 525(Block) 7 Offset 20
Decorate 525(Block) Block
Decorate 527(block) DescriptorSet 0
Decorate 527(block) Binding 1
Decorate 528(si8) SpecId 100
Decorate 529(su8) SpecId 101
MemberDecorate 539(Block) 0 Offset 0
MemberDecorate 539(Block) 1 Offset 2
MemberDecorate 539(Block) 2 Offset 4
MemberDecorate 539(Block) 3 Offset 8
MemberDecorate 539(Block) 4 Offset 12
MemberDecorate 539(Block) 5 Offset 14
MemberDecorate 539(Block) 6 Offset 16
MemberDecorate 539(Block) 7 Offset 20
Decorate 539(Block) Block
Decorate 541(block) DescriptorSet 0
Decorate 541(block) Binding 1
Decorate 542(si8) SpecId 100
Decorate 543(su8) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 8 1
@@ -159,36 +161,45 @@ spv.int8.frag
182: 36(int8_t) Constant 1
183: 49(i8vec2) ConstantComposite 181 181
184: 49(i8vec2) ConstantComposite 182 182
190: TypeVector 36(int8_t) 3
191: TypePointer Function 190(i8vec3)
194: TypeVector 14(int8_t) 3
216: TypePointer Function 27(int)
222: TypeVector 17(int) 3
223: TypePointer Function 222(ivec3)
239: TypePointer Function 57(int16_t)
261: 17(int) Constant 1
267: 17(int) Constant 2
275: TypePointer Function 171(bool)
277: 17(int) Constant 0
291: TypePointer Function 17(int)
349: 52(i8vec2) ConstantComposite 21 21
358: 190(i8vec3) ConstantComposite 181 181 181
400: 171(bool) ConstantTrue
407: 171(bool) ConstantFalse
408: 172(bvec2) ConstantComposite 407 407
420: TypeVector 171(bool) 3
421: 420(bvec3) ConstantComposite 407 407 407
427: TypeVector 14(int8_t) 4
428: TypePointer Function 427(i8vec4)
432: TypePointer Function 64(int16_t)
438: TypeVector 36(int8_t) 4
439: TypePointer Function 438(i8vec4)
451: TypePointer Function 420(bvec3)
525(Block): TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4)
526: TypePointer Uniform 525(Block)
527(block): 526(ptr) Variable Uniform
528(si8): 14(int8_t) SpecConstant 4294967286
529(su8): 36(int8_t) SpecConstant 20
190: 17(int) Constant 4
191: TypeArray 108(float) 190
192: TypePointer Function 191
194: 108(float) Constant 1065353216
195: 108(float) Constant 1073741824
196: 108(float) Constant 1077936128
197: 108(float) Constant 1082130432
198: 191 ConstantComposite 194 195 196 197
199: TypeVector 36(int8_t) 3
200: TypePointer Function 199(i8vec3)
203: TypeVector 14(int8_t) 3
225: TypePointer Function 27(int)
231: TypeVector 17(int) 3
232: TypePointer Function 231(ivec3)
248: TypePointer Function 57(int16_t)
270: 17(int) Constant 1
276: 17(int) Constant 2
284: TypePointer Function 171(bool)
286: 17(int) Constant 0
300: TypePointer Function 17(int)
347: TypePointer Function 108(float)
363: 52(i8vec2) ConstantComposite 21 21
372: 199(i8vec3) ConstantComposite 181 181 181
414: 171(bool) ConstantTrue
421: 171(bool) ConstantFalse
422: 172(bvec2) ConstantComposite 421 421
434: TypeVector 171(bool) 3
435: 434(bvec3) ConstantComposite 421 421 421
441: TypeVector 14(int8_t) 4
442: TypePointer Function 441(i8vec4)
446: TypePointer Function 64(int16_t)
452: TypeVector 36(int8_t) 4
453: TypePointer Function 452(i8vec4)
465: TypePointer Function 434(bvec3)
539(Block): TypeStruct 14(int8_t) 52(i8vec2) 203(i8vec3) 441(i8vec4) 36(int8_t) 49(i8vec2) 199(i8vec3) 452(i8vec4)
540: TypePointer Uniform 539(Block)
541(block): 540(ptr) Variable Uniform
542(si8): 14(int8_t) SpecConstant 4294967286
543(su8): 36(int8_t) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
@@ -360,396 +371,403 @@ spv.int8.frag
FunctionEnd
10(operators(): 2 Function None 3
11: Label
192(u8v): 191(ptr) Variable Function
197(i8): 15(ptr) Variable Function
217(i): 216(ptr) Variable Function
224(uv): 223(ptr) Variable Function
240(i16): 239(ptr) Variable Function
276(b): 275(ptr) Variable Function
193: 190(i8vec3) Load 192(u8v)
195: 194(i8vec3) CompositeConstruct 176 176 176
196: 190(i8vec3) IAdd 193 195
Store 192(u8v) 196
198: 14(int8_t) Load 197(i8)
199: 14(int8_t) ISub 198 176
Store 197(i8) 199
200: 14(int8_t) Load 197(i8)
201: 14(int8_t) IAdd 200 176
Store 197(i8) 201
202: 190(i8vec3) Load 192(u8v)
203: 194(i8vec3) CompositeConstruct 176 176 176
204: 190(i8vec3) ISub 202 203
Store 192(u8v) 204
205: 190(i8vec3) Load 192(u8v)
206: 190(i8vec3) Not 205
Store 192(u8v) 206
207: 14(int8_t) Load 197(i8)
Store 197(i8) 207
208: 190(i8vec3) Load 192(u8v)
209: 190(i8vec3) SNegate 208
Store 192(u8v) 209
210: 14(int8_t) Load 197(i8)
211: 14(int8_t) Load 197(i8)
212: 14(int8_t) IAdd 211 210
Store 197(i8) 212
213: 190(i8vec3) Load 192(u8v)
214: 190(i8vec3) Load 192(u8v)
215: 190(i8vec3) ISub 214 213
Store 192(u8v) 215
218: 14(int8_t) Load 197(i8)
219: 27(int) SConvert 218
220: 27(int) Load 217(i)
221: 27(int) IMul 220 219
Store 217(i) 221
225: 190(i8vec3) Load 192(u8v)
226: 222(ivec3) UConvert 225
227: 222(ivec3) Load 224(uv)
228: 222(ivec3) UDiv 227 226
Store 224(uv) 228
229: 14(int8_t) Load 197(i8)
230: 27(int) SConvert 229
231: 17(int) Bitcast 230
232: 222(ivec3) Load 224(uv)
233: 222(ivec3) CompositeConstruct 231 231 231
234: 222(ivec3) UMod 232 233
Store 224(uv) 234
235: 190(i8vec3) Load 192(u8v)
236: 222(ivec3) UConvert 235
237: 222(ivec3) Load 224(uv)
238: 222(ivec3) IAdd 236 237
Store 224(uv) 238
241: 14(int8_t) Load 197(i8)
242: 57(int16_t) SConvert 241
243: 57(int16_t) Load 240(i16)
244: 57(int16_t) ISub 242 243
Store 240(i16) 244
245: 190(i8vec3) Load 192(u8v)
246: 222(ivec3) UConvert 245
247: 222(ivec3) Load 224(uv)
248: 222(ivec3) IMul 246 247
Store 224(uv) 248
249: 14(int8_t) Load 197(i8)
250: 57(int16_t) SConvert 249
251: 57(int16_t) Load 240(i16)
252: 57(int16_t) IMul 250 251
Store 240(i16) 252
253: 14(int8_t) Load 197(i8)
254: 27(int) SConvert 253
255: 27(int) Load 217(i)
256: 27(int) SMod 254 255
Store 217(i) 256
257: 14(int8_t) Load 197(i8)
258: 190(i8vec3) Load 192(u8v)
259: 194(i8vec3) CompositeConstruct 257 257 257
260: 190(i8vec3) ShiftLeftLogical 258 259
Store 192(u8v) 260
262: 37(ptr) AccessChain 192(u8v) 261
263: 36(int8_t) Load 262
264: 14(int8_t) Load 197(i8)
265: 14(int8_t) ShiftRightArithmetic 264 263
Store 197(i8) 265
266: 14(int8_t) Load 197(i8)
268: 37(ptr) AccessChain 192(u8v) 267
269: 36(int8_t) Load 268
270: 14(int8_t) ShiftLeftLogical 266 269
Store 197(i8) 270
271: 190(i8vec3) Load 192(u8v)
272: 14(int8_t) Load 197(i8)
273: 194(i8vec3) CompositeConstruct 272 272 272
274: 190(i8vec3) ShiftLeftLogical 271 273
Store 192(u8v) 274
278: 37(ptr) AccessChain 192(u8v) 277
279: 36(int8_t) Load 278
280: 14(int8_t) Load 197(i8)
281: 36(int8_t) Bitcast 280
282: 171(bool) INotEqual 279 281
Store 276(b) 282
283: 14(int8_t) Load 197(i8)
284: 36(int8_t) Bitcast 283
285: 37(ptr) AccessChain 192(u8v) 277
286: 36(int8_t) Load 285
287: 171(bool) IEqual 284 286
Store 276(b) 287
288: 37(ptr) AccessChain 192(u8v) 277
289: 36(int8_t) Load 288
290: 17(int) UConvert 289
292: 291(ptr) AccessChain 224(uv) 261
293: 17(int) Load 292
294: 171(bool) UGreaterThan 290 293
Store 276(b) 294
295: 14(int8_t) Load 197(i8)
296: 27(int) SConvert 295
297: 27(int) Load 217(i)
298: 171(bool) SLessThan 296 297
Store 276(b) 298
299: 37(ptr) AccessChain 192(u8v) 261
300: 36(int8_t) Load 299
301: 17(int) UConvert 300
302: 291(ptr) AccessChain 224(uv) 277
303: 17(int) Load 302
304: 171(bool) UGreaterThanEqual 301 303
Store 276(b) 304
305: 14(int8_t) Load 197(i8)
306: 27(int) SConvert 305
307: 27(int) Load 217(i)
308: 171(bool) SLessThanEqual 306 307
Store 276(b) 308
309: 14(int8_t) Load 197(i8)
310: 27(int) SConvert 309
311: 17(int) Bitcast 310
312: 222(ivec3) Load 224(uv)
313: 222(ivec3) CompositeConstruct 311 311 311
314: 222(ivec3) BitwiseOr 312 313
Store 224(uv) 314
315: 14(int8_t) Load 197(i8)
316: 27(int) SConvert 315
317: 27(int) Load 217(i)
318: 27(int) BitwiseOr 316 317
Store 217(i) 318
319: 14(int8_t) Load 197(i8)
320: 57(int16_t) SConvert 319
321: 57(int16_t) Load 240(i16)
322: 57(int16_t) BitwiseAnd 321 320
Store 240(i16) 322
323: 190(i8vec3) Load 192(u8v)
324: 222(ivec3) UConvert 323
325: 222(ivec3) Load 224(uv)
326: 222(ivec3) BitwiseAnd 324 325
Store 224(uv) 326
327: 14(int8_t) Load 197(i8)
328: 27(int) SConvert 327
329: 17(int) Bitcast 328
330: 222(ivec3) Load 224(uv)
331: 222(ivec3) CompositeConstruct 329 329 329
332: 222(ivec3) BitwiseXor 330 331
Store 224(uv) 332
333: 190(i8vec3) Load 192(u8v)
334: 14(int8_t) Load 197(i8)
335: 36(int8_t) Bitcast 334
336: 190(i8vec3) CompositeConstruct 335 335 335
337: 190(i8vec3) BitwiseXor 333 336
Store 192(u8v) 337
193(arr): 192(ptr) Variable Function
201(u8v): 200(ptr) Variable Function
206(i8): 15(ptr) Variable Function
226(i): 225(ptr) Variable Function
233(uv): 232(ptr) Variable Function
249(i16): 248(ptr) Variable Function
285(b): 284(ptr) Variable Function
348(f): 347(ptr) Variable Function
Store 193(arr) 198
202: 199(i8vec3) Load 201(u8v)
204: 203(i8vec3) CompositeConstruct 176 176 176
205: 199(i8vec3) IAdd 202 204
Store 201(u8v) 205
207: 14(int8_t) Load 206(i8)
208: 14(int8_t) ISub 207 176
Store 206(i8) 208
209: 14(int8_t) Load 206(i8)
210: 14(int8_t) IAdd 209 176
Store 206(i8) 210
211: 199(i8vec3) Load 201(u8v)
212: 203(i8vec3) CompositeConstruct 176 176 176
213: 199(i8vec3) ISub 211 212
Store 201(u8v) 213
214: 199(i8vec3) Load 201(u8v)
215: 199(i8vec3) Not 214
Store 201(u8v) 215
216: 14(int8_t) Load 206(i8)
Store 206(i8) 216
217: 199(i8vec3) Load 201(u8v)
218: 199(i8vec3) SNegate 217
Store 201(u8v) 218
219: 14(int8_t) Load 206(i8)
220: 14(int8_t) Load 206(i8)
221: 14(int8_t) IAdd 220 219
Store 206(i8) 221
222: 199(i8vec3) Load 201(u8v)
223: 199(i8vec3) Load 201(u8v)
224: 199(i8vec3) ISub 223 222
Store 201(u8v) 224
227: 14(int8_t) Load 206(i8)
228: 27(int) SConvert 227
229: 27(int) Load 226(i)
230: 27(int) IMul 229 228
Store 226(i) 230
234: 199(i8vec3) Load 201(u8v)
235: 231(ivec3) UConvert 234
236: 231(ivec3) Load 233(uv)
237: 231(ivec3) UDiv 236 235
Store 233(uv) 237
238: 14(int8_t) Load 206(i8)
239: 27(int) SConvert 238
240: 17(int) Bitcast 239
241: 231(ivec3) Load 233(uv)
242: 231(ivec3) CompositeConstruct 240 240 240
243: 231(ivec3) UMod 241 242
Store 233(uv) 243
244: 199(i8vec3) Load 201(u8v)
245: 231(ivec3) UConvert 244
246: 231(ivec3) Load 233(uv)
247: 231(ivec3) IAdd 245 246
Store 233(uv) 247
250: 14(int8_t) Load 206(i8)
251: 57(int16_t) SConvert 250
252: 57(int16_t) Load 249(i16)
253: 57(int16_t) ISub 251 252
Store 249(i16) 253
254: 199(i8vec3) Load 201(u8v)
255: 231(ivec3) UConvert 254
256: 231(ivec3) Load 233(uv)
257: 231(ivec3) IMul 255 256
Store 233(uv) 257
258: 14(int8_t) Load 206(i8)
259: 57(int16_t) SConvert 258
260: 57(int16_t) Load 249(i16)
261: 57(int16_t) IMul 259 260
Store 249(i16) 261
262: 14(int8_t) Load 206(i8)
263: 27(int) SConvert 262
264: 27(int) Load 226(i)
265: 27(int) SMod 263 264
Store 226(i) 265
266: 14(int8_t) Load 206(i8)
267: 199(i8vec3) Load 201(u8v)
268: 203(i8vec3) CompositeConstruct 266 266 266
269: 199(i8vec3) ShiftLeftLogical 267 268
Store 201(u8v) 269
271: 37(ptr) AccessChain 201(u8v) 270
272: 36(int8_t) Load 271
273: 14(int8_t) Load 206(i8)
274: 14(int8_t) ShiftRightArithmetic 273 272
Store 206(i8) 274
275: 14(int8_t) Load 206(i8)
277: 37(ptr) AccessChain 201(u8v) 276
278: 36(int8_t) Load 277
279: 14(int8_t) ShiftLeftLogical 275 278
Store 206(i8) 279
280: 199(i8vec3) Load 201(u8v)
281: 14(int8_t) Load 206(i8)
282: 203(i8vec3) CompositeConstruct 281 281 281
283: 199(i8vec3) ShiftLeftLogical 280 282
Store 201(u8v) 283
287: 37(ptr) AccessChain 201(u8v) 286
288: 36(int8_t) Load 287
289: 14(int8_t) Load 206(i8)
290: 36(int8_t) Bitcast 289
291: 171(bool) INotEqual 288 290
Store 285(b) 291
292: 14(int8_t) Load 206(i8)
293: 36(int8_t) Bitcast 292
294: 37(ptr) AccessChain 201(u8v) 286
295: 36(int8_t) Load 294
296: 171(bool) IEqual 293 295
Store 285(b) 296
297: 37(ptr) AccessChain 201(u8v) 286
298: 36(int8_t) Load 297
299: 17(int) UConvert 298
301: 300(ptr) AccessChain 233(uv) 270
302: 17(int) Load 301
303: 171(bool) UGreaterThan 299 302
Store 285(b) 303
304: 14(int8_t) Load 206(i8)
305: 27(int) SConvert 304
306: 27(int) Load 226(i)
307: 171(bool) SLessThan 305 306
Store 285(b) 307
308: 37(ptr) AccessChain 201(u8v) 270
309: 36(int8_t) Load 308
310: 17(int) UConvert 309
311: 300(ptr) AccessChain 233(uv) 286
312: 17(int) Load 311
313: 171(bool) UGreaterThanEqual 310 312
Store 285(b) 313
314: 14(int8_t) Load 206(i8)
315: 27(int) SConvert 314
316: 27(int) Load 226(i)
317: 171(bool) SLessThanEqual 315 316
Store 285(b) 317
318: 14(int8_t) Load 206(i8)
319: 27(int) SConvert 318
320: 17(int) Bitcast 319
321: 231(ivec3) Load 233(uv)
322: 231(ivec3) CompositeConstruct 320 320 320
323: 231(ivec3) BitwiseOr 321 322
Store 233(uv) 323
324: 14(int8_t) Load 206(i8)
325: 27(int) SConvert 324
326: 27(int) Load 226(i)
327: 27(int) BitwiseOr 325 326
Store 226(i) 327
328: 14(int8_t) Load 206(i8)
329: 57(int16_t) SConvert 328
330: 57(int16_t) Load 249(i16)
331: 57(int16_t) BitwiseAnd 330 329
Store 249(i16) 331
332: 199(i8vec3) Load 201(u8v)
333: 231(ivec3) UConvert 332
334: 231(ivec3) Load 233(uv)
335: 231(ivec3) BitwiseAnd 333 334
Store 233(uv) 335
336: 14(int8_t) Load 206(i8)
337: 27(int) SConvert 336
338: 17(int) Bitcast 337
339: 231(ivec3) Load 233(uv)
340: 231(ivec3) CompositeConstruct 338 338 338
341: 231(ivec3) BitwiseXor 339 340
Store 233(uv) 341
342: 199(i8vec3) Load 201(u8v)
343: 14(int8_t) Load 206(i8)
344: 36(int8_t) Bitcast 343
345: 199(i8vec3) CompositeConstruct 344 344 344
346: 199(i8vec3) BitwiseXor 342 345
Store 201(u8v) 346
349: 14(int8_t) Load 206(i8)
350: 347(ptr) AccessChain 193(arr) 349
351: 108(float) Load 350
Store 348(f) 351
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
338(i8v): 53(ptr) Variable Function
341(i8): 15(ptr) Variable Function
351(u8v): 191(ptr) Variable Function
353(u8): 37(ptr) Variable Function
423(i16): 239(ptr) Variable Function
426(i32): 216(ptr) Variable Function
429(i8v4): 428(ptr) Variable Function
433(u16): 432(ptr) Variable Function
434(u8v2): 50(ptr) Variable Function
437(u32): 291(ptr) Variable Function
440(u8v4): 439(ptr) Variable Function
452(bv): 451(ptr) Variable Function
339: 52(i8vec2) Load 338(i8v)
340: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 339
Store 338(i8v) 340
342: 14(int8_t) Load 341(i8)
343: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 342
Store 341(i8) 343
344: 52(i8vec2) Load 338(i8v)
345: 14(int8_t) Load 341(i8)
346: 52(i8vec2) CompositeConstruct 345 345
347: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 344 346
Store 338(i8v) 347
348: 52(i8vec2) Load 338(i8v)
350: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 348 349
Store 338(i8v) 350
352: 190(i8vec3) Load 351(u8v)
354: 36(int8_t) Load 353(u8)
355: 190(i8vec3) CompositeConstruct 354 354 354
356: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 352 355
Store 351(u8v) 356
357: 190(i8vec3) Load 351(u8v)
359: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 358
Store 351(u8v) 359
360: 52(i8vec2) Load 338(i8v)
361: 14(int8_t) Load 341(i8)
362: 52(i8vec2) CompositeConstruct 361 361
363: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 360 362
Store 338(i8v) 363
364: 52(i8vec2) Load 338(i8v)
365: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 349
Store 338(i8v) 365
366: 190(i8vec3) Load 351(u8v)
367: 36(int8_t) Load 353(u8)
368: 190(i8vec3) CompositeConstruct 367 367 367
369: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 366 368
Store 351(u8v) 369
370: 190(i8vec3) Load 351(u8v)
371: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 370 358
Store 351(u8v) 371
372: 52(i8vec2) Load 338(i8v)
373: 14(int8_t) Load 341(i8)
374: 14(int8_t) SNegate 373
375: 14(int8_t) Load 341(i8)
376: 52(i8vec2) CompositeConstruct 374 374
377: 52(i8vec2) CompositeConstruct 375 375
378: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 372 376 377
Store 338(i8v) 378
379: 52(i8vec2) Load 338(i8v)
380: 52(i8vec2) Load 338(i8v)
381: 52(i8vec2) SNegate 380
382: 52(i8vec2) Load 338(i8v)
383: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 381 382
Store 338(i8v) 383
384: 190(i8vec3) Load 351(u8v)
385: 36(int8_t) Load 353(u8)
386: 36(int8_t) SNegate 385
387: 36(int8_t) Load 353(u8)
388: 190(i8vec3) CompositeConstruct 386 386 386
389: 190(i8vec3) CompositeConstruct 387 387 387
390: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 384 388 389
Store 351(u8v) 390
391: 190(i8vec3) Load 351(u8v)
392: 190(i8vec3) Load 351(u8v)
393: 190(i8vec3) SNegate 392
394: 190(i8vec3) Load 351(u8v)
395: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 393 394
Store 351(u8v) 395
396: 15(ptr) AccessChain 338(i8v) 277
397: 14(int8_t) Load 396
398: 15(ptr) AccessChain 338(i8v) 261
399: 14(int8_t) Load 398
401: 14(int8_t) Select 400 399 397
Store 341(i8) 401
402: 14(int8_t) Load 341(i8)
403: 52(i8vec2) CompositeConstruct 402 402
404: 14(int8_t) Load 341(i8)
405: 14(int8_t) SNegate 404
406: 52(i8vec2) CompositeConstruct 405 405
409: 52(i8vec2) Select 408 406 403
Store 338(i8v) 409
410: 37(ptr) AccessChain 351(u8v) 277
411: 36(int8_t) Load 410
412: 37(ptr) AccessChain 351(u8v) 261
413: 36(int8_t) Load 412
414: 36(int8_t) Select 400 413 411
Store 353(u8) 414
415: 36(int8_t) Load 353(u8)
416: 190(i8vec3) CompositeConstruct 415 415 415
417: 36(int8_t) Load 353(u8)
418: 36(int8_t) SNegate 417
419: 190(i8vec3) CompositeConstruct 418 418 418
422: 190(i8vec3) Select 421 419 416
Store 351(u8v) 422
424: 52(i8vec2) Load 338(i8v)
425: 57(int16_t) Bitcast 424
Store 423(i16) 425
430: 427(i8vec4) Load 429(i8v4)
431: 27(int) Bitcast 430
Store 426(i32) 431
435: 49(i8vec2) Load 434(u8v2)
436: 64(int16_t) Bitcast 435
Store 433(u16) 436
441: 438(i8vec4) Load 440(u8v4)
442: 17(int) Bitcast 441
Store 437(u32) 442
443: 57(int16_t) Load 423(i16)
444: 52(i8vec2) Bitcast 443
Store 338(i8v) 444
445: 27(int) Load 426(i32)
446: 427(i8vec4) Bitcast 445
Store 429(i8v4) 446
447: 64(int16_t) Load 433(u16)
448: 49(i8vec2) Bitcast 447
Store 434(u8v2) 448
449: 17(int) Load 437(u32)
450: 438(i8vec4) Bitcast 449
Store 440(u8v4) 450
453: 190(i8vec3) Load 351(u8v)
454: 36(int8_t) Load 353(u8)
455: 190(i8vec3) CompositeConstruct 454 454 454
456: 420(bvec3) ULessThan 453 455
Store 452(bv) 456
457: 52(i8vec2) Load 338(i8v)
458: 14(int8_t) Load 341(i8)
459: 52(i8vec2) CompositeConstruct 458 458
460: 172(bvec2) SLessThan 457 459
461: 275(ptr) AccessChain 452(bv) 277
462: 171(bool) CompositeExtract 460 0
Store 461 462
463: 275(ptr) AccessChain 452(bv) 261
464: 171(bool) CompositeExtract 460 1
Store 463 464
465: 190(i8vec3) Load 351(u8v)
466: 36(int8_t) Load 353(u8)
467: 190(i8vec3) CompositeConstruct 466 466 466
468: 420(bvec3) ULessThanEqual 465 467
Store 452(bv) 468
469: 52(i8vec2) Load 338(i8v)
470: 14(int8_t) Load 341(i8)
471: 52(i8vec2) CompositeConstruct 470 470
472: 172(bvec2) SLessThanEqual 469 471
473: 275(ptr) AccessChain 452(bv) 277
474: 171(bool) CompositeExtract 472 0
Store 473 474
475: 275(ptr) AccessChain 452(bv) 261
476: 171(bool) CompositeExtract 472 1
352(i8v): 53(ptr) Variable Function
355(i8): 15(ptr) Variable Function
365(u8v): 200(ptr) Variable Function
367(u8): 37(ptr) Variable Function
437(i16): 248(ptr) Variable Function
440(i32): 225(ptr) Variable Function
443(i8v4): 442(ptr) Variable Function
447(u16): 446(ptr) Variable Function
448(u8v2): 50(ptr) Variable Function
451(u32): 300(ptr) Variable Function
454(u8v4): 453(ptr) Variable Function
466(bv): 465(ptr) Variable Function
353: 52(i8vec2) Load 352(i8v)
354: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 353
Store 352(i8v) 354
356: 14(int8_t) Load 355(i8)
357: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 356
Store 355(i8) 357
358: 52(i8vec2) Load 352(i8v)
359: 14(int8_t) Load 355(i8)
360: 52(i8vec2) CompositeConstruct 359 359
361: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 358 360
Store 352(i8v) 361
362: 52(i8vec2) Load 352(i8v)
364: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 362 363
Store 352(i8v) 364
366: 199(i8vec3) Load 365(u8v)
368: 36(int8_t) Load 367(u8)
369: 199(i8vec3) CompositeConstruct 368 368 368
370: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 366 369
Store 365(u8v) 370
371: 199(i8vec3) Load 365(u8v)
373: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 372
Store 365(u8v) 373
374: 52(i8vec2) Load 352(i8v)
375: 14(int8_t) Load 355(i8)
376: 52(i8vec2) CompositeConstruct 375 375
377: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 374 376
Store 352(i8v) 377
378: 52(i8vec2) Load 352(i8v)
379: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 378 363
Store 352(i8v) 379
380: 199(i8vec3) Load 365(u8v)
381: 36(int8_t) Load 367(u8)
382: 199(i8vec3) CompositeConstruct 381 381 381
383: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 380 382
Store 365(u8v) 383
384: 199(i8vec3) Load 365(u8v)
385: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 384 372
Store 365(u8v) 385
386: 52(i8vec2) Load 352(i8v)
387: 14(int8_t) Load 355(i8)
388: 14(int8_t) SNegate 387
389: 14(int8_t) Load 355(i8)
390: 52(i8vec2) CompositeConstruct 388 388
391: 52(i8vec2) CompositeConstruct 389 389
392: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 390 391
Store 352(i8v) 392
393: 52(i8vec2) Load 352(i8v)
394: 52(i8vec2) Load 352(i8v)
395: 52(i8vec2) SNegate 394
396: 52(i8vec2) Load 352(i8v)
397: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 393 395 396
Store 352(i8v) 397
398: 199(i8vec3) Load 365(u8v)
399: 36(int8_t) Load 367(u8)
400: 36(int8_t) SNegate 399
401: 36(int8_t) Load 367(u8)
402: 199(i8vec3) CompositeConstruct 400 400 400
403: 199(i8vec3) CompositeConstruct 401 401 401
404: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 402 403
Store 365(u8v) 404
405: 199(i8vec3) Load 365(u8v)
406: 199(i8vec3) Load 365(u8v)
407: 199(i8vec3) SNegate 406
408: 199(i8vec3) Load 365(u8v)
409: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 405 407 408
Store 365(u8v) 409
410: 15(ptr) AccessChain 352(i8v) 286
411: 14(int8_t) Load 410
412: 15(ptr) AccessChain 352(i8v) 270
413: 14(int8_t) Load 412
415: 14(int8_t) Select 414 413 411
Store 355(i8) 415
416: 14(int8_t) Load 355(i8)
417: 52(i8vec2) CompositeConstruct 416 416
418: 14(int8_t) Load 355(i8)
419: 14(int8_t) SNegate 418
420: 52(i8vec2) CompositeConstruct 419 419
423: 52(i8vec2) Select 422 420 417
Store 352(i8v) 423
424: 37(ptr) AccessChain 365(u8v) 286
425: 36(int8_t) Load 424
426: 37(ptr) AccessChain 365(u8v) 270
427: 36(int8_t) Load 426
428: 36(int8_t) Select 414 427 425
Store 367(u8) 428
429: 36(int8_t) Load 367(u8)
430: 199(i8vec3) CompositeConstruct 429 429 429
431: 36(int8_t) Load 367(u8)
432: 36(int8_t) SNegate 431
433: 199(i8vec3) CompositeConstruct 432 432 432
436: 199(i8vec3) Select 435 433 430
Store 365(u8v) 436
438: 52(i8vec2) Load 352(i8v)
439: 57(int16_t) Bitcast 438
Store 437(i16) 439
444: 441(i8vec4) Load 443(i8v4)
445: 27(int) Bitcast 444
Store 440(i32) 445
449: 49(i8vec2) Load 448(u8v2)
450: 64(int16_t) Bitcast 449
Store 447(u16) 450
455: 452(i8vec4) Load 454(u8v4)
456: 17(int) Bitcast 455
Store 451(u32) 456
457: 57(int16_t) Load 437(i16)
458: 52(i8vec2) Bitcast 457
Store 352(i8v) 458
459: 27(int) Load 440(i32)
460: 441(i8vec4) Bitcast 459
Store 443(i8v4) 460
461: 64(int16_t) Load 447(u16)
462: 49(i8vec2) Bitcast 461
Store 448(u8v2) 462
463: 17(int) Load 451(u32)
464: 452(i8vec4) Bitcast 463
Store 454(u8v4) 464
467: 199(i8vec3) Load 365(u8v)
468: 36(int8_t) Load 367(u8)
469: 199(i8vec3) CompositeConstruct 468 468 468
470: 434(bvec3) ULessThan 467 469
Store 466(bv) 470
471: 52(i8vec2) Load 352(i8v)
472: 14(int8_t) Load 355(i8)
473: 52(i8vec2) CompositeConstruct 472 472
474: 172(bvec2) SLessThan 471 473
475: 284(ptr) AccessChain 466(bv) 286
476: 171(bool) CompositeExtract 474 0
Store 475 476
477: 190(i8vec3) Load 351(u8v)
478: 36(int8_t) Load 353(u8)
479: 190(i8vec3) CompositeConstruct 478 478 478
480: 420(bvec3) UGreaterThan 477 479
Store 452(bv) 480
481: 52(i8vec2) Load 338(i8v)
482: 14(int8_t) Load 341(i8)
483: 52(i8vec2) CompositeConstruct 482 482
484: 172(bvec2) SGreaterThan 481 483
485: 275(ptr) AccessChain 452(bv) 277
486: 171(bool) CompositeExtract 484 0
Store 485 486
487: 275(ptr) AccessChain 452(bv) 261
488: 171(bool) CompositeExtract 484 1
477: 284(ptr) AccessChain 466(bv) 270
478: 171(bool) CompositeExtract 474 1
Store 477 478
479: 199(i8vec3) Load 365(u8v)
480: 36(int8_t) Load 367(u8)
481: 199(i8vec3) CompositeConstruct 480 480 480
482: 434(bvec3) ULessThanEqual 479 481
Store 466(bv) 482
483: 52(i8vec2) Load 352(i8v)
484: 14(int8_t) Load 355(i8)
485: 52(i8vec2) CompositeConstruct 484 484
486: 172(bvec2) SLessThanEqual 483 485
487: 284(ptr) AccessChain 466(bv) 286
488: 171(bool) CompositeExtract 486 0
Store 487 488
489: 190(i8vec3) Load 351(u8v)
490: 36(int8_t) Load 353(u8)
491: 190(i8vec3) CompositeConstruct 490 490 490
492: 420(bvec3) UGreaterThanEqual 489 491
Store 452(bv) 492
493: 52(i8vec2) Load 338(i8v)
494: 14(int8_t) Load 341(i8)
495: 52(i8vec2) CompositeConstruct 494 494
496: 172(bvec2) SGreaterThanEqual 493 495
497: 275(ptr) AccessChain 452(bv) 277
498: 171(bool) CompositeExtract 496 0
Store 497 498
499: 275(ptr) AccessChain 452(bv) 261
500: 171(bool) CompositeExtract 496 1
489: 284(ptr) AccessChain 466(bv) 270
490: 171(bool) CompositeExtract 486 1
Store 489 490
491: 199(i8vec3) Load 365(u8v)
492: 36(int8_t) Load 367(u8)
493: 199(i8vec3) CompositeConstruct 492 492 492
494: 434(bvec3) UGreaterThan 491 493
Store 466(bv) 494
495: 52(i8vec2) Load 352(i8v)
496: 14(int8_t) Load 355(i8)
497: 52(i8vec2) CompositeConstruct 496 496
498: 172(bvec2) SGreaterThan 495 497
499: 284(ptr) AccessChain 466(bv) 286
500: 171(bool) CompositeExtract 498 0
Store 499 500
501: 190(i8vec3) Load 351(u8v)
502: 36(int8_t) Load 353(u8)
503: 190(i8vec3) CompositeConstruct 502 502 502
504: 420(bvec3) IEqual 501 503
Store 452(bv) 504
505: 52(i8vec2) Load 338(i8v)
506: 14(int8_t) Load 341(i8)
507: 52(i8vec2) CompositeConstruct 506 506
508: 172(bvec2) IEqual 505 507
509: 275(ptr) AccessChain 452(bv) 277
510: 171(bool) CompositeExtract 508 0
Store 509 510
511: 275(ptr) AccessChain 452(bv) 261
512: 171(bool) CompositeExtract 508 1
501: 284(ptr) AccessChain 466(bv) 270
502: 171(bool) CompositeExtract 498 1
Store 501 502
503: 199(i8vec3) Load 365(u8v)
504: 36(int8_t) Load 367(u8)
505: 199(i8vec3) CompositeConstruct 504 504 504
506: 434(bvec3) UGreaterThanEqual 503 505
Store 466(bv) 506
507: 52(i8vec2) Load 352(i8v)
508: 14(int8_t) Load 355(i8)
509: 52(i8vec2) CompositeConstruct 508 508
510: 172(bvec2) SGreaterThanEqual 507 509
511: 284(ptr) AccessChain 466(bv) 286
512: 171(bool) CompositeExtract 510 0
Store 511 512
513: 190(i8vec3) Load 351(u8v)
514: 36(int8_t) Load 353(u8)
515: 190(i8vec3) CompositeConstruct 514 514 514
516: 420(bvec3) INotEqual 513 515
Store 452(bv) 516
517: 52(i8vec2) Load 338(i8v)
518: 14(int8_t) Load 341(i8)
519: 52(i8vec2) CompositeConstruct 518 518
520: 172(bvec2) INotEqual 517 519
521: 275(ptr) AccessChain 452(bv) 277
522: 171(bool) CompositeExtract 520 0
Store 521 522
523: 275(ptr) AccessChain 452(bv) 261
524: 171(bool) CompositeExtract 520 1
513: 284(ptr) AccessChain 466(bv) 270
514: 171(bool) CompositeExtract 510 1
Store 513 514
515: 199(i8vec3) Load 365(u8v)
516: 36(int8_t) Load 367(u8)
517: 199(i8vec3) CompositeConstruct 516 516 516
518: 434(bvec3) IEqual 515 517
Store 466(bv) 518
519: 52(i8vec2) Load 352(i8v)
520: 14(int8_t) Load 355(i8)
521: 52(i8vec2) CompositeConstruct 520 520
522: 172(bvec2) IEqual 519 521
523: 284(ptr) AccessChain 466(bv) 286
524: 171(bool) CompositeExtract 522 0
Store 523 524
525: 284(ptr) AccessChain 466(bv) 270
526: 171(bool) CompositeExtract 522 1
Store 525 526
527: 199(i8vec3) Load 365(u8v)
528: 36(int8_t) Load 367(u8)
529: 199(i8vec3) CompositeConstruct 528 528 528
530: 434(bvec3) INotEqual 527 529
Store 466(bv) 530
531: 52(i8vec2) Load 352(i8v)
532: 14(int8_t) Load 355(i8)
533: 52(i8vec2) CompositeConstruct 532 532
534: 172(bvec2) INotEqual 531 533
535: 284(ptr) AccessChain 466(bv) 286
536: 171(bool) CompositeExtract 534 0
Store 535 536
537: 284(ptr) AccessChain 466(bv) 270
538: 171(bool) CompositeExtract 534 1
Store 537 538
Return
FunctionEnd