11# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
22# RUN: llc -mtriple=amdgcn --run-pass=livevars -o - %s | FileCheck %s
33---
4+ # Check that super register is implicitly defined for an sgpr copy.
45name : sgpr_copy
56tracksRegLiveness : true
67body : |
@@ -23,6 +24,7 @@ body: |
2324
2425 ...
2526---
27+ # Check that super register is implicitly defined for a vgpr vector copy.
2628name : vgpr_copy
2729tracksRegLiveness : true
2830body : |
@@ -44,3 +46,45 @@ body: |
4446 %0:vgpr_32 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
4547
4648 ...
49+ ---
50+ # Check that super register is implicitly defined when there is a hole.
51+ name : sgpr_copy_hole
52+ tracksRegLiveness : true
53+ body : |
54+ bb.0:
55+ ; CHECK-LABEL: name: sgpr_copy_hole
56+ ; CHECK: %sval:sreg_32 = S_MOV_B32 0
57+ ; CHECK-NEXT: $sgpr0 = COPY %sval
58+ ; CHECK-NEXT: $sgpr2 = COPY %sval
59+ ; CHECK-NEXT: $sgpr3 = COPY killed %sval, implicit-def $sgpr0_sgpr1_sgpr2_sgpr3
60+ ; CHECK-NEXT: dead $sgpr30_sgpr31 = COPY killed $sgpr0_sgpr1_sgpr2_sgpr3
61+ %sval:sreg_32 = S_MOV_B32 0
62+
63+ $sgpr0 = COPY %sval
64+ $sgpr2 = COPY %sval
65+ $sgpr3 = COPY %sval
66+ $sgpr30_sgpr31 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
67+
68+ ...
69+ ---
70+ # Check that super register is imp-def when a pair interrupts the sequence.
71+ name : vgpr_copy_pair
72+ tracksRegLiveness : true
73+ body : |
74+ bb.0:
75+ ; CHECK-LABEL: name: vgpr_copy_pair
76+ ; CHECK: %vval:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
77+ ; CHECK-NEXT: $vgpr0 = COPY %vval
78+ ; CHECK-NEXT: $vgpr1 = COPY %vval
79+ ; CHECK-NEXT: $vgpr2 = COPY %vval, implicit-def $vgpr1_vgpr2
80+ ; CHECK-NEXT: $vgpr3 = COPY killed %vval, implicit-def $vgpr0_vgpr1_vgpr2_vgpr3
81+ ; CHECK-NEXT: dead [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1_vgpr2
82+ ; CHECK-NEXT: dead [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed $vgpr0_vgpr1_vgpr2_vgpr3
83+ %vval:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
84+
85+ $vgpr0 = COPY %vval
86+ $vgpr1 = COPY %vval
87+ $vgpr2 = COPY %vval
88+ $vgpr3 = COPY %vval
89+ %0:vgpr_32 = COPY $vgpr1_vgpr2
90+ %1:vgpr_32 = COPY $vgpr0_vgpr1_vgpr2_vgpr3
0 commit comments