[llvm] Reland "[LoopVectorizer] Add support for partial reductions" with non-phi operand fix. (PR #121744)
David Green via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 6 04:12:38 PST 2025
================
@@ -292,6 +292,66 @@ InstructionCost VPRecipeBase::computeCost(ElementCount VF,
llvm_unreachable("subclasses should implement computeCost");
}
+InstructionCost
+VPPartialReductionRecipe::computeCost(ElementCount VF,
+ VPCostContext &Ctx) const {
+ std::optional<unsigned> Opcode = std::nullopt;
+ VPRecipeBase *BinOpR = getOperand(0)->getDefiningRecipe();
+ if (auto *WidenR = dyn_cast<VPWidenRecipe>(BinOpR))
+ Opcode = std::make_optional(WidenR->getOpcode());
+
+ VPRecipeBase *ExtAR = BinOpR->getOperand(0)->getDefiningRecipe();
+ VPRecipeBase *ExtBR = BinOpR->getOperand(1)->getDefiningRecipe();
----------------
davemgreen wrote:
I think this should be protecting against cases where the there is no recipe, otherwise the getDefiningRecipe might be nullptr for values that are defined outside of the loop.
https://github.com/llvm/llvm-project/pull/121744
More information about the llvm-commits
mailing list