AST: Fix shift conversions, which don't require matching types.

The base and shift amount need to be integers, but not of the same type.
This fixes #1296 and replaces #1297.
This commit is contained in:
John Kessenich 2018-03-15 21:07:35 -06:00
parent 6e899be5ec
commit 647fccaf2f
9 changed files with 1475 additions and 1413 deletions

View file

@ -1,7 +1,7 @@
spv.int32.frag
// Module Version 10300
// Generated by (magic number): 80006
// Id's are bound by 495
// Id's are bound by 493
Capability Shader
Capability Float16
@ -52,54 +52,54 @@ spv.int32.frag
Name 210 "i"
Name 214 "uv"
Name 227 "i64"
Name 262 "b"
Name 314 "i32v"
Name 317 "i32"
Name 327 "u32v"
Name 329 "u32"
Name 401 "i8v4"
Name 404 "i16v2"
Name 409 "u8v4"
Name 412 "u16v2"
Name 415 "i64"
Name 418 "u32v2"
Name 420 "u64"
Name 424 "bv"
Name 487 "Block"
MemberName 487(Block) 0 "i32"
MemberName 487(Block) 1 "i32v2"
MemberName 487(Block) 2 "i32v3"
MemberName 487(Block) 3 "i32v4"
MemberName 487(Block) 4 "u32"
MemberName 487(Block) 5 "u32v2"
MemberName 487(Block) 6 "u32v3"
MemberName 487(Block) 7 "u32v4"
Name 489 "block"
Name 490 "si32"
Name 491 "su32"
Name 492 "si"
Name 493 "su"
Name 494 "sb"
Name 260 "b"
Name 312 "i32v"
Name 315 "i32"
Name 325 "u32v"
Name 327 "u32"
Name 399 "i8v4"
Name 402 "i16v2"
Name 407 "u8v4"
Name 410 "u16v2"
Name 413 "i64"
Name 416 "u32v2"
Name 418 "u64"
Name 422 "bv"
Name 485 "Block"
MemberName 485(Block) 0 "i32"
MemberName 485(Block) 1 "i32v2"
MemberName 485(Block) 2 "i32v3"
MemberName 485(Block) 3 "i32v4"
MemberName 485(Block) 4 "u32"
MemberName 485(Block) 5 "u32v2"
MemberName 485(Block) 6 "u32v3"
MemberName 485(Block) 7 "u32v4"
Name 487 "block"
Name 488 "si32"
Name 489 "su32"
Name 490 "si"
Name 491 "su"
Name 492 "sb"
MemberDecorate 27(Uniforms) 0 Offset 0
Decorate 27(Uniforms) Block
Decorate 29 DescriptorSet 0
Decorate 29 Binding 0
MemberDecorate 487(Block) 0 Offset 0
MemberDecorate 487(Block) 1 Offset 8
MemberDecorate 487(Block) 2 Offset 16
MemberDecorate 487(Block) 3 Offset 32
MemberDecorate 487(Block) 4 Offset 48
MemberDecorate 487(Block) 5 Offset 56
MemberDecorate 487(Block) 6 Offset 64
MemberDecorate 487(Block) 7 Offset 80
Decorate 487(Block) Block
Decorate 489(block) DescriptorSet 0
Decorate 489(block) Binding 1
Decorate 490(si32) SpecId 100
Decorate 491(su32) SpecId 101
Decorate 492(si) SpecId 102
Decorate 493(su) SpecId 103
Decorate 494(sb) SpecId 104
MemberDecorate 485(Block) 0 Offset 0
MemberDecorate 485(Block) 1 Offset 8
MemberDecorate 485(Block) 2 Offset 16
MemberDecorate 485(Block) 3 Offset 32
MemberDecorate 485(Block) 4 Offset 48
MemberDecorate 485(Block) 5 Offset 56
MemberDecorate 485(Block) 6 Offset 64
MemberDecorate 485(Block) 7 Offset 80
Decorate 485(Block) Block
Decorate 487(block) DescriptorSet 0
Decorate 487(block) Binding 1
Decorate 488(si32) SpecId 100
Decorate 489(su32) SpecId 101
Decorate 490(si) SpecId 102
Decorate 491(su) SpecId 103
Decorate 492(sb) SpecId 104
2: TypeVoid
3: TypeFunction 2
14: TypeInt 32 0
@ -171,30 +171,30 @@ spv.int32.frag
188: TypeVector 18(int) 3
226: TypePointer Function 57(int)
251: 14(int) Constant 2
261: TypePointer Function 165(bool)
325: 52(ivec2) ConstantComposite 24 24
334: 184(ivec3) ConstantComposite 175 175 175
376: 165(bool) ConstantTrue
383: 165(bool) ConstantFalse
384: 166(bvec2) ConstantComposite 383 383
396: TypeVector 165(bool) 3
397: 396(bvec3) ConstantComposite 383 383 383
399: TypeVector 91(int) 4
400: TypePointer Function 399(ivec4)
407: TypeVector 120(int) 4
408: TypePointer Function 407(ivec4)
419: TypePointer Function 63(int)
423: TypePointer Function 396(bvec3)
485: TypeVector 18(int) 4
486: TypeVector 14(int) 4
487(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 485(ivec4) 14(int) 49(ivec2) 184(ivec3) 486(ivec4)
488: TypePointer Uniform 487(Block)
489(block): 488(ptr) Variable Uniform
490(si32): 18(int) SpecConstant 4294967286
491(su32): 14(int) SpecConstant 20
492(si): 18(int) SpecConstant 4294967291
493(su): 14(int) SpecConstant 4
494(sb): 165(bool) SpecConstantTrue
259: TypePointer Function 165(bool)
323: 52(ivec2) ConstantComposite 24 24
332: 184(ivec3) ConstantComposite 175 175 175
374: 165(bool) ConstantTrue
381: 165(bool) ConstantFalse
382: 166(bvec2) ConstantComposite 381 381
394: TypeVector 165(bool) 3
395: 394(bvec3) ConstantComposite 381 381 381
397: TypeVector 91(int) 4
398: TypePointer Function 397(ivec4)
405: TypeVector 120(int) 4
406: TypePointer Function 405(ivec4)
417: TypePointer Function 63(int)
421: TypePointer Function 394(bvec3)
483: TypeVector 18(int) 4
484: TypeVector 14(int) 4
485(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 483(ivec4) 14(int) 49(ivec2) 184(ivec3) 484(ivec4)
486: TypePointer Uniform 485(Block)
487(block): 486(ptr) Variable Uniform
488(si32): 18(int) SpecConstant 4294967286
489(su32): 14(int) SpecConstant 20
490(si): 18(int) SpecConstant 4294967291
491(su): 14(int) SpecConstant 4
492(sb): 165(bool) SpecConstantTrue
4(main): 2 Function None 3
5: Label
Store 16(u32Max) 17
@ -360,7 +360,7 @@ spv.int32.frag
210(i): 19(ptr) Variable Function
214(uv): 185(ptr) Variable Function
227(i64): 226(ptr) Variable Function
262(b): 261(ptr) Variable Function
260(b): 259(ptr) Variable Function
187: 184(ivec3) Load 186(u32v)
189: 188(ivec3) CompositeConstruct 170 170 170
190: 184(ivec3) IAdd 187 189
@ -440,275 +440,273 @@ spv.int32.frag
250: 57(int) Load 227(i64)
252: 38(ptr) AccessChain 186(u32v) 251
253: 14(int) Load 252
254: 57(int) UConvert 253
255: 57(int) Bitcast 254
256: 57(int) ShiftLeftLogical 250 255
Store 227(i64) 256
257: 184(ivec3) Load 186(u32v)
258: 18(int) Load 210(i)
259: 188(ivec3) CompositeConstruct 258 258 258
260: 184(ivec3) ShiftLeftLogical 257 259
Store 214(uv) 260
263: 38(ptr) AccessChain 186(u32v) 175
264: 14(int) Load 263
265: 18(int) Load 191(i32)
266: 14(int) Bitcast 265
267: 165(bool) INotEqual 264 266
Store 262(b) 267
268: 18(int) Load 191(i32)
269: 14(int) Bitcast 268
270: 38(ptr) AccessChain 186(u32v) 175
271: 14(int) Load 270
272: 165(bool) IEqual 269 271
Store 262(b) 272
273: 38(ptr) AccessChain 186(u32v) 175
254: 57(int) ShiftLeftLogical 250 253
Store 227(i64) 254
255: 184(ivec3) Load 186(u32v)
256: 18(int) Load 210(i)
257: 188(ivec3) CompositeConstruct 256 256 256
258: 184(ivec3) ShiftLeftLogical 255 257
Store 214(uv) 258
261: 38(ptr) AccessChain 186(u32v) 175
262: 14(int) Load 261
263: 18(int) Load 191(i32)
264: 14(int) Bitcast 263
265: 165(bool) INotEqual 262 264
Store 260(b) 265
266: 18(int) Load 191(i32)
267: 14(int) Bitcast 266
268: 38(ptr) AccessChain 186(u32v) 175
269: 14(int) Load 268
270: 165(bool) IEqual 267 269
Store 260(b) 270
271: 38(ptr) AccessChain 186(u32v) 175
272: 14(int) Load 271
273: 38(ptr) AccessChain 214(uv) 176
274: 14(int) Load 273
275: 38(ptr) AccessChain 214(uv) 176
276: 14(int) Load 275
277: 165(bool) UGreaterThan 274 276
Store 262(b) 277
278: 18(int) Load 191(i32)
279: 18(int) Load 210(i)
280: 165(bool) SLessThan 278 279
Store 262(b) 280
281: 38(ptr) AccessChain 186(u32v) 176
275: 165(bool) UGreaterThan 272 274
Store 260(b) 275
276: 18(int) Load 191(i32)
277: 18(int) Load 210(i)
278: 165(bool) SLessThan 276 277
Store 260(b) 278
279: 38(ptr) AccessChain 186(u32v) 176
280: 14(int) Load 279
281: 38(ptr) AccessChain 214(uv) 175
282: 14(int) Load 281
283: 38(ptr) AccessChain 214(uv) 175
284: 14(int) Load 283
285: 165(bool) UGreaterThanEqual 282 284
Store 262(b) 285
286: 18(int) Load 191(i32)
287: 18(int) Load 210(i)
288: 165(bool) SLessThanEqual 286 287
Store 262(b) 288
289: 18(int) Load 191(i32)
290: 14(int) Bitcast 289
291: 184(ivec3) Load 214(uv)
292: 184(ivec3) CompositeConstruct 290 290 290
293: 184(ivec3) BitwiseOr 291 292
Store 214(uv) 293
294: 18(int) Load 191(i32)
295: 18(int) Load 210(i)
296: 18(int) BitwiseOr 294 295
Store 210(i) 296
297: 18(int) Load 191(i32)
298: 57(int) SConvert 297
299: 57(int) Load 227(i64)
300: 57(int) BitwiseAnd 299 298
Store 227(i64) 300
301: 184(ivec3) Load 186(u32v)
302: 184(ivec3) Load 214(uv)
303: 184(ivec3) BitwiseAnd 301 302
Store 214(uv) 303
304: 18(int) Load 191(i32)
305: 14(int) Bitcast 304
306: 184(ivec3) Load 214(uv)
307: 184(ivec3) CompositeConstruct 305 305 305
308: 184(ivec3) BitwiseXor 306 307
Store 214(uv) 308
309: 184(ivec3) Load 186(u32v)
310: 18(int) Load 191(i32)
311: 14(int) Bitcast 310
312: 184(ivec3) CompositeConstruct 311 311 311
313: 184(ivec3) BitwiseXor 309 312
Store 186(u32v) 313
283: 165(bool) UGreaterThanEqual 280 282
Store 260(b) 283
284: 18(int) Load 191(i32)
285: 18(int) Load 210(i)
286: 165(bool) SLessThanEqual 284 285
Store 260(b) 286
287: 18(int) Load 191(i32)
288: 14(int) Bitcast 287
289: 184(ivec3) Load 214(uv)
290: 184(ivec3) CompositeConstruct 288 288 288
291: 184(ivec3) BitwiseOr 289 290
Store 214(uv) 291
292: 18(int) Load 191(i32)
293: 18(int) Load 210(i)
294: 18(int) BitwiseOr 292 293
Store 210(i) 294
295: 18(int) Load 191(i32)
296: 57(int) SConvert 295
297: 57(int) Load 227(i64)
298: 57(int) BitwiseAnd 297 296
Store 227(i64) 298
299: 184(ivec3) Load 186(u32v)
300: 184(ivec3) Load 214(uv)
301: 184(ivec3) BitwiseAnd 299 300
Store 214(uv) 301
302: 18(int) Load 191(i32)
303: 14(int) Bitcast 302
304: 184(ivec3) Load 214(uv)
305: 184(ivec3) CompositeConstruct 303 303 303
306: 184(ivec3) BitwiseXor 304 305
Store 214(uv) 306
307: 184(ivec3) Load 186(u32v)
308: 18(int) Load 191(i32)
309: 14(int) Bitcast 308
310: 184(ivec3) CompositeConstruct 309 309 309
311: 184(ivec3) BitwiseXor 307 310
Store 186(u32v) 311
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
314(i32v): 53(ptr) Variable Function
317(i32): 19(ptr) Variable Function
327(u32v): 185(ptr) Variable Function
329(u32): 38(ptr) Variable Function
401(i8v4): 400(ptr) Variable Function
404(i16v2): 102(ptr) Variable Function
409(u8v4): 408(ptr) Variable Function
412(u16v2): 131(ptr) Variable Function
415(i64): 226(ptr) Variable Function
418(u32v2): 50(ptr) Variable Function
420(u64): 419(ptr) Variable Function
424(bv): 423(ptr) Variable Function
315: 52(ivec2) Load 314(i32v)
316: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 315
Store 314(i32v) 316
318: 18(int) Load 317(i32)
319: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 318
Store 317(i32) 319
320: 52(ivec2) Load 314(i32v)
321: 18(int) Load 317(i32)
322: 52(ivec2) CompositeConstruct 321 321
323: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 320 322
Store 314(i32v) 323
324: 52(ivec2) Load 314(i32v)
326: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 324 325
Store 314(i32v) 326
328: 184(ivec3) Load 327(u32v)
330: 14(int) Load 329(u32)
331: 184(ivec3) CompositeConstruct 330 330 330
332: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 328 331
Store 327(u32v) 332
333: 184(ivec3) Load 327(u32v)
335: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 333 334
Store 327(u32v) 335
336: 52(ivec2) Load 314(i32v)
337: 18(int) Load 317(i32)
338: 52(ivec2) CompositeConstruct 337 337
339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 336 338
Store 314(i32v) 339
340: 52(ivec2) Load 314(i32v)
341: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 340 325
Store 314(i32v) 341
342: 184(ivec3) Load 327(u32v)
343: 14(int) Load 329(u32)
344: 184(ivec3) CompositeConstruct 343 343 343
345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 342 344
Store 327(u32v) 345
346: 184(ivec3) Load 327(u32v)
347: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 346 334
Store 327(u32v) 347
348: 52(ivec2) Load 314(i32v)
349: 18(int) Load 317(i32)
350: 18(int) SNegate 349
351: 18(int) Load 317(i32)
352: 52(ivec2) CompositeConstruct 350 350
353: 52(ivec2) CompositeConstruct 351 351
354: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 352 353
Store 314(i32v) 354
355: 52(ivec2) Load 314(i32v)
356: 52(ivec2) Load 314(i32v)
357: 52(ivec2) SNegate 356
358: 52(ivec2) Load 314(i32v)
359: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 355 357 358
Store 314(i32v) 359
360: 184(ivec3) Load 327(u32v)
361: 14(int) Load 329(u32)
362: 14(int) SNegate 361
363: 14(int) Load 329(u32)
364: 184(ivec3) CompositeConstruct 362 362 362
365: 184(ivec3) CompositeConstruct 363 363 363
366: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 364 365
Store 327(u32v) 366
367: 184(ivec3) Load 327(u32v)
368: 184(ivec3) Load 327(u32v)
369: 184(ivec3) SNegate 368
370: 184(ivec3) Load 327(u32v)
371: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 367 369 370
Store 327(u32v) 371
372: 19(ptr) AccessChain 314(i32v) 175
312(i32v): 53(ptr) Variable Function
315(i32): 19(ptr) Variable Function
325(u32v): 185(ptr) Variable Function
327(u32): 38(ptr) Variable Function
399(i8v4): 398(ptr) Variable Function
402(i16v2): 102(ptr) Variable Function
407(u8v4): 406(ptr) Variable Function
410(u16v2): 131(ptr) Variable Function
413(i64): 226(ptr) Variable Function
416(u32v2): 50(ptr) Variable Function
418(u64): 417(ptr) Variable Function
422(bv): 421(ptr) Variable Function
313: 52(ivec2) Load 312(i32v)
314: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 313
Store 312(i32v) 314
316: 18(int) Load 315(i32)
317: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 316
Store 315(i32) 317
318: 52(ivec2) Load 312(i32v)
319: 18(int) Load 315(i32)
320: 52(ivec2) CompositeConstruct 319 319
321: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 318 320
Store 312(i32v) 321
322: 52(ivec2) Load 312(i32v)
324: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 322 323
Store 312(i32v) 324
326: 184(ivec3) Load 325(u32v)
328: 14(int) Load 327(u32)
329: 184(ivec3) CompositeConstruct 328 328 328
330: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 329
Store 325(u32v) 330
331: 184(ivec3) Load 325(u32v)
333: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 331 332
Store 325(u32v) 333
334: 52(ivec2) Load 312(i32v)
335: 18(int) Load 315(i32)
336: 52(ivec2) CompositeConstruct 335 335
337: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 334 336
Store 312(i32v) 337
338: 52(ivec2) Load 312(i32v)
339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 338 323
Store 312(i32v) 339
340: 184(ivec3) Load 325(u32v)
341: 14(int) Load 327(u32)
342: 184(ivec3) CompositeConstruct 341 341 341
343: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 340 342
Store 325(u32v) 343
344: 184(ivec3) Load 325(u32v)
345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 344 332
Store 325(u32v) 345
346: 52(ivec2) Load 312(i32v)
347: 18(int) Load 315(i32)
348: 18(int) SNegate 347
349: 18(int) Load 315(i32)
350: 52(ivec2) CompositeConstruct 348 348
351: 52(ivec2) CompositeConstruct 349 349
352: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 346 350 351
Store 312(i32v) 352
353: 52(ivec2) Load 312(i32v)
354: 52(ivec2) Load 312(i32v)
355: 52(ivec2) SNegate 354
356: 52(ivec2) Load 312(i32v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 353 355 356
Store 312(i32v) 357
358: 184(ivec3) Load 325(u32v)
359: 14(int) Load 327(u32)
360: 14(int) SNegate 359
361: 14(int) Load 327(u32)
362: 184(ivec3) CompositeConstruct 360 360 360
363: 184(ivec3) CompositeConstruct 361 361 361
364: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 358 362 363
Store 325(u32v) 364
365: 184(ivec3) Load 325(u32v)
366: 184(ivec3) Load 325(u32v)
367: 184(ivec3) SNegate 366
368: 184(ivec3) Load 325(u32v)
369: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 365 367 368
Store 325(u32v) 369
370: 19(ptr) AccessChain 312(i32v) 175
371: 18(int) Load 370
372: 19(ptr) AccessChain 312(i32v) 176
373: 18(int) Load 372
374: 19(ptr) AccessChain 314(i32v) 176
375: 18(int) Load 374
377: 18(int) Select 376 375 373
Store 317(i32) 377
378: 18(int) Load 317(i32)
379: 52(ivec2) CompositeConstruct 378 378
380: 18(int) Load 317(i32)
381: 18(int) SNegate 380
382: 52(ivec2) CompositeConstruct 381 381
385: 52(ivec2) Select 384 382 379
Store 314(i32v) 385
386: 38(ptr) AccessChain 327(u32v) 175
375: 18(int) Select 374 373 371
Store 315(i32) 375
376: 18(int) Load 315(i32)
377: 52(ivec2) CompositeConstruct 376 376
378: 18(int) Load 315(i32)
379: 18(int) SNegate 378
380: 52(ivec2) CompositeConstruct 379 379
383: 52(ivec2) Select 382 380 377
Store 312(i32v) 383
384: 38(ptr) AccessChain 325(u32v) 175
385: 14(int) Load 384
386: 38(ptr) AccessChain 325(u32v) 176
387: 14(int) Load 386
388: 38(ptr) AccessChain 327(u32v) 176
389: 14(int) Load 388
390: 14(int) Select 376 389 387
Store 329(u32) 390
391: 14(int) Load 329(u32)
392: 184(ivec3) CompositeConstruct 391 391 391
393: 14(int) Load 329(u32)
394: 14(int) SNegate 393
395: 184(ivec3) CompositeConstruct 394 394 394
398: 184(ivec3) Select 397 395 392
Store 327(u32v) 398
402: 399(ivec4) Load 401(i8v4)
403: 18(int) Bitcast 402
Store 317(i32) 403
405: 101(ivec2) Load 404(i16v2)
406: 18(int) Bitcast 405
Store 317(i32) 406
410: 407(ivec4) Load 409(u8v4)
411: 14(int) Bitcast 410
Store 329(u32) 411
413: 130(ivec2) Load 412(u16v2)
414: 14(int) Bitcast 413
Store 329(u32) 414
416: 57(int) Load 415(i64)
417: 52(ivec2) Bitcast 416
Store 314(i32v) 417
421: 63(int) Load 420(u64)
422: 49(ivec2) Bitcast 421
Store 418(u32v2) 422
425: 184(ivec3) Load 327(u32v)
426: 14(int) Load 329(u32)
427: 184(ivec3) CompositeConstruct 426 426 426
428: 396(bvec3) ULessThan 425 427
Store 424(bv) 428
429: 52(ivec2) Load 314(i32v)
430: 18(int) Load 317(i32)
431: 52(ivec2) CompositeConstruct 430 430
432: 166(bvec2) SLessThan 429 431
433: 396(bvec3) Load 424(bv)
434: 396(bvec3) VectorShuffle 433 432 3 4 2
Store 424(bv) 434
435: 184(ivec3) Load 327(u32v)
436: 14(int) Load 329(u32)
437: 184(ivec3) CompositeConstruct 436 436 436
438: 396(bvec3) ULessThanEqual 435 437
Store 424(bv) 438
439: 52(ivec2) Load 314(i32v)
440: 18(int) Load 317(i32)
441: 52(ivec2) CompositeConstruct 440 440
442: 166(bvec2) SLessThanEqual 439 441
443: 396(bvec3) Load 424(bv)
444: 396(bvec3) VectorShuffle 443 442 3 4 2
Store 424(bv) 444
445: 184(ivec3) Load 327(u32v)
446: 14(int) Load 329(u32)
447: 184(ivec3) CompositeConstruct 446 446 446
448: 396(bvec3) UGreaterThan 445 447
Store 424(bv) 448
449: 52(ivec2) Load 314(i32v)
450: 18(int) Load 317(i32)
451: 52(ivec2) CompositeConstruct 450 450
452: 166(bvec2) SGreaterThan 449 451
453: 396(bvec3) Load 424(bv)
454: 396(bvec3) VectorShuffle 453 452 3 4 2
Store 424(bv) 454
455: 184(ivec3) Load 327(u32v)
456: 14(int) Load 329(u32)
457: 184(ivec3) CompositeConstruct 456 456 456
458: 396(bvec3) UGreaterThanEqual 455 457
Store 424(bv) 458
459: 52(ivec2) Load 314(i32v)
460: 18(int) Load 317(i32)
461: 52(ivec2) CompositeConstruct 460 460
462: 166(bvec2) SGreaterThanEqual 459 461
463: 396(bvec3) Load 424(bv)
464: 396(bvec3) VectorShuffle 463 462 3 4 2
Store 424(bv) 464
465: 184(ivec3) Load 327(u32v)
466: 14(int) Load 329(u32)
467: 184(ivec3) CompositeConstruct 466 466 466
468: 396(bvec3) IEqual 465 467
Store 424(bv) 468
469: 52(ivec2) Load 314(i32v)
470: 18(int) Load 317(i32)
471: 52(ivec2) CompositeConstruct 470 470
472: 166(bvec2) IEqual 469 471
473: 396(bvec3) Load 424(bv)
474: 396(bvec3) VectorShuffle 473 472 3 4 2
Store 424(bv) 474
475: 184(ivec3) Load 327(u32v)
476: 14(int) Load 329(u32)
477: 184(ivec3) CompositeConstruct 476 476 476
478: 396(bvec3) INotEqual 475 477
Store 424(bv) 478
479: 52(ivec2) Load 314(i32v)
480: 18(int) Load 317(i32)
481: 52(ivec2) CompositeConstruct 480 480
482: 166(bvec2) INotEqual 479 481
483: 396(bvec3) Load 424(bv)
484: 396(bvec3) VectorShuffle 483 482 3 4 2
Store 424(bv) 484
388: 14(int) Select 374 387 385
Store 327(u32) 388
389: 14(int) Load 327(u32)
390: 184(ivec3) CompositeConstruct 389 389 389
391: 14(int) Load 327(u32)
392: 14(int) SNegate 391
393: 184(ivec3) CompositeConstruct 392 392 392
396: 184(ivec3) Select 395 393 390
Store 325(u32v) 396
400: 397(ivec4) Load 399(i8v4)
401: 18(int) Bitcast 400
Store 315(i32) 401
403: 101(ivec2) Load 402(i16v2)
404: 18(int) Bitcast 403
Store 315(i32) 404
408: 405(ivec4) Load 407(u8v4)
409: 14(int) Bitcast 408
Store 327(u32) 409
411: 130(ivec2) Load 410(u16v2)
412: 14(int) Bitcast 411
Store 327(u32) 412
414: 57(int) Load 413(i64)
415: 52(ivec2) Bitcast 414
Store 312(i32v) 415
419: 63(int) Load 418(u64)
420: 49(ivec2) Bitcast 419
Store 416(u32v2) 420
423: 184(ivec3) Load 325(u32v)
424: 14(int) Load 327(u32)
425: 184(ivec3) CompositeConstruct 424 424 424
426: 394(bvec3) ULessThan 423 425
Store 422(bv) 426
427: 52(ivec2) Load 312(i32v)
428: 18(int) Load 315(i32)
429: 52(ivec2) CompositeConstruct 428 428
430: 166(bvec2) SLessThan 427 429
431: 394(bvec3) Load 422(bv)
432: 394(bvec3) VectorShuffle 431 430 3 4 2
Store 422(bv) 432
433: 184(ivec3) Load 325(u32v)
434: 14(int) Load 327(u32)
435: 184(ivec3) CompositeConstruct 434 434 434
436: 394(bvec3) ULessThanEqual 433 435
Store 422(bv) 436
437: 52(ivec2) Load 312(i32v)
438: 18(int) Load 315(i32)
439: 52(ivec2) CompositeConstruct 438 438
440: 166(bvec2) SLessThanEqual 437 439
441: 394(bvec3) Load 422(bv)
442: 394(bvec3) VectorShuffle 441 440 3 4 2
Store 422(bv) 442
443: 184(ivec3) Load 325(u32v)
444: 14(int) Load 327(u32)
445: 184(ivec3) CompositeConstruct 444 444 444
446: 394(bvec3) UGreaterThan 443 445
Store 422(bv) 446
447: 52(ivec2) Load 312(i32v)
448: 18(int) Load 315(i32)
449: 52(ivec2) CompositeConstruct 448 448
450: 166(bvec2) SGreaterThan 447 449
451: 394(bvec3) Load 422(bv)
452: 394(bvec3) VectorShuffle 451 450 3 4 2
Store 422(bv) 452
453: 184(ivec3) Load 325(u32v)
454: 14(int) Load 327(u32)
455: 184(ivec3) CompositeConstruct 454 454 454
456: 394(bvec3) UGreaterThanEqual 453 455
Store 422(bv) 456
457: 52(ivec2) Load 312(i32v)
458: 18(int) Load 315(i32)
459: 52(ivec2) CompositeConstruct 458 458
460: 166(bvec2) SGreaterThanEqual 457 459
461: 394(bvec3) Load 422(bv)
462: 394(bvec3) VectorShuffle 461 460 3 4 2
Store 422(bv) 462
463: 184(ivec3) Load 325(u32v)
464: 14(int) Load 327(u32)
465: 184(ivec3) CompositeConstruct 464 464 464
466: 394(bvec3) IEqual 463 465
Store 422(bv) 466
467: 52(ivec2) Load 312(i32v)
468: 18(int) Load 315(i32)
469: 52(ivec2) CompositeConstruct 468 468
470: 166(bvec2) IEqual 467 469
471: 394(bvec3) Load 422(bv)
472: 394(bvec3) VectorShuffle 471 470 3 4 2
Store 422(bv) 472
473: 184(ivec3) Load 325(u32v)
474: 14(int) Load 327(u32)
475: 184(ivec3) CompositeConstruct 474 474 474
476: 394(bvec3) INotEqual 473 475
Store 422(bv) 476
477: 52(ivec2) Load 312(i32v)
478: 18(int) Load 315(i32)
479: 52(ivec2) CompositeConstruct 478 478
480: 166(bvec2) INotEqual 477 479
481: 394(bvec3) Load 422(bv)
482: 394(bvec3) VectorShuffle 481 480 3 4 2
Store 422(bv) 482
Return
FunctionEnd