Skip to content

Commit ba49a0c

Browse files
committed
add callbr test with different succ order
1 parent 8273583 commit ba49a0c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

llvm/test/CodeGen/AMDGPU/callbr.ll

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,53 @@ cont:
5050
store i32 %a, ptr %dst, align 4
5151
ret void
5252
}
53+
54+
; SELDAG-LABEL: test_kill_block_order:
55+
; SELDAG-NEXT: ; %bb.0:
56+
; SELDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
57+
; SELDAG-NEXT: flat_load_dword v0, v[0:1]
58+
; SELDAG-NEXT: v_and_b32_e32 v1, 1, v4
59+
; SELDAG-NEXT: v_cmp_eq_u32_e32 vcc, 1, v1
60+
; SELDAG-NEXT: s_mov_b64 s[4:5], exec
61+
; SELDAG-NEXT: s_andn2_b64 s[6:7], exec, vcc
62+
; SELDAG-NEXT: s_andn2_b64 s[4:5], s[4:5], s[6:7]
63+
; SELDAG-NEXT: s_cbranch_scc0 .LBB1_2
64+
; SELDAG-NEXT: ; %bb.1:
65+
; SELDAG-NEXT: s_and_b64 exec, exec, s[4:5]
66+
; SELDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
67+
; SELDAG-NEXT: flat_store_dword v[2:3], v0
68+
; SELDAG-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
69+
; SELDAG-NEXT: s_setpc_b64 s[30:31]
70+
; SELDAG-NEXT: .LBB1_2:
71+
; SELDAG-NEXT: s_mov_b64 exec, 0
72+
; SELDAG-NEXT: s_endpgm
73+
74+
; GISEL-LABEL: test_kill_block_order:
75+
; GISEL-NEXT: ; %bb.0:
76+
; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
77+
; GISEL-NEXT: flat_load_dword v0, v[0:1]
78+
; GISEL-NEXT: v_and_b32_e32 v1, 1, v4
79+
; GISEL-NEXT: v_cmp_ne_u32_e32 vcc, 0, v1
80+
; GISEL-NEXT: s_mov_b64 s[4:5], exec
81+
; GISEL-NEXT: s_andn2_b64 s[6:7], exec, vcc
82+
; GISEL-NEXT: s_andn2_b64 s[4:5], s[4:5], s[6:7]
83+
; GISEL-NEXT: s_cbranch_scc0 .LBB1_2
84+
; GISEL-NEXT: ; %bb.1:
85+
; GISEL-NEXT: s_and_b64 exec, exec, s[4:5]
86+
; GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
87+
; GISEL-NEXT: flat_store_dword v[2:3], v0
88+
; GISEL-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
89+
; GISEL-NEXT: s_setpc_b64 s[30:31]
90+
; GISEL-NEXT: .LBB1_2:
91+
; GISEL-NEXT: s_mov_b64 exec, 0
92+
; GISEL-NEXT: s_endpgm
93+
94+
define void @test_kill_block_order(ptr %src, ptr %dst, i1 %c) {
95+
%a = load i32, ptr %src, align 4
96+
callbr void @llvm.amdgcn.kill(i1 %c) to label %cont [label %kill]
97+
cont:
98+
store i32 %a, ptr %dst, align 4
99+
ret void
100+
kill:
101+
unreachable
102+
}

0 commit comments

Comments
 (0)