[llvm] [RISCV][CostModel] Correct the cost of some reductions (PR #118072)

via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 30 20:32:52 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);
----------------
LiqinWeng wrote:

mycost : LT.first  - 1 + getRISCVInstructionCost + 1(1 is cost of the andi)

https://github.com/llvm/llvm-project/pull/118072


More information about the llvm-commits mailing list