@@ -391,12 +391,11 @@ define i1 @posnormal_bf16(bfloat %x) nounwind {
391391; GFX7CHECK: ; %bb.0:
392392; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
393393; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
394- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
394+ ; GFX7CHECK-NEXT: v_cmp_lt_i32_e64 s[4:5], -1 , v0
395395; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
396396; GFX7CHECK-NEXT: v_add_i32_e32 v0, vcc, 0xffffff80, v0
397397; GFX7CHECK-NEXT: v_and_b32_e32 v0, 0xffff, v0
398398; GFX7CHECK-NEXT: s_movk_i32 s6, 0x7f00
399- ; GFX7CHECK-NEXT: v_cmp_lt_i32_e64 s[4:5], -1, v1
400399; GFX7CHECK-NEXT: v_cmp_gt_u32_e32 vcc, s6, v0
401400; GFX7CHECK-NEXT: s_and_b64 s[4:5], vcc, s[4:5]
402401; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -467,12 +466,11 @@ define i1 @negnormal_bf16(bfloat %x) nounwind {
467466; GFX7CHECK: ; %bb.0:
468467; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
469468; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
470- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
469+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], 0 , v0
471470; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
472471; GFX7CHECK-NEXT: v_add_i32_e32 v0, vcc, 0xffffff80, v0
473472; GFX7CHECK-NEXT: v_and_b32_e32 v0, 0xffff, v0
474473; GFX7CHECK-NEXT: s_movk_i32 s6, 0x7f00
475- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], 0, v1
476474; GFX7CHECK-NEXT: v_cmp_gt_u32_e32 vcc, s6, v0
477475; GFX7CHECK-NEXT: s_and_b64 s[4:5], vcc, s[4:5]
478476; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -601,11 +599,10 @@ define i1 @negsubnormal_bf16(bfloat %x) nounwind {
601599; GFX7CHECK: ; %bb.0:
602600; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
603601; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
604- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
602+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0 , v0
605603; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
606604; GFX7CHECK-NEXT: v_add_i32_e64 v0, s[4:5], -1, v0
607605; GFX7CHECK-NEXT: s_movk_i32 s4, 0x7f
608- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
609606; GFX7CHECK-NEXT: v_cmp_gt_u32_e64 s[4:5], s4, v0
610607; GFX7CHECK-NEXT: s_and_b64 s[4:5], s[4:5], vcc
611608; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -826,10 +823,9 @@ define i1 @negfinite_bf16(bfloat %x) nounwind {
826823; GFX7CHECK: ; %bb.0:
827824; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
828825; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
829- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
826+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0 , v0
830827; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
831828; GFX7CHECK-NEXT: s_movk_i32 s4, 0x7f80
832- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0, v1
833829; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], s4, v0
834830; GFX7CHECK-NEXT: s_and_b64 s[4:5], s[4:5], vcc
835831; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -1634,12 +1630,11 @@ define i1 @not_is_plus_normal_bf16(bfloat %x) {
16341630; GFX7CHECK: ; %bb.0:
16351631; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16361632; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
1637- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
1633+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], 0 , v0
16381634; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
16391635; GFX7CHECK-NEXT: v_add_i32_e32 v0, vcc, 0xffffff80, v0
16401636; GFX7CHECK-NEXT: v_and_b32_e32 v0, 0xffff, v0
16411637; GFX7CHECK-NEXT: s_movk_i32 s6, 0x7eff
1642- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], 0, v1
16431638; GFX7CHECK-NEXT: v_cmp_lt_u32_e32 vcc, s6, v0
16441639; GFX7CHECK-NEXT: s_or_b64 s[4:5], vcc, s[4:5]
16451640; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -1710,12 +1705,11 @@ define i1 @not_is_neg_normal_bf16(bfloat %x) {
17101705; GFX7CHECK: ; %bb.0:
17111706; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
17121707; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
1713- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v1, 16 , v0
1708+ ; GFX7CHECK-NEXT: v_cmp_lt_i32_e64 s[4:5], -1 , v0
17141709; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
17151710; GFX7CHECK-NEXT: v_add_i32_e32 v0, vcc, 0xffffff80, v0
17161711; GFX7CHECK-NEXT: v_and_b32_e32 v0, 0xffff, v0
17171712; GFX7CHECK-NEXT: s_movk_i32 s6, 0x7eff
1718- ; GFX7CHECK-NEXT: v_cmp_lt_i32_e64 s[4:5], -1, v1
17191713; GFX7CHECK-NEXT: v_cmp_lt_u32_e32 vcc, s6, v0
17201714; GFX7CHECK-NEXT: s_or_b64 s[4:5], vcc, s[4:5]
17211715; GFX7CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[4:5]
@@ -2068,10 +2062,9 @@ define i1 @not_ispositive_bf16(bfloat %x) {
20682062; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
20692063; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
20702064; GFX7CHECK-NEXT: v_lshrrev_b32_e32 v1, 16, v0
2071- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v2, 16 , v0
2065+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0 , v0
20722066; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
20732067; GFX7CHECK-NEXT: s_movk_i32 s6, 0x7f80
2074- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0, v2
20752068; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], s6, v0
20762069; GFX7CHECK-NEXT: s_mov_b32 s7, 0xff80
20772070; GFX7CHECK-NEXT: s_and_b64 s[4:5], s[4:5], vcc
@@ -2165,10 +2158,9 @@ define i1 @isnegative_bf16(bfloat %x) {
21652158; GFX7CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21662159; GFX7CHECK-NEXT: v_mul_f32_e32 v0, 1.0, v0
21672160; GFX7CHECK-NEXT: v_lshrrev_b32_e32 v1, 16, v0
2168- ; GFX7CHECK-NEXT: v_ashrrev_i32_e32 v2, 16 , v0
2161+ ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0 , v0
21692162; GFX7CHECK-NEXT: v_bfe_u32 v0, v0, 16, 15
21702163; GFX7CHECK-NEXT: s_movk_i32 s4, 0x7f80
2171- ; GFX7CHECK-NEXT: v_cmp_gt_i32_e32 vcc, 0, v2
21722164; GFX7CHECK-NEXT: v_cmp_gt_i32_e64 s[4:5], s4, v0
21732165; GFX7CHECK-NEXT: s_mov_b32 s6, 0xff80
21742166; GFX7CHECK-NEXT: s_and_b64 s[4:5], s[4:5], vcc
0 commit comments