[llvm] [AArch64][CostModel] Improve cost estimate of scalarizing a vector di… (PR #118055)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 12 11:00:43 PST 2024


================
@@ -11561,9 +11561,25 @@ 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, {}, nullptr, TLI) +
-             CommonCost;
+      SmallVector<Value *, 16> Operands;
+      auto IsAllowedScalarTy = [](const Value *I) {
+        // Just to avoid regression with RISCV unittest.
+        return I->getType()->getPrimitiveSizeInBits() >= 32;
+      };
----------------
alexey-bataev wrote:

> adjusting RISCVTargetTransformInfo.cpp or updating the test & justifying the results is beyond my scope . w/o patch, casting is done only for scalar. w/ patch, its being done for all operands of the all the scalars.

In upstream you should care about all targets, you cannot introduce hacks just for your target. You can do this in your downstream version.

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


More information about the llvm-commits mailing list