Skip to content

Commit 9ef3072

Browse files
committed
[RISCVISel] Compute leading zeros for RISCVISD::VCPOP_VL node
1 parent fbf630a commit 9ef3072

File tree

3 files changed

+7
-5
lines changed

3 files changed

+7
-5
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19462,6 +19462,11 @@ void RISCVTargetLowering::computeKnownBitsForTargetNode(const SDValue Op,
1946219462
Known = Known.intersectWith(Known2);
1946319463
break;
1946419464
}
19465+
case RISCVISD::VCPOP_VL: {
19466+
KnownBits Known2 = DAG.computeKnownBits(Op.getOperand(2), Depth + 1);
19467+
Known.Zero.setBitsFrom(Known2.countMaxActiveBits());
19468+
break;
19469+
}
1946519470
case RISCVISD::CZERO_EQZ:
1946619471
case RISCVISD::CZERO_NEZ:
1946719472
Known = DAG.computeKnownBits(Op.getOperand(0), Depth + 1);

llvm/test/CodeGen/RISCV/rvv/vcpop-compute-known-bits.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ define i32 @test(<8 x i1> %mask) {
77
; CHECK: # %bb.0:
88
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
99
; CHECK-NEXT: vcpop.m a0, v0
10-
; CHECK-NEXT: andi a0, a0, 255
1110
; CHECK-NEXT: ret
1211
%1 = bitcast <8 x i1> %mask to i8
1312
%2 = call range(i8 0, 9) i8 @llvm.ctpop.i8(i8 %1)

llvm/test/CodeGen/RISCV/rvv/vcpop-shl-zext-opt.ll

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ define dso_local void @test_store1(ptr nocapture noundef writeonly %dst, ptr noc
3838
; RV32-NEXT: vcpop.m a7, v10
3939
; RV32-NEXT: vsetvli zero, a7, e32, m2, ta, ma
4040
; RV32-NEXT: vse32.v v12, (a0)
41-
; RV32-NEXT: slli a7, a7, 26
42-
; RV32-NEXT: srli a7, a7, 24
41+
; RV32-NEXT: slli a7, a7, 2
4342
; RV32-NEXT: or t0, t0, a6
4443
; RV32-NEXT: add a0, a0, a7
4544
; RV32-NEXT: mv a7, t1
@@ -101,8 +100,7 @@ define dso_local void @test_store1(ptr nocapture noundef writeonly %dst, ptr noc
101100
; RV64-NEXT: vcpop.m a7, v10
102101
; RV64-NEXT: vsetvli zero, a7, e32, m2, ta, ma
103102
; RV64-NEXT: vse32.v v12, (a0)
104-
; RV64-NEXT: slli a7, a7, 58
105-
; RV64-NEXT: srli a7, a7, 56
103+
; RV64-NEXT: slli a7, a7, 2
106104
; RV64-NEXT: add a0, a0, a7
107105
; RV64-NEXT: bne a6, a5, .LBB0_4
108106
; RV64-NEXT: # %bb.5: # %middle.block

0 commit comments

Comments
 (0)