@@ -78,7 +78,7 @@ define amdgpu_ps void @dynamic_exact(float %arg0, float %arg1) {
7878; SI: ; %bb.0: ; %.entry
7979; SI-NEXT: v_cmp_le_f32_e64 s[0:1], 0, v1
8080; SI-NEXT: s_mov_b64 s[2:3], exec
81- ; SI-NEXT: s_xor_b64 s[0:1], s[0:1], exec
81+ ; SI-NEXT: s_andn2_b64 s[0:1], exec, s[0:1]
8282; SI-NEXT: s_andn2_b64 s[2:3], s[2:3], s[0:1]
8383; SI-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
8484; SI-NEXT: s_cbranch_scc0 .LBB1_2
@@ -96,7 +96,7 @@ define amdgpu_ps void @dynamic_exact(float %arg0, float %arg1) {
9696; GFX9: ; %bb.0: ; %.entry
9797; GFX9-NEXT: v_cmp_le_f32_e64 s[0:1], 0, v1
9898; GFX9-NEXT: s_mov_b64 s[2:3], exec
99- ; GFX9-NEXT: s_xor_b64 s[0:1], s[0:1], exec
99+ ; GFX9-NEXT: s_andn2_b64 s[0:1], exec, s[0:1]
100100; GFX9-NEXT: s_andn2_b64 s[2:3], s[2:3], s[0:1]
101101; GFX9-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
102102; GFX9-NEXT: s_cbranch_scc0 .LBB1_2
@@ -115,7 +115,7 @@ define amdgpu_ps void @dynamic_exact(float %arg0, float %arg1) {
115115; GFX10-32-NEXT: v_cmp_le_f32_e64 s0, 0, v1
116116; GFX10-32-NEXT: s_mov_b32 s1, exec_lo
117117; GFX10-32-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0, v0
118- ; GFX10-32-NEXT: s_xor_b32 s0, s0, exec_lo
118+ ; GFX10-32-NEXT: s_andn2_b32 s0, exec_lo, s0
119119; GFX10-32-NEXT: s_andn2_b32 s1, s1, s0
120120; GFX10-32-NEXT: s_cbranch_scc0 .LBB1_2
121121; GFX10-32-NEXT: ; %bb.1: ; %.entry
@@ -133,7 +133,7 @@ define amdgpu_ps void @dynamic_exact(float %arg0, float %arg1) {
133133; GFX10-64-NEXT: v_cmp_le_f32_e64 s[0:1], 0, v1
134134; GFX10-64-NEXT: s_mov_b64 s[2:3], exec
135135; GFX10-64-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
136- ; GFX10-64-NEXT: s_xor_b64 s[0:1], s[0:1], exec
136+ ; GFX10-64-NEXT: s_andn2_b64 s[0:1], exec, s[0:1]
137137; GFX10-64-NEXT: s_andn2_b64 s[2:3], s[2:3], s[0:1]
138138; GFX10-64-NEXT: s_cbranch_scc0 .LBB1_2
139139; GFX10-64-NEXT: ; %bb.1: ; %.entry
@@ -556,7 +556,7 @@ define amdgpu_ps <4 x float> @wqm_demote_dynamic(<8 x i32> inreg %rsrc, <4 x i32
556556; SI-NEXT: image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf
557557; SI-NEXT: s_waitcnt vmcnt(0)
558558; SI-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
559- ; SI-NEXT: s_xor_b64 s[14:15], vcc, exec
559+ ; SI-NEXT: s_andn2_b64 s[14:15], exec, vcc
560560; SI-NEXT: s_andn2_b64 s[12:13], s[12:13], s[14:15]
561561; SI-NEXT: s_cbranch_scc0 .LBB5_2
562562; SI-NEXT: ; %bb.1: ; %.entry
@@ -580,7 +580,7 @@ define amdgpu_ps <4 x float> @wqm_demote_dynamic(<8 x i32> inreg %rsrc, <4 x i32
580580; GFX9-NEXT: image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf
581581; GFX9-NEXT: s_waitcnt vmcnt(0)
582582; GFX9-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
583- ; GFX9-NEXT: s_xor_b64 s[14:15], vcc, exec
583+ ; GFX9-NEXT: s_andn2_b64 s[14:15], exec, vcc
584584; GFX9-NEXT: s_andn2_b64 s[12:13], s[12:13], s[14:15]
585585; GFX9-NEXT: s_cbranch_scc0 .LBB5_2
586586; GFX9-NEXT: ; %bb.1: ; %.entry
@@ -604,7 +604,7 @@ define amdgpu_ps <4 x float> @wqm_demote_dynamic(<8 x i32> inreg %rsrc, <4 x i32
604604; GFX10-32-NEXT: image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
605605; GFX10-32-NEXT: s_waitcnt vmcnt(0)
606606; GFX10-32-NEXT: v_cmp_gt_f32_e32 vcc_lo, 0, v0
607- ; GFX10-32-NEXT: s_xor_b32 s13, vcc_lo, exec_lo
607+ ; GFX10-32-NEXT: s_andn2_b32 s13, exec_lo, vcc_lo
608608; GFX10-32-NEXT: s_andn2_b32 s12, s12, s13
609609; GFX10-32-NEXT: s_cbranch_scc0 .LBB5_2
610610; GFX10-32-NEXT: ; %bb.1: ; %.entry
@@ -628,7 +628,7 @@ define amdgpu_ps <4 x float> @wqm_demote_dynamic(<8 x i32> inreg %rsrc, <4 x i32
628628; GFX10-64-NEXT: image_sample v[0:3], v0, s[0:7], s[8:11] dmask:0xf dim:SQ_RSRC_IMG_1D
629629; GFX10-64-NEXT: s_waitcnt vmcnt(0)
630630; GFX10-64-NEXT: v_cmp_gt_f32_e32 vcc, 0, v0
631- ; GFX10-64-NEXT: s_xor_b64 s[14:15], vcc, exec
631+ ; GFX10-64-NEXT: s_andn2_b64 s[14:15], exec, vcc
632632; GFX10-64-NEXT: s_andn2_b64 s[12:13], s[12:13], s[14:15]
633633; GFX10-64-NEXT: s_cbranch_scc0 .LBB5_2
634634; GFX10-64-NEXT: ; %bb.1: ; %.entry
0 commit comments