xref: /llvm-project/llvm/test/MachineVerifier/AMDGPU/register-killed-inside-loop.mir (revision d24a2fd38e42f58d6f34f3e985d9387139c12478)
1# FIXME: This should fail the verifier
2# XFAIL: *
3# RUN: not --crash llc -o - -mtriple=amdgcn-amd-amdhsa -run-pass=none -verify-machineinstrs %s 2>&1 | FileCheck %s
4
5# %1 is live out of %bb.1 through the loop edge, and therefore the kill flag is invalid.
6
7# CHECK: *** Bad machine code: Virtual register killed in block, but needed live out. ***
8
9---
10name:            kill_flag_in_loop
11body:             |
12  bb.0:
13    liveins: $sgpr0, $vgpr0_vgpr1
14    successors: %bb.1(0x80000000)
15
16    %0:sreg_32 = COPY $sgpr0
17    %1:sreg_32 = S_AND_B32 1, killed %0, implicit-def dead $scc
18
19  bb.1:
20    successors: %bb.2(0x40000000), %bb.1(0x40000000)
21
22    S_CMP_EQ_I32 killed %1:sreg_32, 1, implicit-def $scc
23    S_CBRANCH_SCC0 %bb.2, implicit $scc
24    S_BRANCH %bb.1
25
26  bb.2:
27    successors: %bb.3(0x80000000)
28
29  bb.3:
30    S_ENDPGM 0
31
32...
33