@@ -573,3 +573,84 @@ body: |
573
573
S_NOP 0, implicit %2
574
574
S_ENDPGM 0
575
575
...
576
+
577
+ ---
578
+ name : test_remat_s_getpc_b64
579
+ tracksRegLiveness : true
580
+ body : |
581
+ bb.0:
582
+
583
+ ; GCN-LABEL: name: test_remat_s_getpc_b64
584
+ ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64
585
+ ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64
586
+ ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
587
+ ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3
588
+ ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64
589
+ ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1
590
+ ; GCN-NEXT: S_ENDPGM 0
591
+ %0:sgpr_64 = S_GETPC_B64
592
+ %1:sgpr_64 = S_GETPC_B64
593
+ %2:sgpr_64 = S_GETPC_B64
594
+ S_NOP 0, implicit %0
595
+ S_NOP 0, implicit %1
596
+ S_NOP 0, implicit %2
597
+ S_ENDPGM 0
598
+ ...
599
+
600
+ ---
601
+ name : test_remat_s_getpc_b64_2
602
+ tracksRegLiveness : true
603
+ body : |
604
+ bb.0:
605
+
606
+ ; GCN-LABEL: name: test_remat_s_getpc_b64_2
607
+ ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64
608
+ ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64
609
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.3, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.3, addrspace 5)
610
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.0, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.0, addrspace 5)
611
+ ; GCN-NEXT: renamable $sgpr1 = COPY renamable $sgpr2
612
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.1, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.1, addrspace 5)
613
+ ; GCN-NEXT: renamable $sgpr1 = COPY killed renamable $sgpr3
614
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.2, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.2, addrspace 5)
615
+ ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64
616
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.5, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.5, addrspace 5)
617
+ ; GCN-NEXT: renamable $sgpr0 = COPY killed renamable $sgpr1
618
+ ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.4, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.4, addrspace 5)
619
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)
620
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)
621
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr1, killed renamable $sgpr0, implicit-def $scc
622
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)
623
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)
624
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc
625
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)
626
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)
627
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc
628
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)
629
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)
630
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc
631
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)
632
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)
633
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc
634
+ ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)
635
+ ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)
636
+ ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc
637
+ ; GCN-NEXT: S_ENDPGM 0
638
+ %0:sreg_64 = S_GETPC_B64
639
+ %1:sreg_64 = S_GETPC_B64
640
+ %2:sreg_64 = S_GETPC_B64
641
+ %4:sreg_32 = COPY %0.sub0:sreg_64
642
+ %5:sreg_32 = COPY %0.sub1:sreg_64
643
+ %6:sreg_32 = COPY %1.sub0:sreg_64
644
+ %7:sreg_32 = COPY %1.sub1:sreg_64
645
+ %8:sreg_32 = COPY %2.sub0:sreg_64
646
+ %9:sreg_32 = COPY %2.sub1:sreg_64
647
+ %10:sreg_32 = S_ADD_U32 %4:sreg_32, %6:sreg_32, implicit-def $scc
648
+ %11:sreg_32 = S_ADDC_U32 %5:sreg_32, %7:sreg_32, implicit-def $scc, implicit $scc
649
+ %12:sreg_32 = S_ADD_U32 %4:sreg_32, %8:sreg_32, implicit-def $scc
650
+ %13:sreg_32 = S_ADDC_U32 %5:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc
651
+ %14:sreg_32 = S_ADD_U32 %6:sreg_32, %8:sreg_32, implicit-def $scc
652
+ %15:sreg_32 = S_ADDC_U32 %7:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc
653
+ S_ENDPGM 0
654
+ ...
655
+
656
+
0 commit comments