@@ -444,16 +444,14 @@ define amdgpu_ps i32 @bfe_u64(i64 inreg %val0) {
444444define amdgpu_ps i32 @bcnt032 (i32 inreg %val0 ) {
445445; CHECK-LABEL: bcnt032:
446446; CHECK: ; %bb.0:
447- ; CHECK-NEXT: s_bcnt1_i32_b32 s0, s0
448- ; CHECK-NEXT: s_sub_i32 s0, 32, s0
449- ; CHECK-NEXT: s_cmp_lg_u32 s0, 0
450- ; CHECK-NEXT: ;;#ASMSTART
451- ; CHECK-NEXT: ; use s0
452- ; CHECK-NEXT: ;;#ASMEND
453- ; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
454- ; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
455- ; CHECK-NEXT: v_readfirstlane_b32 s0, v0
456- ; CHECK-NEXT: ; return to shader part epilog
447+ ; CHECK-NEXT: s_bcnt0_i32_b32 s0, s0
448+ ; CHECK-NEXT: ;;#ASMSTART
449+ ; CHECK-NEXT: ; use s0
450+ ; CHECK-NEXT: ;;#ASMEND
451+ ; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
452+ ; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
453+ ; CHECK-NEXT: v_readfirstlane_b32 s0, v0
454+ ; CHECK-NEXT: ; return to shader part epilog
457455 %result = call i32 @llvm.ctpop.i32 (i32 %val0 ) nounwind readnone
458456 %result2 = sub i32 32 , %result
459457 call void asm "; use $0" , "s" (i32 %result2 )
@@ -465,17 +463,15 @@ define amdgpu_ps i32 @bcnt032(i32 inreg %val0) {
465463define amdgpu_ps i32 @bcnt064 (i64 inreg %val0 ) {
466464; CHECK-LABEL: bcnt064:
467465; CHECK: ; %bb.0:
468- ; CHECK-NEXT: s_bcnt1_i32_b64 s0, s[0:1]
469- ; CHECK-NEXT: s_sub_u32 s0, 64, s0
470- ; CHECK-NEXT: s_subb_u32 s1, 0, 0
471- ; CHECK-NEXT: s_cmp_lg_u64 s[0:1], 0
472- ; CHECK-NEXT: ;;#ASMSTART
473- ; CHECK-NEXT: ; use s[0:1]
474- ; CHECK-NEXT: ;;#ASMEND
475- ; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
476- ; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
477- ; CHECK-NEXT: v_readfirstlane_b32 s0, v0
478- ; CHECK-NEXT: ; return to shader part epilog
466+ ; CHECK-NEXT: s_bcnt0_i32_b64 s0, s[0:1]
467+ ; CHECK-NEXT: s_mov_b32 s1, 0
468+ ; CHECK-NEXT: ;;#ASMSTART
469+ ; CHECK-NEXT: ; use s[0:1]
470+ ; CHECK-NEXT: ;;#ASMEND
471+ ; CHECK-NEXT: s_cselect_b64 s[0:1], -1, 0
472+ ; CHECK-NEXT: v_cndmask_b32_e64 v0, 0, 1, s[0:1]
473+ ; CHECK-NEXT: v_readfirstlane_b32 s0, v0
474+ ; CHECK-NEXT: ; return to shader part epilog
479475 %result = call i64 @llvm.ctpop.i64 (i64 %val0 ) nounwind readnone
480476 %result2 = sub i64 64 , %result
481477 call void asm "; use $0" , "s" (i64 %result2 )
0 commit comments