[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / phi-elimination-end-cf.mir
blob829d01d8e1c365720a5231de79eab75959d76009
1 # RUN: llc -mtriple amdgcn -run-pass livevars -run-pass phi-node-elimination -verify-machineinstrs -o - %s | FileCheck %s
2 # RUN: llc -mtriple amdgcn --passes='require<live-vars>,phi-node-elimination' -verify-each -o - %s | FileCheck %s
4 # CHECK-LABEL:  phi-cf-test
5 # CHECK: bb.0:
6 # CHECK:     [[COND:%[0-9]+]]:sreg_64 = V_CMP_EQ_U32_e64
7 # CHECK:     [[IF_SOURCE0:%[0-9]+]]:sreg_64 = SI_IF [[COND]], %bb.1, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
8 # CHECK:     [[IF_INPUT_REG:%[0-9]+]]:sreg_64 = S_MOV_B64_term killed [[IF_SOURCE0]], implicit $exec
10 # CHECK: bb.1:
11 # CHECK:     [[END_CF_ARG:%[0-9]+]]:sreg_64 = COPY killed [[IF_INPUT_REG]]
12 # CHECK:     SI_END_CF killed [[END_CF_ARG]], implicit-def dead $exec, implicit-def dead $scc, implicit $exec
14 # CHECK: bb.2:
15 # CHECK:     [[IF_SOURCE1:%[0-9]+]]:sreg_64 = SI_IF [[COND]], %bb.1, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
16 # CHECK:     [[IF_INPUT_REG]]:sreg_64 = S_MOV_B64_term killed [[IF_SOURCE1]], implicit $exec
19 ...
20 ---
21 name:            phi-cf-test
22 tracksRegLiveness: true
23 body:             |
25   bb.0:
26     successors: %bb.3(0x40000000), %bb.2(0x40000000)
27     liveins: $vgpr0
29     %5:vgpr_32(s32) = COPY $vgpr0
30     %0:sreg_64 = V_CMP_EQ_U32_e64 0, %5(s32), implicit $exec
31     %18:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
32     %22:sreg_64 = SI_IF %0, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
33     S_BRANCH %bb.3
35   bb.2:
36     successors: %bb.3(0x80000000)
38     %24:sreg_64 = PHI %20, %bb.3, %22, %bb.0
39     %23:vgpr_32 = PHI %19, %bb.3, %18, %bb.0
40     SI_END_CF %24, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
41     %3:vgpr_32, dead %10:sreg_64 = nsw V_ADD_CO_U32_e64 1, %23, 0, implicit $exec
43   bb.3:
44     successors: %bb.3(0x40000000), %bb.2(0x40000000)
46     %4:vgpr_32 = PHI %19, %bb.3, %3, %bb.2, %18, %bb.0
47     %15:sreg_32_xm0 = S_MOV_B32 61440
48     %16:sreg_32_xm0 = S_MOV_B32 -1
49     %17:sgpr_128 = REG_SEQUENCE undef %14:sreg_32_xm0, %subreg.sub0, undef %12:sreg_32_xm0, %subreg.sub1, %16, %subreg.sub2, %15, %subreg.sub3
50     BUFFER_STORE_DWORD_OFFSET %4, %17, 0, 0, 0, 0, implicit $exec :: (volatile store (s32) into `ptr addrspace(1) undef`, addrspace 1)
51     %19:vgpr_32 = COPY %4
52     %20:sreg_64 = SI_IF %0, %bb.2, implicit-def dead $exec, implicit-def dead $scc, implicit $exec
53     S_BRANCH %bb.3
55 ...