@@ -344,3 +344,217 @@ body: |
344
344
%3:vgpr_32 = V_FMA_F32_e64 0, %0, 0, %1, 0, %2.sub1, 0, 0, implicit $mode, implicit $exec
345
345
SI_RETURN_TO_EPILOG %3
346
346
...
347
+
348
+ ---
349
+ name : fold_aimm_virtual
350
+ body : |
351
+ bb.0:
352
+
353
+ ; GCN-LABEL: name: fold_aimm_virtual
354
+ ; GCN: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
355
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_ACCVGPR_WRITE_B32_e64_]]
356
+ %0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
357
+ %1:agpr_32 = COPY killed %0
358
+ SI_RETURN_TO_EPILOG implicit %1
359
+
360
+ ...
361
+
362
+ ---
363
+ name : fold_aimm_virtual_copy_to_vgpr
364
+ body : |
365
+ bb.0:
366
+
367
+ ; GCN-LABEL: name: fold_aimm_virtual_copy_to_vgpr
368
+ ; GCN: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
369
+ ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 64, implicit $exec
370
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_MOV_B32_e32_]]
371
+ %0:agpr_32 = V_ACCVGPR_WRITE_B32_e64 64, implicit $exec
372
+ %1:vgpr_32 = COPY killed %0
373
+ SI_RETURN_TO_EPILOG implicit %1
374
+
375
+ ...
376
+
377
+ ---
378
+ name : fold_v_mov_b64_64_sub0_to_vgpr_32
379
+ body : |
380
+ bb.0:
381
+
382
+ ; GCN-LABEL: name: fold_v_mov_b64_64_sub0_to_vgpr_32
383
+ ; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
384
+ ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1412567312, implicit $exec
385
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_MOV_B32_e32_]]
386
+ %0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
387
+ %1:vgpr_32 = COPY killed %0.sub0
388
+ SI_RETURN_TO_EPILOG %1
389
+
390
+ ...
391
+
392
+ ---
393
+ name : fold_v_mov_b64_64_sub1_to_vgpr_32
394
+ body : |
395
+ bb.0:
396
+
397
+ ; GCN-LABEL: name: fold_v_mov_b64_64_sub1_to_vgpr_32
398
+ ; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
399
+ ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 305419896, implicit $exec
400
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[V_MOV_B32_e32_]]
401
+ %0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
402
+ %1:vgpr_32 = COPY killed %0.sub1
403
+ SI_RETURN_TO_EPILOG %1
404
+
405
+ ...
406
+
407
+ ---
408
+ name : fold_v_mov_b64_64
409
+ body : |
410
+ bb.0:
411
+
412
+ ; GCN-LABEL: name: fold_v_mov_b64_64
413
+ ; GCN: [[V_MOV_B64_e32_:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
414
+ ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec
415
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG implicit [[V_MOV_B]]
416
+ %0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
417
+ %1:vreg_64_align2 = COPY killed %0
418
+ SI_RETURN_TO_EPILOG implicit %1
419
+
420
+ ...
421
+
422
+ # FIXME:
423
+ # ---
424
+ # name: fold_v_mov_b64_64_to_unaligned
425
+ # body: |
426
+ # bb.0:
427
+ # %0:vreg_64_align2 = V_MOV_B64_e32 1311768467750121200, implicit $exec
428
+ # %1:vreg_64 = COPY killed %0
429
+ # SI_RETURN_TO_EPILOG implicit %1
430
+ # ...
431
+
432
+ # FIXME:
433
+ # ---
434
+ # name: fold_v_mov_b64_pseudo_64_to_unaligned
435
+ # body: |
436
+ # bb.0:
437
+ # %0:vreg_64_align2 = V_MOV_B64_PSEUDO 1311768467750121200, implicit $exec
438
+ # %1:vreg_64 = COPY killed %0
439
+ # SI_RETURN_TO_EPILOG implicit %1
440
+ # ...
441
+
442
+ ---
443
+ name : fold_s_brev_b32_simm_virtual_0
444
+ body : |
445
+ bb.0:
446
+
447
+ ; GCN-LABEL: name: fold_s_brev_b32_simm_virtual_0
448
+ ; GCN: [[S_BREV_B32_:%[0-9]+]]:sreg_32 = S_BREV_B32 1
449
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_BREV_B32_]]
450
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG
451
+ %0:sreg_32 = S_BREV_B32 1
452
+ %1:sreg_32 = COPY killed %0
453
+ SI_RETURN_TO_EPILOG
454
+
455
+ ...
456
+
457
+ ---
458
+ name : fold_s_brev_b32_simm_virtual_1
459
+ body : |
460
+ bb.0:
461
+
462
+ ; GCN-LABEL: name: fold_s_brev_b32_simm_virtual_1
463
+ ; GCN: [[S_BREV_B32_:%[0-9]+]]:sreg_32 = S_BREV_B32 -64
464
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_BREV_B32_]]
465
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG
466
+ %0:sreg_32 = S_BREV_B32 -64
467
+ %1:sreg_32 = COPY killed %0
468
+ SI_RETURN_TO_EPILOG
469
+
470
+ ...
471
+
472
+ ---
473
+ name : fold_v_bfrev_b32_e32_imm
474
+ body : |
475
+ bb.0:
476
+
477
+ ; GCN-LABEL: name: fold_v_bfrev_b32_e32_imm
478
+ ; GCN: [[V_BFREV_B32_e32_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec
479
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_BFREV_B32_e32_]]
480
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
481
+ %0:vgpr_32 = V_BFREV_B32_e32 1, implicit $exec
482
+ %1:vgpr_32 = COPY killed %0
483
+ SI_RETURN_TO_EPILOG %1
484
+
485
+ ...
486
+
487
+ ---
488
+ name : fold_v_bfrev_b32_e64_imm
489
+ body : |
490
+ bb.0:
491
+
492
+ ; GCN-LABEL: name: fold_v_bfrev_b32_e64_imm
493
+ ; GCN: [[V_BFREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_BFREV_B32_e64 1, implicit $exec
494
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_BFREV_B32_e64_]]
495
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
496
+ %0:vgpr_32 = V_BFREV_B32_e64 1, implicit $exec
497
+ %1:vgpr_32 = COPY killed %0
498
+ SI_RETURN_TO_EPILOG %1
499
+
500
+ ...
501
+
502
+ ---
503
+ name : fold_s_not_b32_simm_virtual_0
504
+ body : |
505
+ bb.0:
506
+
507
+ ; GCN-LABEL: name: fold_s_not_b32_simm_virtual_0
508
+ ; GCN: [[S_NOT_B32_:%[0-9]+]]:sreg_32 = S_NOT_B32 1, implicit-def $scc
509
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_NOT_B32_]]
510
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG
511
+ %0:sreg_32 = S_NOT_B32 1, implicit-def $scc
512
+ %1:sreg_32 = COPY killed %0
513
+ SI_RETURN_TO_EPILOG
514
+
515
+ ...
516
+
517
+ ---
518
+ name : fold_s_not_b32_simm_virtual_1
519
+ body : |
520
+ bb.0:
521
+
522
+ ; GCN-LABEL: name: fold_s_not_b32_simm_virtual_1
523
+ ; GCN: [[S_NOT_B32_:%[0-9]+]]:sreg_32 = S_NOT_B32 -64, implicit-def $scc
524
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY killed [[S_NOT_B32_]]
525
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG
526
+ %0:sreg_32 = S_NOT_B32 -64, implicit-def $scc
527
+ %1:sreg_32 = COPY killed %0
528
+ SI_RETURN_TO_EPILOG
529
+
530
+ ...
531
+
532
+ ---
533
+ name : fold_v_not_b32_e32_imm
534
+ body : |
535
+ bb.0:
536
+
537
+ ; GCN-LABEL: name: fold_v_not_b32_e32_imm
538
+ ; GCN: [[V_NOT_B32_e32_:%[0-9]+]]:vgpr_32 = V_NOT_B32_e32 1, implicit $exec
539
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_NOT_B32_e32_]]
540
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
541
+ %0:vgpr_32 = V_NOT_B32_e32 1, implicit $exec
542
+ %1:vgpr_32 = COPY killed %0
543
+ SI_RETURN_TO_EPILOG %1
544
+
545
+ ...
546
+
547
+ ---
548
+ name : fold_v_not_b32_e64_imm
549
+ body : |
550
+ bb.0:
551
+
552
+ ; GCN-LABEL: name: fold_v_not_b32_e64_imm
553
+ ; GCN: [[V_NOT_B32_e64_:%[0-9]+]]:vgpr_32 = V_NOT_B32_e64 1, implicit $exec
554
+ ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY killed [[V_NOT_B32_e64_]]
555
+ ; GCN-NEXT: SI_RETURN_TO_EPILOG [[COPY]]
556
+ %0:vgpr_32 = V_NOT_B32_e64 1, implicit $exec
557
+ %1:vgpr_32 = COPY killed %0
558
+ SI_RETURN_TO_EPILOG %1
559
+
560
+ ...
0 commit comments