[llvm] [GISel][RISCV] Compute CTPOP of small odd-sized integer correctly (PR #168559)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 18 08:11:49 PST 2025
================
@@ -7678,6 +7678,18 @@ LegalizerHelper::lowerBitCount(MachineInstr &MI) {
unsigned Size = Ty.getSizeInBits();
MachineIRBuilder &B = MIRBuilder;
+ // Lift small odd-size integer to 8-bit integer.
+ if (Size < 8) {
+ LLT NewTy = LLT::scalar(8);
+ auto ZExt = B.buildZExt(NewTy, SrcReg);
+ auto NewCTPOP = B.buildCTPOP(NewTy, ZExt);
+ Observer.changingInstr(MI);
+ MI.setDesc(TII.get(TargetOpcode::G_TRUNC));
----------------
topperc wrote:
can we use widenScalarSrc and widenScalarDst here?
https://github.com/llvm/llvm-project/pull/168559
More information about the llvm-commits
mailing list