[llvm] [RISCV][CostModel] Correct the cost of some reductions (PR #118072)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 30 03:06:42 PST 2024
================
@@ -1534,6 +1534,13 @@ RISCVTTIImpl::getArithmeticReductionCost(unsigned Opcode, VectorType *Ty,
getRISCVInstructionCost(Opcodes, LT.second, CostKind) +
getCmpSelInstrCost(Instruction::ICmp, ElementTy, ElementTy,
CmpInst::ICMP_EQ, CostKind);
+ } else if (ISD == ISD::XOR) {
+ // Example sequences:
+ // vsetvli a0, zero, e8, mf8, ta, ma
+ // vcpop.m a0, v0
+ // andi a0, a0, 1
+ Opcodes = {RISCV::VCPOP_M};
+ return LT.first + getRISCVInstructionCost(Opcodes, LT.second, CostKind);
----------------
lukel97 wrote:
Shouldn't this be
```suggestion
return LT.first * getRISCVInstructionCost(Opcodes, LT.second, CostKind);
```
With that said, I'm also not sure why the existing sequences are adding the legalization cost instead of multiplying it. We multiply it everywhere else in RISCVTargetTransformInfo. Maybe this is something to fix in a follow up patch
https://github.com/llvm/llvm-project/pull/118072
More information about the llvm-commits
mailing list