@@ -36,29 +36,29 @@ define amdgpu_ps void @test(ptr addrspace(1) inreg %ptr) {
36
36
define amdgpu_ps void @test_loop () {
37
37
; SDAG-LABEL: test_loop:
38
38
; SDAG: ; %bb.0:
39
- ; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
40
39
; SDAG-NEXT: .LBB1_1: ; %loop
41
40
; SDAG-NEXT: ; =>This Inner Loop Header: Depth=1
41
+ ; SDAG-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
42
42
; SDAG-NEXT: s_cmp_eq_u32 s0, 0
43
43
; SDAG-NEXT: s_cbranch_scc1 .LBB1_1
44
44
; SDAG-NEXT: ; %bb.2: ; %exit
45
45
; SDAG-NEXT: s_endpgm
46
46
;
47
47
; GFX9-GISEL-LABEL: test_loop:
48
48
; GFX9-GISEL: ; %bb.0:
49
- ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
50
49
; GFX9-GISEL-NEXT: .LBB1_1: ; %loop
51
50
; GFX9-GISEL-NEXT: ; =>This Inner Loop Header: Depth=1
51
+ ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
52
52
; GFX9-GISEL-NEXT: s_cmp_eq_u32 s0, 0
53
53
; GFX9-GISEL-NEXT: s_cbranch_scc1 .LBB1_1
54
54
; GFX9-GISEL-NEXT: ; %bb.2: ; %exit
55
55
; GFX9-GISEL-NEXT: s_endpgm
56
56
;
57
57
; GFX10-GISEL-LABEL: test_loop:
58
58
; GFX10-GISEL: ; %bb.0:
59
- ; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
60
59
; GFX10-GISEL-NEXT: .LBB1_1: ; %loop
61
60
; GFX10-GISEL-NEXT: ; =>This Inner Loop Header: Depth=1
61
+ ; GFX10-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
62
62
; GFX10-GISEL-NEXT: s_cmp_eq_u32 s0, 0
63
63
; GFX10-GISEL-NEXT: s_cbranch_scc1 .LBB1_1
64
64
; GFX10-GISEL-NEXT: ; %bb.2: ; %exit
@@ -77,21 +77,35 @@ define amdgpu_ps i32 @test_if(i1 inreg %cond) {
77
77
; SDAG: ; %bb.0: ; %entry
78
78
; SDAG-NEXT: s_bitcmp0_b32 s0, 0
79
79
; 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
80
84
; SDAG-NEXT: ; return to shader part epilog
81
85
;
82
86
; GFX9-GISEL-LABEL: test_if:
83
87
; GFX9-GISEL: ; %bb.0: ; %entry
84
88
; GFX9-GISEL-NEXT: s_mov_b32 s1, s0
85
- ; GFX9-GISEL-NEXT: s_mov_b32 s0, src_pops_exiting_wave_id
86
89
; GFX9-GISEL-NEXT: s_xor_b32 s1, s1, 1
87
90
; 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
88
97
; GFX9-GISEL-NEXT: ; return to shader part epilog
89
98
;
90
99
; GFX10-GISEL-LABEL: test_if:
91
100
; GFX10-GISEL: ; %bb.0: ; %entry
92
101
; GFX10-GISEL-NEXT: s_xor_b32 s0, s0, 1
93
102
; GFX10-GISEL-NEXT: s_and_b32 s1, s0, 1
94
103
; 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
95
109
; GFX10-GISEL-NEXT: ; return to shader part epilog
96
110
entry:
97
111
%id1 = call i32 @llvm.amdgcn.pops.exiting.wave.id ()
0 commit comments