================ @@ -8362,9 +8362,12 @@ BoUpSLP::getEntryCost(const TreeEntry *E, ArrayRef<Value *> VectorizedVals, unsigned OpIdx = isa<UnaryOperator>(VL0) ? 0 : 1; TTI::OperandValueInfo Op1Info = getOperandInfo(E->getOperand(0)); TTI::OperandValueInfo Op2Info = getOperandInfo(E->getOperand(OpIdx)); - return TTI->getArithmeticInstrCost(ShuffleOrOp, VecTy, CostKind, Op1Info, - Op2Info) + - CommonCost; + InstructionCost VecInstrCost = TTI->getArithmeticInstrCost( + ShuffleOrOp, VecTy, CostKind, Op1Info, Op2Info); + // Some targets can replace frem with vector library calls. + InstructionCost VecCallCost = + getVecLibCallCost(VL0, TTI, TLI, VecTy, CostKind); + return std::min(VecInstrCost, VecCallCost) + CommonCost; ---------------- paulwalker-arm wrote:
This seems a little arbitrary/complex given we know only one of the costs is valid at any time. Perhaps it suggests you really want to implement `getVecLibAwareArithmeticInstrCost`? https://github.com/llvm/llvm-project/pull/82488 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits