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.int16.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 525
// Id's are bound by 523
Capability Shader
Capability Float16
@ -55,48 +55,48 @@ spv.int16.frag
Name 220 "i"
Name 227 "uv"
Name 243 "i64"
Name 283 "b"
Name 345 "i16v"
Name 348 "i16"
Name 358 "u16v"
Name 360 "u16"
Name 430 "i32"
Name 433 "i64"
Name 436 "i16v4"
Name 439 "u32"
Name 440 "u16v2"
Name 444 "u64"
Name 447 "u16v4"
Name 459 "bv"
Name 520 "Block"
MemberName 520(Block) 0 "i16"
MemberName 520(Block) 1 "i16v2"
MemberName 520(Block) 2 "i16v3"
MemberName 520(Block) 3 "i16v4"
MemberName 520(Block) 4 "u16"
MemberName 520(Block) 5 "u16v2"
MemberName 520(Block) 6 "u16v3"
MemberName 520(Block) 7 "u16v4"
Name 522 "block"
Name 523 "si16"
Name 524 "su16"
Name 281 "b"
Name 343 "i16v"
Name 346 "i16"
Name 356 "u16v"
Name 358 "u16"
Name 428 "i32"
Name 431 "i64"
Name 434 "i16v4"
Name 437 "u32"
Name 438 "u16v2"
Name 442 "u64"
Name 445 "u16v4"
Name 457 "bv"
Name 518 "Block"
MemberName 518(Block) 0 "i16"
MemberName 518(Block) 1 "i16v2"
MemberName 518(Block) 2 "i16v3"
MemberName 518(Block) 3 "i16v4"
MemberName 518(Block) 4 "u16"
MemberName 518(Block) 5 "u16v2"
MemberName 518(Block) 6 "u16v3"
MemberName 518(Block) 7 "u16v4"
Name 520 "block"
Name 521 "si16"
Name 522 "su16"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 520(Block) 0 Offset 0
MemberDecorate 520(Block) 1 Offset 4
MemberDecorate 520(Block) 2 Offset 8
MemberDecorate 520(Block) 3 Offset 16
MemberDecorate 520(Block) 4 Offset 24
MemberDecorate 520(Block) 5 Offset 28
MemberDecorate 520(Block) 6 Offset 32
MemberDecorate 520(Block) 7 Offset 40
Decorate 520(Block) Block
Decorate 522(block) DescriptorSet 0
Decorate 522(block) Binding 1
Decorate 523(si16) SpecId 100
Decorate 524(su16) SpecId 101
MemberDecorate 518(Block) 0 Offset 0
MemberDecorate 518(Block) 1 Offset 4
MemberDecorate 518(Block) 2 Offset 8
MemberDecorate 518(Block) 3 Offset 16
MemberDecorate 518(Block) 4 Offset 24
MemberDecorate 518(Block) 5 Offset 28
MemberDecorate 518(Block) 6 Offset 32
MemberDecorate 518(Block) 7 Offset 40
Decorate 518(Block) Block
Decorate 520(block) DescriptorSet 0
Decorate 520(block) Binding 1
Decorate 521(si16) SpecId 100
Decorate 522(su16) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 16 1
@ -171,28 +171,28 @@ spv.int16.frag
242: TypePointer Function 71(int)
264: 17(int) Constant 1
270: 17(int) Constant 2
275: TypeVector 27(int) 3
282: TypePointer Function 173(bool)
284: 17(int) Constant 0
298: TypePointer Function 17(int)
356: 52(ivec2) ConstantComposite 21 21
365: 193(ivec3) ConstantComposite 184 184 184
407: 173(bool) ConstantTrue
414: 173(bool) ConstantFalse
415: 174(bvec2) ConstantComposite 414 414
427: TypeVector 173(bool) 3
428: 427(bvec3) ConstantComposite 414 414 414
434: TypeVector 14(int) 4
435: TypePointer Function 434(ivec4)
443: TypePointer Function 77(int)
445: TypeVector 36(int) 4
446: TypePointer Function 445(ivec4)
458: TypePointer Function 427(bvec3)
520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4)
521: TypePointer Uniform 520(Block)
522(block): 521(ptr) Variable Uniform
523(si16): 14(int) SpecConstant 4294967286
524(su16): 36(int) SpecConstant 20
276: TypeVector 27(int) 3
280: TypePointer Function 173(bool)
282: 17(int) Constant 0
296: TypePointer Function 17(int)
354: 52(ivec2) ConstantComposite 21 21
363: 193(ivec3) ConstantComposite 184 184 184
405: 173(bool) ConstantTrue
412: 173(bool) ConstantFalse
413: 174(bvec2) ConstantComposite 412 412
425: TypeVector 173(bool) 3
426: 425(bvec3) ConstantComposite 412 412 412
432: TypeVector 14(int) 4
433: TypePointer Function 432(ivec4)
441: TypePointer Function 77(int)
443: TypeVector 36(int) 4
444: TypePointer Function 443(ivec4)
456: TypePointer Function 425(bvec3)
518(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443(ivec4)
519: TypePointer Uniform 518(Block)
520(block): 519(ptr) Variable Uniform
521(si16): 14(int) SpecConstant 4294967286
522(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
@ -371,7 +371,7 @@ spv.int16.frag
220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
243(i64): 242(ptr) Variable Function
283(b): 282(ptr) Variable Function
281(b): 280(ptr) Variable Function
196: 193(ivec3) Load 195(u16v)
198: 197(ivec3) CompositeConstruct 179 179 179
199: 193(ivec3) IAdd 196 198
@ -460,287 +460,285 @@ spv.int16.frag
273: 14(int) ShiftLeftLogical 269 272
Store 200(i16) 273
274: 193(ivec3) Load 195(u16v)
276: 275(ivec3) UConvert 274
277: 275(ivec3) Bitcast 276
278: 27(int) Load 220(i)
279: 275(ivec3) CompositeConstruct 278 278 278
280: 275(ivec3) ShiftLeftLogical 277 279
281: 225(ivec3) Bitcast 280
Store 227(uv) 281
285: 37(ptr) AccessChain 195(u16v) 284
286: 36(int) Load 285
287: 14(int) Load 200(i16)
288: 36(int) Bitcast 287
289: 173(bool) INotEqual 286 288
Store 283(b) 289
290: 14(int) Load 200(i16)
291: 36(int) Bitcast 290
292: 37(ptr) AccessChain 195(u16v) 284
293: 36(int) Load 292
294: 173(bool) IEqual 291 293
Store 283(b) 294
295: 37(ptr) AccessChain 195(u16v) 284
296: 36(int) Load 295
297: 17(int) UConvert 296
299: 298(ptr) AccessChain 227(uv) 264
300: 17(int) Load 299
301: 173(bool) UGreaterThan 297 300
Store 283(b) 301
302: 14(int) Load 200(i16)
303: 27(int) SConvert 302
304: 27(int) Load 220(i)
305: 173(bool) SLessThan 303 304
Store 283(b) 305
306: 37(ptr) AccessChain 195(u16v) 264
307: 36(int) Load 306
308: 17(int) UConvert 307
309: 298(ptr) AccessChain 227(uv) 284
310: 17(int) Load 309
311: 173(bool) UGreaterThanEqual 308 310
Store 283(b) 311
312: 14(int) Load 200(i16)
313: 27(int) SConvert 312
314: 27(int) Load 220(i)
315: 173(bool) SLessThanEqual 313 314
Store 283(b) 315
316: 14(int) Load 200(i16)
317: 27(int) SConvert 316
318: 17(int) Bitcast 317
319: 225(ivec3) Load 227(uv)
320: 225(ivec3) CompositeConstruct 318 318 318
321: 225(ivec3) BitwiseOr 319 320
Store 227(uv) 321
322: 14(int) Load 200(i16)
323: 27(int) SConvert 322
324: 27(int) Load 220(i)
325: 27(int) BitwiseOr 323 324
Store 220(i) 325
326: 14(int) Load 200(i16)
327: 71(int) SConvert 326
328: 71(int) Load 243(i64)
329: 71(int) BitwiseAnd 328 327
Store 243(i64) 329
330: 193(ivec3) Load 195(u16v)
331: 225(ivec3) UConvert 330
332: 225(ivec3) Load 227(uv)
333: 225(ivec3) BitwiseAnd 331 332
Store 227(uv) 333
334: 14(int) Load 200(i16)
335: 27(int) SConvert 334
336: 17(int) Bitcast 335
337: 225(ivec3) Load 227(uv)
338: 225(ivec3) CompositeConstruct 336 336 336
339: 225(ivec3) BitwiseXor 337 338
Store 227(uv) 339
340: 193(ivec3) Load 195(u16v)
341: 14(int) Load 200(i16)
342: 36(int) Bitcast 341
343: 193(ivec3) CompositeConstruct 342 342 342
344: 193(ivec3) BitwiseXor 340 343
Store 195(u16v) 344
275: 27(int) Load 220(i)
277: 276(ivec3) CompositeConstruct 275 275 275
278: 193(ivec3) ShiftLeftLogical 274 277
279: 225(ivec3) UConvert 278
Store 227(uv) 279
283: 37(ptr) AccessChain 195(u16v) 282
284: 36(int) Load 283
285: 14(int) Load 200(i16)
286: 36(int) Bitcast 285
287: 173(bool) INotEqual 284 286
Store 281(b) 287
288: 14(int) Load 200(i16)
289: 36(int) Bitcast 288
290: 37(ptr) AccessChain 195(u16v) 282
291: 36(int) Load 290
292: 173(bool) IEqual 289 291
Store 281(b) 292
293: 37(ptr) AccessChain 195(u16v) 282
294: 36(int) Load 293
295: 17(int) UConvert 294
297: 296(ptr) AccessChain 227(uv) 264
298: 17(int) Load 297
299: 173(bool) UGreaterThan 295 298
Store 281(b) 299
300: 14(int) Load 200(i16)
301: 27(int) SConvert 300
302: 27(int) Load 220(i)
303: 173(bool) SLessThan 301 302
Store 281(b) 303
304: 37(ptr) AccessChain 195(u16v) 264
305: 36(int) Load 304
306: 17(int) UConvert 305
307: 296(ptr) AccessChain 227(uv) 282
308: 17(int) Load 307
309: 173(bool) UGreaterThanEqual 306 308
Store 281(b) 309
310: 14(int) Load 200(i16)
311: 27(int) SConvert 310
312: 27(int) Load 220(i)
313: 173(bool) SLessThanEqual 311 312
Store 281(b) 313
314: 14(int) Load 200(i16)
315: 27(int) SConvert 314
316: 17(int) Bitcast 315
317: 225(ivec3) Load 227(uv)
318: 225(ivec3) CompositeConstruct 316 316 316
319: 225(ivec3) BitwiseOr 317 318
Store 227(uv) 319
320: 14(int) Load 200(i16)
321: 27(int) SConvert 320
322: 27(int) Load 220(i)
323: 27(int) BitwiseOr 321 322
Store 220(i) 323
324: 14(int) Load 200(i16)
325: 71(int) SConvert 324
326: 71(int) Load 243(i64)
327: 71(int) BitwiseAnd 326 325
Store 243(i64) 327
328: 193(ivec3) Load 195(u16v)
329: 225(ivec3) UConvert 328
330: 225(ivec3) Load 227(uv)
331: 225(ivec3) BitwiseAnd 329 330
Store 227(uv) 331
332: 14(int) Load 200(i16)
333: 27(int) SConvert 332
334: 17(int) Bitcast 333
335: 225(ivec3) Load 227(uv)
336: 225(ivec3) CompositeConstruct 334 334 334
337: 225(ivec3) BitwiseXor 335 336
Store 227(uv) 337
338: 193(ivec3) Load 195(u16v)
339: 14(int) Load 200(i16)
340: 36(int) Bitcast 339
341: 193(ivec3) CompositeConstruct 340 340 340
342: 193(ivec3) BitwiseXor 338 341
Store 195(u16v) 342
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
345(i16v): 53(ptr) Variable Function
348(i16): 15(ptr) Variable Function
358(u16v): 194(ptr) Variable Function
360(u16): 37(ptr) Variable Function
430(i32): 219(ptr) Variable Function
433(i64): 242(ptr) Variable Function
436(i16v4): 435(ptr) Variable Function
439(u32): 298(ptr) Variable Function
440(u16v2): 58(ptr) Variable Function
444(u64): 443(ptr) Variable Function
447(u16v4): 446(ptr) Variable Function
459(bv): 458(ptr) Variable Function
346: 52(ivec2) Load 345(i16v)
347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
Store 345(i16v) 347
349: 14(int) Load 348(i16)
350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
Store 348(i16) 350
351: 52(ivec2) Load 345(i16v)
352: 14(int) Load 348(i16)
353: 52(ivec2) CompositeConstruct 352 352
354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
Store 345(i16v) 354
355: 52(ivec2) Load 345(i16v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
Store 345(i16v) 357
359: 193(ivec3) Load 358(u16v)
361: 36(int) Load 360(u16)
362: 193(ivec3) CompositeConstruct 361 361 361
363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
Store 358(u16v) 363
364: 193(ivec3) Load 358(u16v)
366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
Store 358(u16v) 366
367: 52(ivec2) Load 345(i16v)
368: 14(int) Load 348(i16)
369: 52(ivec2) CompositeConstruct 368 368
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
Store 345(i16v) 370
371: 52(ivec2) Load 345(i16v)
372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
Store 345(i16v) 372
373: 193(ivec3) Load 358(u16v)
374: 36(int) Load 360(u16)
375: 193(ivec3) CompositeConstruct 374 374 374
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
Store 358(u16v) 376
377: 193(ivec3) Load 358(u16v)
378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
Store 358(u16v) 378
379: 52(ivec2) Load 345(i16v)
380: 14(int) Load 348(i16)
381: 14(int) SNegate 380
382: 14(int) Load 348(i16)
383: 52(ivec2) CompositeConstruct 381 381
384: 52(ivec2) CompositeConstruct 382 382
385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
Store 345(i16v) 385
386: 52(ivec2) Load 345(i16v)
387: 52(ivec2) Load 345(i16v)
388: 52(ivec2) SNegate 387
389: 52(ivec2) Load 345(i16v)
390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
Store 345(i16v) 390
391: 193(ivec3) Load 358(u16v)
392: 36(int) Load 360(u16)
393: 36(int) SNegate 392
394: 36(int) Load 360(u16)
395: 193(ivec3) CompositeConstruct 393 393 393
396: 193(ivec3) CompositeConstruct 394 394 394
397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
Store 358(u16v) 397
398: 193(ivec3) Load 358(u16v)
399: 193(ivec3) Load 358(u16v)
400: 193(ivec3) SNegate 399
401: 193(ivec3) Load 358(u16v)
402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
Store 358(u16v) 402
403: 15(ptr) AccessChain 345(i16v) 284
343(i16v): 53(ptr) Variable Function
346(i16): 15(ptr) Variable Function
356(u16v): 194(ptr) Variable Function
358(u16): 37(ptr) Variable Function
428(i32): 219(ptr) Variable Function
431(i64): 242(ptr) Variable Function
434(i16v4): 433(ptr) Variable Function
437(u32): 296(ptr) Variable Function
438(u16v2): 58(ptr) Variable Function
442(u64): 441(ptr) Variable Function
445(u16v4): 444(ptr) Variable Function
457(bv): 456(ptr) Variable Function
344: 52(ivec2) Load 343(i16v)
345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
Store 343(i16v) 345
347: 14(int) Load 346(i16)
348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347
Store 346(i16) 348
349: 52(ivec2) Load 343(i16v)
350: 14(int) Load 346(i16)
351: 52(ivec2) CompositeConstruct 350 350
352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
Store 343(i16v) 352
353: 52(ivec2) Load 343(i16v)
355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
Store 343(i16v) 355
357: 193(ivec3) Load 356(u16v)
359: 36(int) Load 358(u16)
360: 193(ivec3) CompositeConstruct 359 359 359
361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
Store 356(u16v) 361
362: 193(ivec3) Load 356(u16v)
364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
Store 356(u16v) 364
365: 52(ivec2) Load 343(i16v)
366: 14(int) Load 346(i16)
367: 52(ivec2) CompositeConstruct 366 366
368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
Store 343(i16v) 368
369: 52(ivec2) Load 343(i16v)
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
Store 343(i16v) 370
371: 193(ivec3) Load 356(u16v)
372: 36(int) Load 358(u16)
373: 193(ivec3) CompositeConstruct 372 372 372
374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
Store 356(u16v) 374
375: 193(ivec3) Load 356(u16v)
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
Store 356(u16v) 376
377: 52(ivec2) Load 343(i16v)
378: 14(int) Load 346(i16)
379: 14(int) SNegate 378
380: 14(int) Load 346(i16)
381: 52(ivec2) CompositeConstruct 379 379
382: 52(ivec2) CompositeConstruct 380 380
383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
Store 343(i16v) 383
384: 52(ivec2) Load 343(i16v)
385: 52(ivec2) Load 343(i16v)
386: 52(ivec2) SNegate 385
387: 52(ivec2) Load 343(i16v)
388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
Store 343(i16v) 388
389: 193(ivec3) Load 356(u16v)
390: 36(int) Load 358(u16)
391: 36(int) SNegate 390
392: 36(int) Load 358(u16)
393: 193(ivec3) CompositeConstruct 391 391 391
394: 193(ivec3) CompositeConstruct 392 392 392
395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
Store 356(u16v) 395
396: 193(ivec3) Load 356(u16v)
397: 193(ivec3) Load 356(u16v)
398: 193(ivec3) SNegate 397
399: 193(ivec3) Load 356(u16v)
400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
Store 356(u16v) 400
401: 15(ptr) AccessChain 343(i16v) 282
402: 14(int) Load 401
403: 15(ptr) AccessChain 343(i16v) 264
404: 14(int) Load 403
405: 15(ptr) AccessChain 345(i16v) 264
406: 14(int) Load 405
408: 14(int) Select 407 406 404
Store 348(i16) 408
409: 14(int) Load 348(i16)
410: 52(ivec2) CompositeConstruct 409 409
411: 14(int) Load 348(i16)
412: 14(int) SNegate 411
413: 52(ivec2) CompositeConstruct 412 412
416: 52(ivec2) Select 415 413 410
Store 345(i16v) 416
417: 37(ptr) AccessChain 358(u16v) 284
406: 14(int) Select 405 404 402
Store 346(i16) 406
407: 14(int) Load 346(i16)
408: 52(ivec2) CompositeConstruct 407 407
409: 14(int) Load 346(i16)
410: 14(int) SNegate 409
411: 52(ivec2) CompositeConstruct 410 410
414: 52(ivec2) Select 413 411 408
Store 343(i16v) 414
415: 37(ptr) AccessChain 356(u16v) 282
416: 36(int) Load 415
417: 37(ptr) AccessChain 356(u16v) 264
418: 36(int) Load 417
419: 37(ptr) AccessChain 358(u16v) 264
420: 36(int) Load 419
421: 36(int) Select 407 420 418
Store 360(u16) 421
422: 36(int) Load 360(u16)
423: 193(ivec3) CompositeConstruct 422 422 422
424: 36(int) Load 360(u16)
425: 36(int) SNegate 424
426: 193(ivec3) CompositeConstruct 425 425 425
429: 193(ivec3) Select 428 426 423
Store 358(u16v) 429
431: 52(ivec2) Load 345(i16v)
432: 27(int) Bitcast 431
Store 430(i32) 432
437: 434(ivec4) Load 436(i16v4)
438: 71(int) Bitcast 437
Store 433(i64) 438
441: 57(ivec2) Load 440(u16v2)
442: 17(int) Bitcast 441
Store 439(u32) 442
448: 445(ivec4) Load 447(u16v4)
449: 77(int) Bitcast 448
Store 444(u64) 449
450: 27(int) Load 430(i32)
451: 52(ivec2) Bitcast 450
Store 345(i16v) 451
452: 71(int) Load 433(i64)
453: 434(ivec4) Bitcast 452
Store 436(i16v4) 453
454: 17(int) Load 439(u32)
455: 57(ivec2) Bitcast 454
Store 440(u16v2) 455
456: 77(int) Load 444(u64)
457: 445(ivec4) Bitcast 456
Store 447(u16v4) 457
460: 193(ivec3) Load 358(u16v)
461: 36(int) Load 360(u16)
462: 193(ivec3) CompositeConstruct 461 461 461
463: 427(bvec3) ULessThan 460 462
Store 459(bv) 463
464: 52(ivec2) Load 345(i16v)
465: 14(int) Load 348(i16)
466: 52(ivec2) CompositeConstruct 465 465
467: 174(bvec2) SLessThan 464 466
468: 427(bvec3) Load 459(bv)
469: 427(bvec3) VectorShuffle 468 467 3 4 2
Store 459(bv) 469
470: 193(ivec3) Load 358(u16v)
471: 36(int) Load 360(u16)
472: 193(ivec3) CompositeConstruct 471 471 471
473: 427(bvec3) ULessThanEqual 470 472
Store 459(bv) 473
474: 52(ivec2) Load 345(i16v)
475: 14(int) Load 348(i16)
476: 52(ivec2) CompositeConstruct 475 475
477: 174(bvec2) SLessThanEqual 474 476
478: 427(bvec3) Load 459(bv)
479: 427(bvec3) VectorShuffle 478 477 3 4 2
Store 459(bv) 479
480: 193(ivec3) Load 358(u16v)
481: 36(int) Load 360(u16)
482: 193(ivec3) CompositeConstruct 481 481 481
483: 427(bvec3) UGreaterThan 480 482
Store 459(bv) 483
484: 52(ivec2) Load 345(i16v)
485: 14(int) Load 348(i16)
486: 52(ivec2) CompositeConstruct 485 485
487: 174(bvec2) SGreaterThan 484 486
488: 427(bvec3) Load 459(bv)
489: 427(bvec3) VectorShuffle 488 487 3 4 2
Store 459(bv) 489
490: 193(ivec3) Load 358(u16v)
491: 36(int) Load 360(u16)
492: 193(ivec3) CompositeConstruct 491 491 491
493: 427(bvec3) UGreaterThanEqual 490 492
Store 459(bv) 493
494: 52(ivec2) Load 345(i16v)
495: 14(int) Load 348(i16)
496: 52(ivec2) CompositeConstruct 495 495
497: 174(bvec2) SGreaterThanEqual 494 496
498: 427(bvec3) Load 459(bv)
499: 427(bvec3) VectorShuffle 498 497 3 4 2
Store 459(bv) 499
500: 193(ivec3) Load 358(u16v)
501: 36(int) Load 360(u16)
502: 193(ivec3) CompositeConstruct 501 501 501
503: 427(bvec3) IEqual 500 502
Store 459(bv) 503
504: 52(ivec2) Load 345(i16v)
505: 14(int) Load 348(i16)
506: 52(ivec2) CompositeConstruct 505 505
507: 174(bvec2) IEqual 504 506
508: 427(bvec3) Load 459(bv)
509: 427(bvec3) VectorShuffle 508 507 3 4 2
Store 459(bv) 509
510: 193(ivec3) Load 358(u16v)
511: 36(int) Load 360(u16)
512: 193(ivec3) CompositeConstruct 511 511 511
513: 427(bvec3) INotEqual 510 512
Store 459(bv) 513
514: 52(ivec2) Load 345(i16v)
515: 14(int) Load 348(i16)
516: 52(ivec2) CompositeConstruct 515 515
517: 174(bvec2) INotEqual 514 516
518: 427(bvec3) Load 459(bv)
519: 427(bvec3) VectorShuffle 518 517 3 4 2
Store 459(bv) 519
419: 36(int) Select 405 418 416
Store 358(u16) 419
420: 36(int) Load 358(u16)
421: 193(ivec3) CompositeConstruct 420 420 420
422: 36(int) Load 358(u16)
423: 36(int) SNegate 422
424: 193(ivec3) CompositeConstruct 423 423 423
427: 193(ivec3) Select 426 424 421
Store 356(u16v) 427
429: 52(ivec2) Load 343(i16v)
430: 27(int) Bitcast 429
Store 428(i32) 430
435: 432(ivec4) Load 434(i16v4)
436: 71(int) Bitcast 435
Store 431(i64) 436
439: 57(ivec2) Load 438(u16v2)
440: 17(int) Bitcast 439
Store 437(u32) 440
446: 443(ivec4) Load 445(u16v4)
447: 77(int) Bitcast 446
Store 442(u64) 447
448: 27(int) Load 428(i32)
449: 52(ivec2) Bitcast 448
Store 343(i16v) 449
450: 71(int) Load 431(i64)
451: 432(ivec4) Bitcast 450
Store 434(i16v4) 451
452: 17(int) Load 437(u32)
453: 57(ivec2) Bitcast 452
Store 438(u16v2) 453
454: 77(int) Load 442(u64)
455: 443(ivec4) Bitcast 454
Store 445(u16v4) 455
458: 193(ivec3) Load 356(u16v)
459: 36(int) Load 358(u16)
460: 193(ivec3) CompositeConstruct 459 459 459
461: 425(bvec3) ULessThan 458 460
Store 457(bv) 461
462: 52(ivec2) Load 343(i16v)
463: 14(int) Load 346(i16)
464: 52(ivec2) CompositeConstruct 463 463
465: 174(bvec2) SLessThan 462 464
466: 425(bvec3) Load 457(bv)
467: 425(bvec3) VectorShuffle 466 465 3 4 2
Store 457(bv) 467
468: 193(ivec3) Load 356(u16v)
469: 36(int) Load 358(u16)
470: 193(ivec3) CompositeConstruct 469 469 469
471: 425(bvec3) ULessThanEqual 468 470
Store 457(bv) 471
472: 52(ivec2) Load 343(i16v)
473: 14(int) Load 346(i16)
474: 52(ivec2) CompositeConstruct 473 473
475: 174(bvec2) SLessThanEqual 472 474
476: 425(bvec3) Load 457(bv)
477: 425(bvec3) VectorShuffle 476 475 3 4 2
Store 457(bv) 477
478: 193(ivec3) Load 356(u16v)
479: 36(int) Load 358(u16)
480: 193(ivec3) CompositeConstruct 479 479 479
481: 425(bvec3) UGreaterThan 478 480
Store 457(bv) 481
482: 52(ivec2) Load 343(i16v)
483: 14(int) Load 346(i16)
484: 52(ivec2) CompositeConstruct 483 483
485: 174(bvec2) SGreaterThan 482 484
486: 425(bvec3) Load 457(bv)
487: 425(bvec3) VectorShuffle 486 485 3 4 2
Store 457(bv) 487
488: 193(ivec3) Load 356(u16v)
489: 36(int) Load 358(u16)
490: 193(ivec3) CompositeConstruct 489 489 489
491: 425(bvec3) UGreaterThanEqual 488 490
Store 457(bv) 491
492: 52(ivec2) Load 343(i16v)
493: 14(int) Load 346(i16)
494: 52(ivec2) CompositeConstruct 493 493
495: 174(bvec2) SGreaterThanEqual 492 494
496: 425(bvec3) Load 457(bv)
497: 425(bvec3) VectorShuffle 496 495 3 4 2
Store 457(bv) 497
498: 193(ivec3) Load 356(u16v)
499: 36(int) Load 358(u16)
500: 193(ivec3) CompositeConstruct 499 499 499
501: 425(bvec3) IEqual 498 500
Store 457(bv) 501
502: 52(ivec2) Load 343(i16v)
503: 14(int) Load 346(i16)
504: 52(ivec2) CompositeConstruct 503 503
505: 174(bvec2) IEqual 502 504
506: 425(bvec3) Load 457(bv)
507: 425(bvec3) VectorShuffle 506 505 3 4 2
Store 457(bv) 507
508: 193(ivec3) Load 356(u16v)
509: 36(int) Load 358(u16)
510: 193(ivec3) CompositeConstruct 509 509 509
511: 425(bvec3) INotEqual 508 510
Store 457(bv) 511
512: 52(ivec2) Load 343(i16v)
513: 14(int) Load 346(i16)
514: 52(ivec2) CompositeConstruct 513 513
515: 174(bvec2) INotEqual 512 514
516: 425(bvec3) Load 457(bv)
517: 425(bvec3) VectorShuffle 516 515 3 4 2
Store 457(bv) 517
Return
FunctionEnd

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

View File

@ -1,7 +1,7 @@
spv.int64.frag
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 483
// Id's are bound by 488
Capability Shader
Capability Float64
@ -37,38 +37,38 @@ spv.int64.frag
Name 139 "i64"
Name 159 "i"
Name 166 "uv"
Name 221 "b"
Name 281 "i64v"
Name 284 "i64"
Name 294 "u64v"
Name 296 "u64"
Name 368 "dv"
Name 387 "iv"
Name 392 "uv"
Name 396 "bv"
Name 457 "Block"
MemberName 457(Block) 0 "i64v"
MemberName 457(Block) 1 "u64"
Name 459 "block"
Name 460 "si64"
Name 461 "su64"
Name 462 "si"
Name 463 "su"
Name 464 "sb"
Name 226 "b"
Name 286 "i64v"
Name 289 "i64"
Name 299 "u64v"
Name 301 "u64"
Name 373 "dv"
Name 392 "iv"
Name 397 "uv"
Name 401 "bv"
Name 462 "Block"
MemberName 462(Block) 0 "i64v"
MemberName 462(Block) 1 "u64"
Name 464 "block"
Name 465 "si64"
Name 466 "su64"
Name 467 "si"
Name 468 "su"
Name 469 "sb"
MemberDecorate 28(Uniforms) 0 Offset 0
Decorate 28(Uniforms) Block
Decorate 30 DescriptorSet 0
Decorate 30 Binding 0
MemberDecorate 457(Block) 0 Offset 0
MemberDecorate 457(Block) 1 Offset 24
Decorate 457(Block) Block
Decorate 459(block) DescriptorSet 0
Decorate 459(block) Binding 1
Decorate 460(si64) SpecId 100
Decorate 461(su64) SpecId 101
Decorate 462(si) SpecId 102
Decorate 463(su) SpecId 103
Decorate 464(sb) SpecId 104
MemberDecorate 462(Block) 0 Offset 0
MemberDecorate 462(Block) 1 Offset 24
Decorate 462(Block) Block
Decorate 464(block) DescriptorSet 0
Decorate 464(block) Binding 1
Decorate 465(si64) SpecId 100
Decorate 466(su64) SpecId 101
Decorate 467(si) SpecId 102
Decorate 468(su) SpecId 103
Decorate 469(sb) SpecId 104
2: TypeVoid
3: TypeFunction 2
14: TypeInt 64 0
@ -128,52 +128,53 @@ spv.int64.frag
158: TypePointer Function 31(int)
164: TypeVector 21(int) 3
165: TypePointer Function 164(ivec3)
199: TypeVector 31(int) 3
203: 21(int) Constant 1
204: TypePointer Function 21(int)
212: 21(int) Constant 2
220: TypePointer Function 55(bool)
222: 21(int) Constant 0
292: 52(ivec2) ConstantComposite 25 25
301: 132(ivec3) ConstantComposite 69 69 69
343: 55(bool) ConstantTrue
350: 55(bool) ConstantFalse
351: 56(bvec2) ConstantComposite 350 350
363: TypeVector 55(bool) 3
364: 363(bvec3) ConstantComposite 350 350 350
366: TypeVector 94(float) 3
367: TypePointer Function 366(fvec3)
372: TypePointer Function 94(float)
383: 31(int) Constant 1
384: 31(int) Constant 2
385: 74(ivec2) ConstantComposite 383 384
390: 81(ivec2) ConstantComposite 212 22
395: TypePointer Function 363(bvec3)
457(Block): TypeStruct 136(ivec3) 14(int)
458: TypePointer Uniform 457(Block)
459(block): 458(ptr) Variable Uniform
460(si64): 18(int) SpecConstant 4294967286 4294967295
461(su64): 14(int) SpecConstant 20 0
462(si): 31(int) SpecConstant 4294967291
463(su): 21(int) SpecConstant 4
464(sb): 55(bool) SpecConstantTrue
465: 55(bool) SpecConstantOp 171 460(si64) 69
466: 55(bool) SpecConstantOp 171 461(su64) 69
467: 18(int) SpecConstantOp 169 464(sb) 61 60
468: 14(int) SpecConstantOp 169 464(sb) 70 69
469: 31(int) SpecConstantOp 114 460(si64)
470: 18(int) SpecConstantOp 114 462(si)
471: 21(int) SpecConstantOp 113 461(su64)
472: 14(int) SpecConstantOp 113 463(su)
473: 18(int) SpecConstantOp 128 461(su64) 69
474: 14(int) SpecConstantOp 128 460(si64) 69
475: 31(int) SpecConstantOp 113 461(su64)
476: 31(int) SpecConstantOp 128 475 222
477: 18(int) SpecConstantOp 114 462(si)
478: 14(int) SpecConstantOp 128 477 69
479: 31(int) SpecConstantOp 114 460(si64)
480: 21(int) SpecConstantOp 128 479 222
481: 18(int) SpecConstantOp 113 463(su)
482: 18(int) SpecConstantOp 128 481 69
217: 21(int) Constant 2
225: TypePointer Function 55(bool)
227: 21(int) Constant 0
297: 52(ivec2) ConstantComposite 25 25
306: 132(ivec3) ConstantComposite 69 69 69
348: 55(bool) ConstantTrue
355: 55(bool) ConstantFalse
356: 56(bvec2) ConstantComposite 355 355
368: TypeVector 55(bool) 3
369: 368(bvec3) ConstantComposite 355 355 355
371: TypeVector 94(float) 3
372: TypePointer Function 371(fvec3)
377: TypePointer Function 94(float)
388: 31(int) Constant 1
389: 31(int) Constant 2
390: 74(ivec2) ConstantComposite 388 389
395: 81(ivec2) ConstantComposite 217 22
400: TypePointer Function 368(bvec3)
462(Block): TypeStruct 136(ivec3) 14(int)
463: TypePointer Uniform 462(Block)
464(block): 463(ptr) Variable Uniform
465(si64): 18(int) SpecConstant 4294967286 4294967295
466(su64): 14(int) SpecConstant 20 0
467(si): 31(int) SpecConstant 4294967291
468(su): 21(int) SpecConstant 4
469(sb): 55(bool) SpecConstantTrue
470: 55(bool) SpecConstantOp 171 465(si64) 69
471: 55(bool) SpecConstantOp 171 466(su64) 69
472: 18(int) SpecConstantOp 169 469(sb) 61 60
473: 14(int) SpecConstantOp 169 469(sb) 70 69
474: 31(int) SpecConstantOp 114 465(si64)
475: 18(int) SpecConstantOp 114 467(si)
476: 21(int) SpecConstantOp 113 466(su64)
477: 14(int) SpecConstantOp 113 468(su)
478: 18(int) SpecConstantOp 128 466(su64) 69
479: 14(int) SpecConstantOp 128 465(si64) 69
480: 31(int) SpecConstantOp 113 466(su64)
481: 31(int) SpecConstantOp 128 480 227
482: 18(int) SpecConstantOp 114 467(si)
483: 14(int) SpecConstantOp 128 482 69
484: 31(int) SpecConstantOp 114 465(si64)
485: 21(int) SpecConstantOp 128 484 227
486: 18(int) SpecConstantOp 113 468(su)
487: 18(int) SpecConstantOp 128 486 69
4(main): 2 Function None 3
5: Label
Store 16(u64Max) 17
@ -286,7 +287,7 @@ spv.int64.frag
139(i64): 19(ptr) Variable Function
159(i): 158(ptr) Variable Function
166(uv): 165(ptr) Variable Function
221(b): 220(ptr) Variable Function
226(b): 225(ptr) Variable Function
135: 132(ivec3) Load 134(u64v)
137: 136(ivec3) CompositeConstruct 61 61 61
138: 132(ivec3) IAdd 135 137
@ -359,302 +360,308 @@ spv.int64.frag
195: 18(int) SConvert 194
196: 18(int) SMod 193 195
Store 139(i64) 196
197: 31(int) Load 159(i)
198: 18(int) SConvert 197
199: 14(int) Bitcast 198
200: 132(ivec3) Load 134(u64v)
201: 132(ivec3) CompositeConstruct 199 199 199
202: 132(ivec3) ShiftLeftLogical 200 201
Store 134(u64v) 202
197: 132(ivec3) Load 134(u64v)
198: 31(int) Load 159(i)
200: 199(ivec3) CompositeConstruct 198 198 198
201: 132(ivec3) ShiftLeftLogical 197 200
Store 134(u64v) 201
202: 18(int) Load 139(i64)
205: 204(ptr) AccessChain 166(uv) 203
206: 21(int) Load 205
207: 18(int) UConvert 206
208: 18(int) Bitcast 207
209: 18(int) Load 139(i64)
210: 18(int) ShiftRightArithmetic 209 208
Store 139(i64) 210
211: 18(int) Load 139(i64)
213: 40(ptr) AccessChain 134(u64v) 212
214: 14(int) Load 213
215: 18(int) ShiftLeftLogical 211 214
207: 18(int) ShiftRightArithmetic 202 206
Store 139(i64) 207
208: 31(int) Load 159(i)
209: 132(ivec3) Load 134(u64v)
210: 199(ivec3) CompositeConstruct 208 208 208
211: 132(ivec3) ShiftLeftLogical 209 210
Store 134(u64v) 211
212: 204(ptr) AccessChain 166(uv) 203
213: 21(int) Load 212
214: 18(int) Load 139(i64)
215: 18(int) ShiftRightArithmetic 214 213
Store 139(i64) 215
216: 132(ivec3) Load 134(u64v)
217: 18(int) Load 139(i64)
218: 136(ivec3) CompositeConstruct 217 217 217
219: 132(ivec3) ShiftLeftLogical 216 218
Store 134(u64v) 219
223: 40(ptr) AccessChain 134(u64v) 222
224: 14(int) Load 223
225: 18(int) Load 139(i64)
226: 14(int) Bitcast 225
227: 55(bool) INotEqual 224 226
Store 221(b) 227
228: 18(int) Load 139(i64)
229: 14(int) Bitcast 228
230: 40(ptr) AccessChain 134(u64v) 222
231: 14(int) Load 230
232: 55(bool) IEqual 229 231
Store 221(b) 232
233: 40(ptr) AccessChain 134(u64v) 222
234: 14(int) Load 233
235: 204(ptr) AccessChain 166(uv) 203
236: 21(int) Load 235
237: 14(int) UConvert 236
238: 55(bool) UGreaterThan 234 237
Store 221(b) 238
239: 18(int) Load 139(i64)
240: 31(int) Load 159(i)
241: 18(int) SConvert 240
242: 55(bool) SLessThan 239 241
Store 221(b) 242
243: 40(ptr) AccessChain 134(u64v) 203
244: 14(int) Load 243
245: 204(ptr) AccessChain 166(uv) 222
246: 21(int) Load 245
247: 14(int) UConvert 246
248: 55(bool) UGreaterThanEqual 244 247
Store 221(b) 248
249: 18(int) Load 139(i64)
250: 31(int) Load 159(i)
251: 18(int) SConvert 250
252: 55(bool) SLessThanEqual 249 251
Store 221(b) 252
253: 31(int) Load 159(i)
254: 18(int) SConvert 253
255: 14(int) Bitcast 254
256: 132(ivec3) Load 134(u64v)
257: 132(ivec3) CompositeConstruct 255 255 255
258: 132(ivec3) BitwiseOr 256 257
Store 134(u64v) 258
259: 18(int) Load 139(i64)
260: 31(int) Load 159(i)
261: 18(int) SConvert 260
262: 18(int) BitwiseOr 259 261
Store 139(i64) 262
263: 31(int) Load 159(i)
264: 18(int) SConvert 263
265: 18(int) Load 139(i64)
266: 18(int) BitwiseAnd 265 264
Store 139(i64) 266
267: 132(ivec3) Load 134(u64v)
268: 164(ivec3) Load 166(uv)
269: 132(ivec3) UConvert 268
270: 132(ivec3) BitwiseAnd 267 269
Store 134(u64v) 270
271: 18(int) Load 139(i64)
272: 14(int) Bitcast 271
273: 132(ivec3) Load 134(u64v)
274: 132(ivec3) CompositeConstruct 272 272 272
275: 132(ivec3) BitwiseXor 273 274
216: 18(int) Load 139(i64)
218: 40(ptr) AccessChain 134(u64v) 217
219: 14(int) Load 218
220: 18(int) ShiftLeftLogical 216 219
Store 139(i64) 220
221: 132(ivec3) Load 134(u64v)
222: 18(int) Load 139(i64)
223: 136(ivec3) CompositeConstruct 222 222 222
224: 132(ivec3) ShiftLeftLogical 221 223
Store 134(u64v) 224
228: 40(ptr) AccessChain 134(u64v) 227
229: 14(int) Load 228
230: 18(int) Load 139(i64)
231: 14(int) Bitcast 230
232: 55(bool) INotEqual 229 231
Store 226(b) 232
233: 18(int) Load 139(i64)
234: 14(int) Bitcast 233
235: 40(ptr) AccessChain 134(u64v) 227
236: 14(int) Load 235
237: 55(bool) IEqual 234 236
Store 226(b) 237
238: 40(ptr) AccessChain 134(u64v) 227
239: 14(int) Load 238
240: 204(ptr) AccessChain 166(uv) 203
241: 21(int) Load 240
242: 14(int) UConvert 241
243: 55(bool) UGreaterThan 239 242
Store 226(b) 243
244: 18(int) Load 139(i64)
245: 31(int) Load 159(i)
246: 18(int) SConvert 245
247: 55(bool) SLessThan 244 246
Store 226(b) 247
248: 40(ptr) AccessChain 134(u64v) 203
249: 14(int) Load 248
250: 204(ptr) AccessChain 166(uv) 227
251: 21(int) Load 250
252: 14(int) UConvert 251
253: 55(bool) UGreaterThanEqual 249 252
Store 226(b) 253
254: 18(int) Load 139(i64)
255: 31(int) Load 159(i)
256: 18(int) SConvert 255
257: 55(bool) SLessThanEqual 254 256
Store 226(b) 257
258: 31(int) Load 159(i)
259: 18(int) SConvert 258
260: 14(int) Bitcast 259
261: 132(ivec3) Load 134(u64v)
262: 132(ivec3) CompositeConstruct 260 260 260
263: 132(ivec3) BitwiseOr 261 262
Store 134(u64v) 263
264: 18(int) Load 139(i64)
265: 31(int) Load 159(i)
266: 18(int) SConvert 265
267: 18(int) BitwiseOr 264 266
Store 139(i64) 267
268: 31(int) Load 159(i)
269: 18(int) SConvert 268
270: 18(int) Load 139(i64)
271: 18(int) BitwiseAnd 270 269
Store 139(i64) 271
272: 132(ivec3) Load 134(u64v)
273: 164(ivec3) Load 166(uv)
274: 132(ivec3) UConvert 273
275: 132(ivec3) BitwiseAnd 272 274
Store 134(u64v) 275
276: 132(ivec3) Load 134(u64v)
277: 18(int) Load 139(i64)
278: 14(int) Bitcast 277
279: 132(ivec3) CompositeConstruct 278 278 278
280: 132(ivec3) BitwiseXor 276 279
276: 18(int) Load 139(i64)
277: 14(int) Bitcast 276
278: 132(ivec3) Load 134(u64v)
279: 132(ivec3) CompositeConstruct 277 277 277
280: 132(ivec3) BitwiseXor 278 279
Store 134(u64v) 280
281: 132(ivec3) Load 134(u64v)
282: 18(int) Load 139(i64)
283: 14(int) Bitcast 282
284: 132(ivec3) CompositeConstruct 283 283 283
285: 132(ivec3) BitwiseXor 281 284
Store 134(u64v) 285
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
281(i64v): 53(ptr) Variable Function
284(i64): 19(ptr) Variable Function
294(u64v): 133(ptr) Variable Function
296(u64): 40(ptr) Variable Function
368(dv): 367(ptr) Variable Function
387(iv): 75(ptr) Variable Function
392(uv): 82(ptr) Variable Function
396(bv): 395(ptr) Variable Function
282: 52(ivec2) Load 281(i64v)
283: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 282
Store 281(i64v) 283
285: 18(int) Load 284(i64)
286: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 285
Store 284(i64) 286
287: 52(ivec2) Load 281(i64v)
288: 18(int) Load 284(i64)
289: 52(ivec2) CompositeConstruct 288 288
290: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 287 289
Store 281(i64v) 290
291: 52(ivec2) Load 281(i64v)
293: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 291 292
Store 281(i64v) 293
295: 132(ivec3) Load 294(u64v)
297: 14(int) Load 296(u64)
298: 132(ivec3) CompositeConstruct 297 297 297
299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 298
Store 294(u64v) 299
300: 132(ivec3) Load 294(u64v)
302: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 301
Store 294(u64v) 302
303: 52(ivec2) Load 281(i64v)
304: 18(int) Load 284(i64)
305: 52(ivec2) CompositeConstruct 304 304
306: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 303 305
Store 281(i64v) 306
307: 52(ivec2) Load 281(i64v)
308: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 307 292
Store 281(i64v) 308
309: 132(ivec3) Load 294(u64v)
310: 14(int) Load 296(u64)
311: 132(ivec3) CompositeConstruct 310 310 310
312: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 309 311
Store 294(u64v) 312
313: 132(ivec3) Load 294(u64v)
314: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 313 301
Store 294(u64v) 314
315: 52(ivec2) Load 281(i64v)
316: 18(int) Load 284(i64)
317: 18(int) SNegate 316
318: 18(int) Load 284(i64)
319: 52(ivec2) CompositeConstruct 317 317
320: 52(ivec2) CompositeConstruct 318 318
321: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 315 319 320
Store 281(i64v) 321
322: 52(ivec2) Load 281(i64v)
323: 52(ivec2) Load 281(i64v)
324: 52(ivec2) SNegate 323
325: 52(ivec2) Load 281(i64v)
326: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 322 324 325
Store 281(i64v) 326
327: 132(ivec3) Load 294(u64v)
328: 14(int) Load 296(u64)
329: 14(int) SNegate 328
330: 14(int) Load 296(u64)
331: 132(ivec3) CompositeConstruct 329 329 329
332: 132(ivec3) CompositeConstruct 330 330 330
333: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 327 331 332
Store 294(u64v) 333
334: 132(ivec3) Load 294(u64v)
335: 132(ivec3) Load 294(u64v)
336: 132(ivec3) SNegate 335
337: 132(ivec3) Load 294(u64v)
338: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 334 336 337
Store 294(u64v) 338
339: 19(ptr) AccessChain 281(i64v) 222
340: 18(int) Load 339
341: 19(ptr) AccessChain 281(i64v) 203
342: 18(int) Load 341
344: 18(int) Select 343 342 340
Store 284(i64) 344
345: 18(int) Load 284(i64)
346: 52(ivec2) CompositeConstruct 345 345
347: 18(int) Load 284(i64)
348: 18(int) SNegate 347
349: 52(ivec2) CompositeConstruct 348 348
352: 52(ivec2) Select 351 349 346
Store 281(i64v) 352
353: 40(ptr) AccessChain 294(u64v) 222
354: 14(int) Load 353
355: 40(ptr) AccessChain 294(u64v) 203
356: 14(int) Load 355
357: 14(int) Select 343 356 354
Store 296(u64) 357
358: 14(int) Load 296(u64)
359: 132(ivec3) CompositeConstruct 358 358 358
360: 14(int) Load 296(u64)
361: 14(int) SNegate 360
362: 132(ivec3) CompositeConstruct 361 361 361
365: 132(ivec3) Select 364 362 359
Store 294(u64v) 365
369: 366(fvec3) Load 368(dv)
370: 95(fvec2) VectorShuffle 369 369 0 1
371: 52(ivec2) Bitcast 370
Store 281(i64v) 371
373: 372(ptr) AccessChain 368(dv) 212
374: 94(float) Load 373
375: 14(int) Bitcast 374
376: 40(ptr) AccessChain 294(u64v) 222
Store 376 375
377: 52(ivec2) Load 281(i64v)
378: 95(fvec2) Bitcast 377
379: 366(fvec3) Load 368(dv)
380: 366(fvec3) VectorShuffle 379 378 3 4 2
Store 368(dv) 380
381: 132(ivec3) Load 294(u64v)
382: 366(fvec3) Bitcast 381
Store 368(dv) 382
386: 18(int) Bitcast 385
Store 284(i64) 386
388: 18(int) Load 284(i64)
389: 74(ivec2) Bitcast 388
Store 387(iv) 389
391: 14(int) Bitcast 390
Store 296(u64) 391
393: 14(int) Load 296(u64)
394: 81(ivec2) Bitcast 393
Store 392(uv) 394
397: 132(ivec3) Load 294(u64v)
398: 14(int) Load 296(u64)
399: 132(ivec3) CompositeConstruct 398 398 398
400: 363(bvec3) ULessThan 397 399
Store 396(bv) 400
401: 52(ivec2) Load 281(i64v)
402: 18(int) Load 284(i64)
403: 52(ivec2) CompositeConstruct 402 402
404: 56(bvec2) SLessThan 401 403
405: 363(bvec3) Load 396(bv)
406: 363(bvec3) VectorShuffle 405 404 3 4 2
Store 396(bv) 406
407: 132(ivec3) Load 294(u64v)
408: 14(int) Load 296(u64)
409: 132(ivec3) CompositeConstruct 408 408 408
410: 363(bvec3) ULessThanEqual 407 409
Store 396(bv) 410
411: 52(ivec2) Load 281(i64v)
412: 18(int) Load 284(i64)
413: 52(ivec2) CompositeConstruct 412 412
414: 56(bvec2) SLessThanEqual 411 413
415: 363(bvec3) Load 396(bv)
416: 363(bvec3) VectorShuffle 415 414 3 4 2
Store 396(bv) 416
417: 132(ivec3) Load 294(u64v)
418: 14(int) Load 296(u64)
419: 132(ivec3) CompositeConstruct 418 418 418
420: 363(bvec3) UGreaterThan 417 419
Store 396(bv) 420
421: 52(ivec2) Load 281(i64v)
422: 18(int) Load 284(i64)
423: 52(ivec2) CompositeConstruct 422 422
424: 56(bvec2) SGreaterThan 421 423
425: 363(bvec3) Load 396(bv)
426: 363(bvec3) VectorShuffle 425 424 3 4 2
Store 396(bv) 426
427: 132(ivec3) Load 294(u64v)
428: 14(int) Load 296(u64)
429: 132(ivec3) CompositeConstruct 428 428 428
430: 363(bvec3) UGreaterThanEqual 427 429
Store 396(bv) 430
431: 52(ivec2) Load 281(i64v)
432: 18(int) Load 284(i64)
433: 52(ivec2) CompositeConstruct 432 432
434: 56(bvec2) SGreaterThanEqual 431 433
435: 363(bvec3) Load 396(bv)
436: 363(bvec3) VectorShuffle 435 434 3 4 2
Store 396(bv) 436
437: 132(ivec3) Load 294(u64v)
438: 14(int) Load 296(u64)
439: 132(ivec3) CompositeConstruct 438 438 438
440: 363(bvec3) IEqual 437 439
Store 396(bv) 440
441: 52(ivec2) Load 281(i64v)
442: 18(int) Load 284(i64)
443: 52(ivec2) CompositeConstruct 442 442
444: 56(bvec2) IEqual 441 443
445: 363(bvec3) Load 396(bv)
446: 363(bvec3) VectorShuffle 445 444 3 4 2
Store 396(bv) 446
447: 132(ivec3) Load 294(u64v)
448: 14(int) Load 296(u64)
449: 132(ivec3) CompositeConstruct 448 448 448
450: 363(bvec3) INotEqual 447 449
Store 396(bv) 450
451: 52(ivec2) Load 281(i64v)
452: 18(int) Load 284(i64)
453: 52(ivec2) CompositeConstruct 452 452
454: 56(bvec2) INotEqual 451 453
455: 363(bvec3) Load 396(bv)
456: 363(bvec3) VectorShuffle 455 454 3 4 2
Store 396(bv) 456
286(i64v): 53(ptr) Variable Function
289(i64): 19(ptr) Variable Function
299(u64v): 133(ptr) Variable Function
301(u64): 40(ptr) Variable Function
373(dv): 372(ptr) Variable Function
392(iv): 75(ptr) Variable Function
397(uv): 82(ptr) Variable Function
401(bv): 400(ptr) Variable Function
287: 52(ivec2) Load 286(i64v)
288: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 287
Store 286(i64v) 288
290: 18(int) Load 289(i64)
291: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 290
Store 289(i64) 291
292: 52(ivec2) Load 286(i64v)
293: 18(int) Load 289(i64)
294: 52(ivec2) CompositeConstruct 293 293
295: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 292 294
Store 286(i64v) 295
296: 52(ivec2) Load 286(i64v)
298: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 296 297
Store 286(i64v) 298
300: 132(ivec3) Load 299(u64v)
302: 14(int) Load 301(u64)
303: 132(ivec3) CompositeConstruct 302 302 302
304: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 303
Store 299(u64v) 304
305: 132(ivec3) Load 299(u64v)
307: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 305 306
Store 299(u64v) 307
308: 52(ivec2) Load 286(i64v)
309: 18(int) Load 289(i64)
310: 52(ivec2) CompositeConstruct 309 309
311: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 308 310
Store 286(i64v) 311
312: 52(ivec2) Load 286(i64v)
313: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 312 297
Store 286(i64v) 313
314: 132(ivec3) Load 299(u64v)
315: 14(int) Load 301(u64)
316: 132(ivec3) CompositeConstruct 315 315 315
317: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 314 316
Store 299(u64v) 317
318: 132(ivec3) Load 299(u64v)
319: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 318 306
Store 299(u64v) 319
320: 52(ivec2) Load 286(i64v)
321: 18(int) Load 289(i64)
322: 18(int) SNegate 321
323: 18(int) Load 289(i64)
324: 52(ivec2) CompositeConstruct 322 322
325: 52(ivec2) CompositeConstruct 323 323
326: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 320 324 325
Store 286(i64v) 326
327: 52(ivec2) Load 286(i64v)
328: 52(ivec2) Load 286(i64v)
329: 52(ivec2) SNegate 328
330: 52(ivec2) Load 286(i64v)
331: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 327 329 330
Store 286(i64v) 331
332: 132(ivec3) Load 299(u64v)
333: 14(int) Load 301(u64)
334: 14(int) SNegate 333
335: 14(int) Load 301(u64)
336: 132(ivec3) CompositeConstruct 334 334 334
337: 132(ivec3) CompositeConstruct 335 335 335
338: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 332 336 337
Store 299(u64v) 338
339: 132(ivec3) Load 299(u64v)
340: 132(ivec3) Load 299(u64v)
341: 132(ivec3) SNegate 340
342: 132(ivec3) Load 299(u64v)
343: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 339 341 342
Store 299(u64v) 343
344: 19(ptr) AccessChain 286(i64v) 227
345: 18(int) Load 344
346: 19(ptr) AccessChain 286(i64v) 203
347: 18(int) Load 346
349: 18(int) Select 348 347 345
Store 289(i64) 349
350: 18(int) Load 289(i64)
351: 52(ivec2) CompositeConstruct 350 350
352: 18(int) Load 289(i64)
353: 18(int) SNegate 352
354: 52(ivec2) CompositeConstruct 353 353
357: 52(ivec2) Select 356 354 351
Store 286(i64v) 357
358: 40(ptr) AccessChain 299(u64v) 227
359: 14(int) Load 358
360: 40(ptr) AccessChain 299(u64v) 203
361: 14(int) Load 360
362: 14(int) Select 348 361 359
Store 301(u64) 362
363: 14(int) Load 301(u64)
364: 132(ivec3) CompositeConstruct 363 363 363
365: 14(int) Load 301(u64)
366: 14(int) SNegate 365
367: 132(ivec3) CompositeConstruct 366 366 366
370: 132(ivec3) Select 369 367 364
Store 299(u64v) 370
374: 371(fvec3) Load 373(dv)
375: 95(fvec2) VectorShuffle 374 374 0 1
376: 52(ivec2) Bitcast 375
Store 286(i64v) 376
378: 377(ptr) AccessChain 373(dv) 217
379: 94(float) Load 378
380: 14(int) Bitcast 379
381: 40(ptr) AccessChain 299(u64v) 227
Store 381 380
382: 52(ivec2) Load 286(i64v)
383: 95(fvec2) Bitcast 382
384: 371(fvec3) Load 373(dv)
385: 371(fvec3) VectorShuffle 384 383 3 4 2
Store 373(dv) 385
386: 132(ivec3) Load 299(u64v)
387: 371(fvec3) Bitcast 386
Store 373(dv) 387
391: 18(int) Bitcast 390
Store 289(i64) 391
393: 18(int) Load 289(i64)
394: 74(ivec2) Bitcast 393
Store 392(iv) 394
396: 14(int) Bitcast 395
Store 301(u64) 396
398: 14(int) Load 301(u64)
399: 81(ivec2) Bitcast 398
Store 397(uv) 399
402: 132(ivec3) Load 299(u64v)
403: 14(int) Load 301(u64)
404: 132(ivec3) CompositeConstruct 403 403 403
405: 368(bvec3) ULessThan 402 404
Store 401(bv) 405
406: 52(ivec2) Load 286(i64v)
407: 18(int) Load 289(i64)
408: 52(ivec2) CompositeConstruct 407 407
409: 56(bvec2) SLessThan 406 408
410: 368(bvec3) Load 401(bv)
411: 368(bvec3) VectorShuffle 410 409 3 4 2
Store 401(bv) 411
412: 132(ivec3) Load 299(u64v)
413: 14(int) Load 301(u64)
414: 132(ivec3) CompositeConstruct 413 413 413
415: 368(bvec3) ULessThanEqual 412 414
Store 401(bv) 415
416: 52(ivec2) Load 286(i64v)
417: 18(int) Load 289(i64)
418: 52(ivec2) CompositeConstruct 417 417
419: 56(bvec2) SLessThanEqual 416 418
420: 368(bvec3) Load 401(bv)
421: 368(bvec3) VectorShuffle 420 419 3 4 2
Store 401(bv) 421
422: 132(ivec3) Load 299(u64v)
423: 14(int) Load 301(u64)
424: 132(ivec3) CompositeConstruct 423 423 423
425: 368(bvec3) UGreaterThan 422 424
Store 401(bv) 425
426: 52(ivec2) Load 286(i64v)
427: 18(int) Load 289(i64)
428: 52(ivec2) CompositeConstruct 427 427
429: 56(bvec2) SGreaterThan 426 428
430: 368(bvec3) Load 401(bv)
431: 368(bvec3) VectorShuffle 430 429 3 4 2
Store 401(bv) 431
432: 132(ivec3) Load 299(u64v)
433: 14(int) Load 301(u64)
434: 132(ivec3) CompositeConstruct 433 433 433
435: 368(bvec3) UGreaterThanEqual 432 434
Store 401(bv) 435
436: 52(ivec2) Load 286(i64v)
437: 18(int) Load 289(i64)
438: 52(ivec2) CompositeConstruct 437 437
439: 56(bvec2) SGreaterThanEqual 436 438
440: 368(bvec3) Load 401(bv)
441: 368(bvec3) VectorShuffle 440 439 3 4 2
Store 401(bv) 441
442: 132(ivec3) Load 299(u64v)
443: 14(int) Load 301(u64)
444: 132(ivec3) CompositeConstruct 443 443 443
445: 368(bvec3) IEqual 442 444
Store 401(bv) 445
446: 52(ivec2) Load 286(i64v)
447: 18(int) Load 289(i64)
448: 52(ivec2) CompositeConstruct 447 447
449: 56(bvec2) IEqual 446 448
450: 368(bvec3) Load 401(bv)
451: 368(bvec3) VectorShuffle 450 449 3 4 2
Store 401(bv) 451
452: 132(ivec3) Load 299(u64v)
453: 14(int) Load 301(u64)
454: 132(ivec3) CompositeConstruct 453 453 453
455: 368(bvec3) INotEqual 452 454
Store 401(bv) 455
456: 52(ivec2) Load 286(i64v)
457: 18(int) Load 289(i64)
458: 52(ivec2) CompositeConstruct 457 457
459: 56(bvec2) INotEqual 456 458
460: 368(bvec3) Load 401(bv)
461: 368(bvec3) VectorShuffle 460 459 3 4 2
Store 401(bv) 461
Return
FunctionEnd

View File

@ -0,0 +1,57 @@
spv.rankShift.comp
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 33
Capability Shader
Capability Int64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 54 1 1
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
Name 4 "main"
Name 8 "result"
Name 11 "arg0"
Name 15 "arg1"
Decorate 11(arg0) Location 4
Decorate 15(arg1) Location 5
Decorate 32 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 64 0
7: TypePointer Function 6(int)
9: TypeInt 64 1
10: TypePointer UniformConstant 9(int)
11(arg0): 10(ptr) Variable UniformConstant
13: TypeInt 32 0
14: TypePointer UniformConstant 13(int)
15(arg1): 14(ptr) Variable UniformConstant
29: TypeVector 13(int) 3
30: 13(int) Constant 54
31: 13(int) Constant 1
32: 29(ivec3) ConstantComposite 30 31 31
4(main): 2 Function None 3
5: Label
8(result): 7(ptr) Variable Function
12: 9(int) Load 11(arg0)
16: 13(int) Load 15(arg1)
17: 9(int) ShiftLeftLogical 12 16
18: 6(int) Bitcast 17
Store 8(result) 18
19: 9(int) Load 11(arg0)
20: 13(int) Load 15(arg1)
21: 9(int) ShiftRightArithmetic 19 20
22: 6(int) Bitcast 21
Store 8(result) 22
23: 13(int) Load 15(arg1)
24: 6(int) Load 8(result)
25: 6(int) ShiftLeftLogical 24 23
Store 8(result) 25
26: 13(int) Load 15(arg1)
27: 6(int) Load 8(result)
28: 6(int) ShiftRightLogical 27 26
Store 8(result) 28
Return
FunctionEnd

View File

@ -1,7 +1,7 @@
spv.vulkan110.int16.frag
// Module Version 10300
// Generated by (magic number): 80006
// Id's are bound by 525
// Id's are bound by 523
Capability Shader
Capability Float16
@ -52,48 +52,48 @@ spv.vulkan110.int16.frag
Name 220 "i"
Name 227 "uv"
Name 243 "i64"
Name 283 "b"
Name 345 "i16v"
Name 348 "i16"
Name 358 "u16v"
Name 360 "u16"
Name 430 "i32"
Name 433 "i64"
Name 436 "i16v4"
Name 439 "u32"
Name 440 "u16v2"
Name 444 "u64"
Name 447 "u16v4"
Name 459 "bv"
Name 520 "Block"
MemberName 520(Block) 0 "i16"
MemberName 520(Block) 1 "i16v2"
MemberName 520(Block) 2 "i16v3"
MemberName 520(Block) 3 "i16v4"
MemberName 520(Block) 4 "u16"
MemberName 520(Block) 5 "u16v2"
MemberName 520(Block) 6 "u16v3"
MemberName 520(Block) 7 "u16v4"
Name 522 "block"
Name 523 "si16"
Name 524 "su16"
Name 281 "b"
Name 343 "i16v"
Name 346 "i16"
Name 356 "u16v"
Name 358 "u16"
Name 428 "i32"
Name 431 "i64"
Name 434 "i16v4"
Name 437 "u32"
Name 438 "u16v2"
Name 442 "u64"
Name 445 "u16v4"
Name 457 "bv"
Name 518 "Block"
MemberName 518(Block) 0 "i16"
MemberName 518(Block) 1 "i16v2"
MemberName 518(Block) 2 "i16v3"
MemberName 518(Block) 3 "i16v4"
MemberName 518(Block) 4 "u16"
MemberName 518(Block) 5 "u16v2"
MemberName 518(Block) 6 "u16v3"
MemberName 518(Block) 7 "u16v4"
Name 520 "block"
Name 521 "si16"
Name 522 "su16"
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
MemberDecorate 520(Block) 0 Offset 0
MemberDecorate 520(Block) 1 Offset 4
MemberDecorate 520(Block) 2 Offset 8
MemberDecorate 520(Block) 3 Offset 16
MemberDecorate 520(Block) 4 Offset 24
MemberDecorate 520(Block) 5 Offset 28
MemberDecorate 520(Block) 6 Offset 32
MemberDecorate 520(Block) 7 Offset 40
Decorate 520(Block) Block
Decorate 522(block) DescriptorSet 0
Decorate 522(block) Binding 1
Decorate 523(si16) SpecId 100
Decorate 524(su16) SpecId 101
MemberDecorate 518(Block) 0 Offset 0
MemberDecorate 518(Block) 1 Offset 4
MemberDecorate 518(Block) 2 Offset 8
MemberDecorate 518(Block) 3 Offset 16
MemberDecorate 518(Block) 4 Offset 24
MemberDecorate 518(Block) 5 Offset 28
MemberDecorate 518(Block) 6 Offset 32
MemberDecorate 518(Block) 7 Offset 40
Decorate 518(Block) Block
Decorate 520(block) DescriptorSet 0
Decorate 520(block) Binding 1
Decorate 521(si16) SpecId 100
Decorate 522(su16) SpecId 101
2: TypeVoid
3: TypeFunction 2
14: TypeInt 16 1
@ -168,28 +168,28 @@ spv.vulkan110.int16.frag
242: TypePointer Function 71(int)
264: 17(int) Constant 1
270: 17(int) Constant 2
275: TypeVector 27(int) 3
282: TypePointer Function 173(bool)
284: 17(int) Constant 0
298: TypePointer Function 17(int)
356: 52(ivec2) ConstantComposite 21 21
365: 193(ivec3) ConstantComposite 184 184 184
407: 173(bool) ConstantTrue
414: 173(bool) ConstantFalse
415: 174(bvec2) ConstantComposite 414 414
427: TypeVector 173(bool) 3
428: 427(bvec3) ConstantComposite 414 414 414
434: TypeVector 14(int) 4
435: TypePointer Function 434(ivec4)
443: TypePointer Function 77(int)
445: TypeVector 36(int) 4
446: TypePointer Function 445(ivec4)
458: TypePointer Function 427(bvec3)
520(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445(ivec4)
521: TypePointer Uniform 520(Block)
522(block): 521(ptr) Variable Uniform
523(si16): 14(int) SpecConstant 4294967286
524(su16): 36(int) SpecConstant 20
276: TypeVector 27(int) 3
280: TypePointer Function 173(bool)
282: 17(int) Constant 0
296: TypePointer Function 17(int)
354: 52(ivec2) ConstantComposite 21 21
363: 193(ivec3) ConstantComposite 184 184 184
405: 173(bool) ConstantTrue
412: 173(bool) ConstantFalse
413: 174(bvec2) ConstantComposite 412 412
425: TypeVector 173(bool) 3
426: 425(bvec3) ConstantComposite 412 412 412
432: TypeVector 14(int) 4
433: TypePointer Function 432(ivec4)
441: TypePointer Function 77(int)
443: TypeVector 36(int) 4
444: TypePointer Function 443(ivec4)
456: TypePointer Function 425(bvec3)
518(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443(ivec4)
519: TypePointer Uniform 518(Block)
520(block): 519(ptr) Variable Uniform
521(si16): 14(int) SpecConstant 4294967286
522(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
5: Label
Return
@ -368,7 +368,7 @@ spv.vulkan110.int16.frag
220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
243(i64): 242(ptr) Variable Function
283(b): 282(ptr) Variable Function
281(b): 280(ptr) Variable Function
196: 193(ivec3) Load 195(u16v)
198: 197(ivec3) CompositeConstruct 179 179 179
199: 193(ivec3) IAdd 196 198
@ -457,287 +457,285 @@ spv.vulkan110.int16.frag
273: 14(int) ShiftLeftLogical 269 272
Store 200(i16) 273
274: 193(ivec3) Load 195(u16v)
276: 275(ivec3) UConvert 274
277: 275(ivec3) Bitcast 276
278: 27(int) Load 220(i)
279: 275(ivec3) CompositeConstruct 278 278 278
280: 275(ivec3) ShiftLeftLogical 277 279
281: 225(ivec3) Bitcast 280
Store 227(uv) 281
285: 37(ptr) AccessChain 195(u16v) 284
286: 36(int) Load 285
287: 14(int) Load 200(i16)
288: 36(int) Bitcast 287
289: 173(bool) INotEqual 286 288
Store 283(b) 289
290: 14(int) Load 200(i16)
291: 36(int) Bitcast 290
292: 37(ptr) AccessChain 195(u16v) 284
293: 36(int) Load 292
294: 173(bool) IEqual 291 293
Store 283(b) 294
295: 37(ptr) AccessChain 195(u16v) 284
296: 36(int) Load 295
297: 17(int) UConvert 296
299: 298(ptr) AccessChain 227(uv) 264
300: 17(int) Load 299
301: 173(bool) UGreaterThan 297 300
Store 283(b) 301
302: 14(int) Load 200(i16)
303: 27(int) SConvert 302
304: 27(int) Load 220(i)
305: 173(bool) SLessThan 303 304
Store 283(b) 305
306: 37(ptr) AccessChain 195(u16v) 264
307: 36(int) Load 306
308: 17(int) UConvert 307
309: 298(ptr) AccessChain 227(uv) 284
310: 17(int) Load 309
311: 173(bool) UGreaterThanEqual 308 310
Store 283(b) 311
312: 14(int) Load 200(i16)
313: 27(int) SConvert 312
314: 27(int) Load 220(i)
315: 173(bool) SLessThanEqual 313 314
Store 283(b) 315
316: 14(int) Load 200(i16)
317: 27(int) SConvert 316
318: 17(int) Bitcast 317
319: 225(ivec3) Load 227(uv)
320: 225(ivec3) CompositeConstruct 318 318 318
321: 225(ivec3) BitwiseOr 319 320
Store 227(uv) 321
322: 14(int) Load 200(i16)
323: 27(int) SConvert 322
324: 27(int) Load 220(i)
325: 27(int) BitwiseOr 323 324
Store 220(i) 325
326: 14(int) Load 200(i16)
327: 71(int) SConvert 326
328: 71(int) Load 243(i64)
329: 71(int) BitwiseAnd 328 327
Store 243(i64) 329
330: 193(ivec3) Load 195(u16v)
331: 225(ivec3) UConvert 330
332: 225(ivec3) Load 227(uv)
333: 225(ivec3) BitwiseAnd 331 332
Store 227(uv) 333
334: 14(int) Load 200(i16)
335: 27(int) SConvert 334
336: 17(int) Bitcast 335
337: 225(ivec3) Load 227(uv)
338: 225(ivec3) CompositeConstruct 336 336 336
339: 225(ivec3) BitwiseXor 337 338
Store 227(uv) 339
340: 193(ivec3) Load 195(u16v)
341: 14(int) Load 200(i16)
342: 36(int) Bitcast 341
343: 193(ivec3) CompositeConstruct 342 342 342
344: 193(ivec3) BitwiseXor 340 343
Store 195(u16v) 344
275: 27(int) Load 220(i)
277: 276(ivec3) CompositeConstruct 275 275 275
278: 193(ivec3) ShiftLeftLogical 274 277
279: 225(ivec3) UConvert 278
Store 227(uv) 279
283: 37(ptr) AccessChain 195(u16v) 282
284: 36(int) Load 283
285: 14(int) Load 200(i16)
286: 36(int) Bitcast 285
287: 173(bool) INotEqual 284 286
Store 281(b) 287
288: 14(int) Load 200(i16)
289: 36(int) Bitcast 288
290: 37(ptr) AccessChain 195(u16v) 282
291: 36(int) Load 290
292: 173(bool) IEqual 289 291
Store 281(b) 292
293: 37(ptr) AccessChain 195(u16v) 282
294: 36(int) Load 293
295: 17(int) UConvert 294
297: 296(ptr) AccessChain 227(uv) 264
298: 17(int) Load 297
299: 173(bool) UGreaterThan 295 298
Store 281(b) 299
300: 14(int) Load 200(i16)
301: 27(int) SConvert 300
302: 27(int) Load 220(i)
303: 173(bool) SLessThan 301 302
Store 281(b) 303
304: 37(ptr) AccessChain 195(u16v) 264
305: 36(int) Load 304
306: 17(int) UConvert 305
307: 296(ptr) AccessChain 227(uv) 282
308: 17(int) Load 307
309: 173(bool) UGreaterThanEqual 306 308
Store 281(b) 309
310: 14(int) Load 200(i16)
311: 27(int) SConvert 310
312: 27(int) Load 220(i)
313: 173(bool) SLessThanEqual 311 312
Store 281(b) 313
314: 14(int) Load 200(i16)
315: 27(int) SConvert 314
316: 17(int) Bitcast 315
317: 225(ivec3) Load 227(uv)
318: 225(ivec3) CompositeConstruct 316 316 316
319: 225(ivec3) BitwiseOr 317 318
Store 227(uv) 319
320: 14(int) Load 200(i16)
321: 27(int) SConvert 320
322: 27(int) Load 220(i)
323: 27(int) BitwiseOr 321 322
Store 220(i) 323
324: 14(int) Load 200(i16)
325: 71(int) SConvert 324
326: 71(int) Load 243(i64)
327: 71(int) BitwiseAnd 326 325
Store 243(i64) 327
328: 193(ivec3) Load 195(u16v)
329: 225(ivec3) UConvert 328
330: 225(ivec3) Load 227(uv)
331: 225(ivec3) BitwiseAnd 329 330
Store 227(uv) 331
332: 14(int) Load 200(i16)
333: 27(int) SConvert 332
334: 17(int) Bitcast 333
335: 225(ivec3) Load 227(uv)
336: 225(ivec3) CompositeConstruct 334 334 334
337: 225(ivec3) BitwiseXor 335 336
Store 227(uv) 337
338: 193(ivec3) Load 195(u16v)
339: 14(int) Load 200(i16)
340: 36(int) Bitcast 339
341: 193(ivec3) CompositeConstruct 340 340 340
342: 193(ivec3) BitwiseXor 338 341
Store 195(u16v) 342
Return
FunctionEnd
12(builtinFuncs(): 2 Function None 3
13: Label
345(i16v): 53(ptr) Variable Function
348(i16): 15(ptr) Variable Function
358(u16v): 194(ptr) Variable Function
360(u16): 37(ptr) Variable Function
430(i32): 219(ptr) Variable Function
433(i64): 242(ptr) Variable Function
436(i16v4): 435(ptr) Variable Function
439(u32): 298(ptr) Variable Function
440(u16v2): 58(ptr) Variable Function
444(u64): 443(ptr) Variable Function
447(u16v4): 446(ptr) Variable Function
459(bv): 458(ptr) Variable Function
346: 52(ivec2) Load 345(i16v)
347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
Store 345(i16v) 347
349: 14(int) Load 348(i16)
350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
Store 348(i16) 350
351: 52(ivec2) Load 345(i16v)
352: 14(int) Load 348(i16)
353: 52(ivec2) CompositeConstruct 352 352
354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
Store 345(i16v) 354
355: 52(ivec2) Load 345(i16v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
Store 345(i16v) 357
359: 193(ivec3) Load 358(u16v)
361: 36(int) Load 360(u16)
362: 193(ivec3) CompositeConstruct 361 361 361
363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
Store 358(u16v) 363
364: 193(ivec3) Load 358(u16v)
366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
Store 358(u16v) 366
367: 52(ivec2) Load 345(i16v)
368: 14(int) Load 348(i16)
369: 52(ivec2) CompositeConstruct 368 368
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
Store 345(i16v) 370
371: 52(ivec2) Load 345(i16v)
372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
Store 345(i16v) 372
373: 193(ivec3) Load 358(u16v)
374: 36(int) Load 360(u16)
375: 193(ivec3) CompositeConstruct 374 374 374
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
Store 358(u16v) 376
377: 193(ivec3) Load 358(u16v)
378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
Store 358(u16v) 378
379: 52(ivec2) Load 345(i16v)
380: 14(int) Load 348(i16)
381: 14(int) SNegate 380
382: 14(int) Load 348(i16)
383: 52(ivec2) CompositeConstruct 381 381
384: 52(ivec2) CompositeConstruct 382 382
385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
Store 345(i16v) 385
386: 52(ivec2) Load 345(i16v)
387: 52(ivec2) Load 345(i16v)
388: 52(ivec2) SNegate 387
389: 52(ivec2) Load 345(i16v)
390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
Store 345(i16v) 390
391: 193(ivec3) Load 358(u16v)
392: 36(int) Load 360(u16)
393: 36(int) SNegate 392
394: 36(int) Load 360(u16)
395: 193(ivec3) CompositeConstruct 393 393 393
396: 193(ivec3) CompositeConstruct 394 394 394
397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
Store 358(u16v) 397
398: 193(ivec3) Load 358(u16v)
399: 193(ivec3) Load 358(u16v)
400: 193(ivec3) SNegate 399
401: 193(ivec3) Load 358(u16v)
402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
Store 358(u16v) 402
403: 15(ptr) AccessChain 345(i16v) 284
343(i16v): 53(ptr) Variable Function
346(i16): 15(ptr) Variable Function
356(u16v): 194(ptr) Variable Function
358(u16): 37(ptr) Variable Function
428(i32): 219(ptr) Variable Function
431(i64): 242(ptr) Variable Function
434(i16v4): 433(ptr) Variable Function
437(u32): 296(ptr) Variable Function
438(u16v2): 58(ptr) Variable Function
442(u64): 441(ptr) Variable Function
445(u16v4): 444(ptr) Variable Function
457(bv): 456(ptr) Variable Function
344: 52(ivec2) Load 343(i16v)
345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
Store 343(i16v) 345
347: 14(int) Load 346(i16)
348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347
Store 346(i16) 348
349: 52(ivec2) Load 343(i16v)
350: 14(int) Load 346(i16)
351: 52(ivec2) CompositeConstruct 350 350
352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
Store 343(i16v) 352
353: 52(ivec2) Load 343(i16v)
355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
Store 343(i16v) 355
357: 193(ivec3) Load 356(u16v)
359: 36(int) Load 358(u16)
360: 193(ivec3) CompositeConstruct 359 359 359
361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
Store 356(u16v) 361
362: 193(ivec3) Load 356(u16v)
364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
Store 356(u16v) 364
365: 52(ivec2) Load 343(i16v)
366: 14(int) Load 346(i16)
367: 52(ivec2) CompositeConstruct 366 366
368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
Store 343(i16v) 368
369: 52(ivec2) Load 343(i16v)
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
Store 343(i16v) 370
371: 193(ivec3) Load 356(u16v)
372: 36(int) Load 358(u16)
373: 193(ivec3) CompositeConstruct 372 372 372
374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
Store 356(u16v) 374
375: 193(ivec3) Load 356(u16v)
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
Store 356(u16v) 376
377: 52(ivec2) Load 343(i16v)
378: 14(int) Load 346(i16)
379: 14(int) SNegate 378
380: 14(int) Load 346(i16)
381: 52(ivec2) CompositeConstruct 379 379
382: 52(ivec2) CompositeConstruct 380 380
383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
Store 343(i16v) 383
384: 52(ivec2) Load 343(i16v)
385: 52(ivec2) Load 343(i16v)
386: 52(ivec2) SNegate 385
387: 52(ivec2) Load 343(i16v)
388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
Store 343(i16v) 388
389: 193(ivec3) Load 356(u16v)
390: 36(int) Load 358(u16)
391: 36(int) SNegate 390
392: 36(int) Load 358(u16)
393: 193(ivec3) CompositeConstruct 391 391 391
394: 193(ivec3) CompositeConstruct 392 392 392
395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
Store 356(u16v) 395
396: 193(ivec3) Load 356(u16v)
397: 193(ivec3) Load 356(u16v)
398: 193(ivec3) SNegate 397
399: 193(ivec3) Load 356(u16v)
400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
Store 356(u16v) 400
401: 15(ptr) AccessChain 343(i16v) 282
402: 14(int) Load 401
403: 15(ptr) AccessChain 343(i16v) 264
404: 14(int) Load 403
405: 15(ptr) AccessChain 345(i16v) 264
406: 14(int) Load 405
408: 14(int) Select 407 406 404
Store 348(i16) 408
409: 14(int) Load 348(i16)
410: 52(ivec2) CompositeConstruct 409 409
411: 14(int) Load 348(i16)
412: 14(int) SNegate 411
413: 52(ivec2) CompositeConstruct 412 412
416: 52(ivec2) Select 415 413 410
Store 345(i16v) 416
417: 37(ptr) AccessChain 358(u16v) 284
406: 14(int) Select 405 404 402
Store 346(i16) 406
407: 14(int) Load 346(i16)
408: 52(ivec2) CompositeConstruct 407 407
409: 14(int) Load 346(i16)
410: 14(int) SNegate 409
411: 52(ivec2) CompositeConstruct 410 410
414: 52(ivec2) Select 413 411 408
Store 343(i16v) 414
415: 37(ptr) AccessChain 356(u16v) 282
416: 36(int) Load 415
417: 37(ptr) AccessChain 356(u16v) 264
418: 36(int) Load 417
419: 37(ptr) AccessChain 358(u16v) 264
420: 36(int) Load 419
421: 36(int) Select 407 420 418
Store 360(u16) 421
422: 36(int) Load 360(u16)
423: 193(ivec3) CompositeConstruct 422 422 422
424: 36(int) Load 360(u16)
425: 36(int) SNegate 424
426: 193(ivec3) CompositeConstruct 425 425 425
429: 193(ivec3) Select 428 426 423
Store 358(u16v) 429
431: 52(ivec2) Load 345(i16v)
432: 27(int) Bitcast 431
Store 430(i32) 432
437: 434(ivec4) Load 436(i16v4)
438: 71(int) Bitcast 437
Store 433(i64) 438
441: 57(ivec2) Load 440(u16v2)
442: 17(int) Bitcast 441
Store 439(u32) 442
448: 445(ivec4) Load 447(u16v4)
449: 77(int) Bitcast 448
Store 444(u64) 449
450: 27(int) Load 430(i32)
451: 52(ivec2) Bitcast 450
Store 345(i16v) 451
452: 71(int) Load 433(i64)
453: 434(ivec4) Bitcast 452
Store 436(i16v4) 453
454: 17(int) Load 439(u32)
455: 57(ivec2) Bitcast 454
Store 440(u16v2) 455
456: 77(int) Load 444(u64)
457: 445(ivec4) Bitcast 456
Store 447(u16v4) 457
460: 193(ivec3) Load 358(u16v)
461: 36(int) Load 360(u16)
462: 193(ivec3) CompositeConstruct 461 461 461
463: 427(bvec3) ULessThan 460 462
Store 459(bv) 463
464: 52(ivec2) Load 345(i16v)
465: 14(int) Load 348(i16)
466: 52(ivec2) CompositeConstruct 465 465
467: 174(bvec2) SLessThan 464 466
468: 427(bvec3) Load 459(bv)
469: 427(bvec3) VectorShuffle 468 467 3 4 2
Store 459(bv) 469
470: 193(ivec3) Load 358(u16v)
471: 36(int) Load 360(u16)
472: 193(ivec3) CompositeConstruct 471 471 471
473: 427(bvec3) ULessThanEqual 470 472
Store 459(bv) 473
474: 52(ivec2) Load 345(i16v)
475: 14(int) Load 348(i16)
476: 52(ivec2) CompositeConstruct 475 475
477: 174(bvec2) SLessThanEqual 474 476
478: 427(bvec3) Load 459(bv)
479: 427(bvec3) VectorShuffle 478 477 3 4 2
Store 459(bv) 479
480: 193(ivec3) Load 358(u16v)
481: 36(int) Load 360(u16)
482: 193(ivec3) CompositeConstruct 481 481 481
483: 427(bvec3) UGreaterThan 480 482
Store 459(bv) 483
484: 52(ivec2) Load 345(i16v)
485: 14(int) Load 348(i16)
486: 52(ivec2) CompositeConstruct 485 485
487: 174(bvec2) SGreaterThan 484 486
488: 427(bvec3) Load 459(bv)
489: 427(bvec3) VectorShuffle 488 487 3 4 2
Store 459(bv) 489
490: 193(ivec3) Load 358(u16v)
491: 36(int) Load 360(u16)
492: 193(ivec3) CompositeConstruct 491 491 491
493: 427(bvec3) UGreaterThanEqual 490 492
Store 459(bv) 493
494: 52(ivec2) Load 345(i16v)
495: 14(int) Load 348(i16)
496: 52(ivec2) CompositeConstruct 495 495
497: 174(bvec2) SGreaterThanEqual 494 496
498: 427(bvec3) Load 459(bv)
499: 427(bvec3) VectorShuffle 498 497 3 4 2
Store 459(bv) 499
500: 193(ivec3) Load 358(u16v)
501: 36(int) Load 360(u16)
502: 193(ivec3) CompositeConstruct 501 501 501
503: 427(bvec3) IEqual 500 502
Store 459(bv) 503
504: 52(ivec2) Load 345(i16v)
505: 14(int) Load 348(i16)
506: 52(ivec2) CompositeConstruct 505 505
507: 174(bvec2) IEqual 504 506
508: 427(bvec3) Load 459(bv)
509: 427(bvec3) VectorShuffle 508 507 3 4 2
Store 459(bv) 509
510: 193(ivec3) Load 358(u16v)
511: 36(int) Load 360(u16)
512: 193(ivec3) CompositeConstruct 511 511 511
513: 427(bvec3) INotEqual 510 512
Store 459(bv) 513
514: 52(ivec2) Load 345(i16v)
515: 14(int) Load 348(i16)
516: 52(ivec2) CompositeConstruct 515 515
517: 174(bvec2) INotEqual 514 516
518: 427(bvec3) Load 459(bv)
519: 427(bvec3) VectorShuffle 518 517 3 4 2
Store 459(bv) 519
419: 36(int) Select 405 418 416
Store 358(u16) 419
420: 36(int) Load 358(u16)
421: 193(ivec3) CompositeConstruct 420 420 420
422: 36(int) Load 358(u16)
423: 36(int) SNegate 422
424: 193(ivec3) CompositeConstruct 423 423 423
427: 193(ivec3) Select 426 424 421
Store 356(u16v) 427
429: 52(ivec2) Load 343(i16v)
430: 27(int) Bitcast 429
Store 428(i32) 430
435: 432(ivec4) Load 434(i16v4)
436: 71(int) Bitcast 435
Store 431(i64) 436
439: 57(ivec2) Load 438(u16v2)
440: 17(int) Bitcast 439
Store 437(u32) 440
446: 443(ivec4) Load 445(u16v4)
447: 77(int) Bitcast 446
Store 442(u64) 447
448: 27(int) Load 428(i32)
449: 52(ivec2) Bitcast 448
Store 343(i16v) 449
450: 71(int) Load 431(i64)
451: 432(ivec4) Bitcast 450
Store 434(i16v4) 451
452: 17(int) Load 437(u32)
453: 57(ivec2) Bitcast 452
Store 438(u16v2) 453
454: 77(int) Load 442(u64)
455: 443(ivec4) Bitcast 454
Store 445(u16v4) 455
458: 193(ivec3) Load 356(u16v)
459: 36(int) Load 358(u16)
460: 193(ivec3) CompositeConstruct 459 459 459
461: 425(bvec3) ULessThan 458 460
Store 457(bv) 461
462: 52(ivec2) Load 343(i16v)
463: 14(int) Load 346(i16)
464: 52(ivec2) CompositeConstruct 463 463
465: 174(bvec2) SLessThan 462 464
466: 425(bvec3) Load 457(bv)
467: 425(bvec3) VectorShuffle 466 465 3 4 2
Store 457(bv) 467
468: 193(ivec3) Load 356(u16v)
469: 36(int) Load 358(u16)
470: 193(ivec3) CompositeConstruct 469 469 469
471: 425(bvec3) ULessThanEqual 468 470
Store 457(bv) 471
472: 52(ivec2) Load 343(i16v)
473: 14(int) Load 346(i16)
474: 52(ivec2) CompositeConstruct 473 473
475: 174(bvec2) SLessThanEqual 472 474
476: 425(bvec3) Load 457(bv)
477: 425(bvec3) VectorShuffle 476 475 3 4 2
Store 457(bv) 477
478: 193(ivec3) Load 356(u16v)
479: 36(int) Load 358(u16)
480: 193(ivec3) CompositeConstruct 479 479 479
481: 425(bvec3) UGreaterThan 478 480
Store 457(bv) 481
482: 52(ivec2) Load 343(i16v)
483: 14(int) Load 346(i16)
484: 52(ivec2) CompositeConstruct 483 483
485: 174(bvec2) SGreaterThan 482 484
486: 425(bvec3) Load 457(bv)
487: 425(bvec3) VectorShuffle 486 485 3 4 2
Store 457(bv) 487
488: 193(ivec3) Load 356(u16v)
489: 36(int) Load 358(u16)
490: 193(ivec3) CompositeConstruct 489 489 489
491: 425(bvec3) UGreaterThanEqual 488 490
Store 457(bv) 491
492: 52(ivec2) Load 343(i16v)
493: 14(int) Load 346(i16)
494: 52(ivec2) CompositeConstruct 493 493
495: 174(bvec2) SGreaterThanEqual 492 494
496: 425(bvec3) Load 457(bv)
497: 425(bvec3) VectorShuffle 496 495 3 4 2
Store 457(bv) 497
498: 193(ivec3) Load 356(u16v)
499: 36(int) Load 358(u16)
500: 193(ivec3) CompositeConstruct 499 499 499
501: 425(bvec3) IEqual 498 500
Store 457(bv) 501
502: 52(ivec2) Load 343(i16v)
503: 14(int) Load 346(i16)
504: 52(ivec2) CompositeConstruct 503 503
505: 174(bvec2) IEqual 502 504
506: 425(bvec3) Load 457(bv)
507: 425(bvec3) VectorShuffle 506 505 3 4 2
Store 457(bv) 507
508: 193(ivec3) Load 356(u16v)
509: 36(int) Load 358(u16)
510: 193(ivec3) CompositeConstruct 509 509 509
511: 425(bvec3) INotEqual 508 510
Store 457(bv) 511
512: 52(ivec2) Load 343(i16v)
513: 14(int) Load 346(i16)
514: 52(ivec2) CompositeConstruct 513 513
515: 174(bvec2) INotEqual 512 514
516: 425(bvec3) Load 457(bv)
517: 425(bvec3) VectorShuffle 516 515 3 4 2
Store 457(bv) 517
Return
FunctionEnd

View File

@ -116,6 +116,8 @@ void operators()
i64 = i64 % i;
// Shift
u64v = u64v << i;
i64 = i64 >> uv.y;
u64v <<= i;
i64 >>= uv.y;

15
Test/spv.rankShift.comp Normal file
View File

@ -0,0 +1,15 @@
#version 450
#extension GL_ARB_gpu_shader_int64 : require
layout(local_size_x = 54) in;
layout(location=4) uniform int64_t arg0;
layout(location=5) uniform uint arg1;
void main()
{
uint64_t result = arg0 << arg1;
result = arg0 >> arg1;
result <<= arg1;
result >>= arg1;
}

View File

@ -744,9 +744,6 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
auto promoteTo = std::make_tuple(EbtNumTypes, EbtNumTypes);
TBasicType type0 = node0->getType().getBasicType();
TBasicType type1 = node1->getType().getBasicType();
switch (op) {
//
// List all the binary ops that can implicitly convert one operand to the other's type;
@ -776,10 +773,10 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
case EOpSequence: // used by ?:
if (type0 == type1)
if (node0->getBasicType() == node1->getBasicType())
return std::make_tuple(node0, node1);
promoteTo = getConversionDestinatonType(type0, type1, op);
promoteTo = getConversionDestinatonType(node0->getBasicType(), node1->getBasicType(), op);
if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes)
return std::make_tuple(nullptr, nullptr);
@ -794,23 +791,25 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
return std::make_tuple(node0, node1);
break;
// Shifts can have mixed types as long as they are integer and of the same rank,
// without converting.
// There are no conversions needed for GLSL; the shift amount just needs to be an
// integer type, as does the base.
// HLSL can promote bools to ints to make this work.
case EOpLeftShift:
case EOpRightShift:
if (node0->getType() == node1->getType())
return std::make_tuple(node0, node1);
if (isTypeInt(type0) && isTypeInt(type1)) {
if (getTypeRank(type0) == getTypeRank(type1)) {
if (source == EShSourceHlsl) {
TBasicType node0BasicType = node0->getBasicType();
if (node0BasicType == EbtBool)
node0BasicType = EbtInt;
if (node1->getBasicType() == EbtBool)
promoteTo = std::make_tuple(node0BasicType, EbtInt);
else
promoteTo = std::make_tuple(node0BasicType, node1->getBasicType());
} else {
if (isTypeInt(node0->getBasicType()) && isTypeInt(node1->getBasicType()))
return std::make_tuple(node0, node1);
} else {
promoteTo = getConversionDestinatonType(type0, type1, op);
if (std::get<0>(promoteTo) == EbtNumTypes || std::get<1>(promoteTo) == EbtNumTypes)
return std::make_tuple(nullptr, nullptr);
}
} else
return std::make_tuple(nullptr, nullptr);
else
return std::make_tuple(nullptr, nullptr);
}
break;
default:
@ -964,35 +963,24 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
if (type.getBasicType() == node->getType().getBasicType())
return node;
if (canImplicitlyPromote(node->getType().getBasicType(), type.getBasicType(), op))
if (canImplicitlyPromote(node->getBasicType(), type.getBasicType(), op))
promoteTo = type.getBasicType();
else
return nullptr;
break;
// Shifts can have mixed types as long as they are integer and of the same rank,
// without converting.
// It's the left operand's type that determines the resulting type, so no issue
// with assign shift ops either.
// For GLSL, there are no conversions needed; the shift amount just needs to be an
// integer type, as do the base/result.
// HLSL can convert the shift from a bool to an int.
case EOpLeftShiftAssign:
case EOpRightShiftAssign:
{
TBasicType type0 = type.getBasicType();
TBasicType type1 = node->getType().getBasicType();
if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool) {
promoteTo = type0;
} else {
if (isTypeInt(type0) && isTypeInt(type1)) {
if (getTypeRank(type0) == getTypeRank(type1)) {
return node;
} else {
if (canImplicitlyPromote(type1, type0, op))
promoteTo = type0;
else
return nullptr;
}
} else
if (source == EShSourceHlsl && node->getType().getBasicType() == EbtBool)
promoteTo = type.getBasicType();
else {
if (isTypeInt(type.getBasicType()) && isTypeInt(node->getBasicType()))
return node;
else
return nullptr;
}
break;
@ -1437,9 +1425,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float32) ||
extensionRequested(E_GL_KHX_shader_explicit_arithmetic_types_float64);
if(explicitTypesEnabled)
{
if(explicitTypesEnabled) {
// integral promotions
if (isIntegralPromotion(from, to)) {
return true;

View File

@ -416,6 +416,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.460.comp",
"spv.atomic.comp",
"spv.glFragColor.frag",
"spv.rankShift.comp",
"spv.specConst.vert",
"spv.OVR_multiview.vert",
})),