@@ -36,29 +36,29 @@ define amdgpu_ps void @test(ptr addrspace(1) inreg %ptr) {
3636define amdgpu_ps void @test_loop () {
3737; SDAG-LABEL: test_loop:
3838; SDAG: ; %bb.0:
39- ; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
4039; SDAG-NEXT: .LBB1_1: ; %loop
4140; SDAG-NEXT: ; =>This Inner Loop Header: Depth=1
41+ ; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
4242; SDAG-NEXT: s_cmp_eq_u32 s0, 0
4343; SDAG-NEXT: s_cbranch_scc1 .LBB1_1
4444; SDAG-NEXT: ; %bb.2: ; %exit
4545; SDAG-NEXT: s_endpgm
4646;
4747; GFX9-GISEL-LABEL: test_loop:
4848; GFX9-GISEL: ; %bb.0:
49- ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
5049; GFX9-GISEL-NEXT: .LBB1_1: ; %loop
5150; GFX9-GISEL-NEXT: ; =>This Inner Loop Header: Depth=1
51+ ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
5252; GFX9-GISEL-NEXT: s_cmp_eq_u32 s0, 0
5353; GFX9-GISEL-NEXT: s_cbranch_scc1 .LBB1_1
5454; GFX9-GISEL-NEXT: ; %bb.2: ; %exit
5555; GFX9-GISEL-NEXT: s_endpgm
5656;
5757; GFX10-GISEL-LABEL: test_loop:
5858; GFX10-GISEL: ; %bb.0:
59- ; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
6059; GFX10-GISEL-NEXT: .LBB1_1: ; %loop
6160; GFX10-GISEL-NEXT: ; =>This Inner Loop Header: Depth=1
61+ ; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
6262; GFX10-GISEL-NEXT: s_cmp_eq_u32 s0, 0
6363; GFX10-GISEL-NEXT: s_cbranch_scc1 .LBB1_1
6464; GFX10-GISEL-NEXT: ; %bb.2: ; %exit
@@ -77,21 +77,35 @@ define amdgpu_ps i32 @test_if(i1 inreg %cond) {
7777; SDAG: ; %bb.0: ; %entry
7878; SDAG-NEXT: s_bitcmp0_b32 s0, 0
7979; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
80+ ; SDAG-NEXT: s_cbranch_scc1 .LBB2_2
81+ ; SDAG-NEXT: ; %bb.1: ; %body
82+ ; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
83+ ; SDAG-NEXT: .LBB2_2: ; %exit
8084; SDAG-NEXT: ; return to shader part epilog
8185;
8286; GFX9-GISEL-LABEL: test_if:
8387; GFX9-GISEL: ; %bb.0: ; %entry
8488; GFX9-GISEL-NEXT: s_mov_b32 s1, s0
85- ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
8689; GFX9-GISEL-NEXT: s_xor_b32 s1, s1, 1
8790; GFX9-GISEL-NEXT: s_and_b32 s1, s1, 1
91+ ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
92+ ; GFX9-GISEL-NEXT: s_cmp_lg_u32 s1, 0
93+ ; GFX9-GISEL-NEXT: s_cbranch_scc1 .LBB2_2
94+ ; GFX9-GISEL-NEXT: ; %bb.1: ; %body
95+ ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
96+ ; GFX9-GISEL-NEXT: .LBB2_2: ; %exit
8897; GFX9-GISEL-NEXT: ; return to shader part epilog
8998;
9099; GFX10-GISEL-LABEL: test_if:
91100; GFX10-GISEL: ; %bb.0: ; %entry
92101; GFX10-GISEL-NEXT: s_xor_b32 s0, s0, 1
93102; GFX10-GISEL-NEXT: s_and_b32 s1, s0, 1
94103; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
104+ ; GFX10-GISEL-NEXT: s_cmp_lg_u32 s1, 0
105+ ; GFX10-GISEL-NEXT: s_cbranch_scc1 .LBB2_2
106+ ; GFX10-GISEL-NEXT: ; %bb.1: ; %body
107+ ; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
108+ ; GFX10-GISEL-NEXT: .LBB2_2: ; %exit
95109; GFX10-GISEL-NEXT: ; return to shader part epilog
96110entry:
97111 %id1 = call i32 @llvm.amdgcn.pops.exiting.wave.id ()
0 commit comments