[llvm] [VPlan] Also duplicated scalar-steps when it enables sinking scalars. (PR #136021)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 18 04:20:59 PDT 2025
================
@@ -163,18 +163,25 @@ static bool sinkScalarOperands(VPlan &Plan) {
if (UI->getParent() == SinkTo)
return true;
NeedsDuplicating = UI->onlyFirstLaneUsed(SinkCandidate);
- // We only know how to duplicate VPRecipeRecipes for now.
- return NeedsDuplicating && isa<VPReplicateRecipe>(SinkCandidate);
+ // We only know how to duplicate VPRecipeRecipes and
+ // VPScalarIVStepsRecipes for now.
+ return NeedsDuplicating &&
+ isa<VPReplicateRecipe, VPScalarIVStepsRecipe>(SinkCandidate);
};
if (!all_of(SinkCandidate->users(), CanSinkWithUser))
continue;
if (NeedsDuplicating) {
if (ScalarVFOnly)
continue;
- Instruction *I = SinkCandidate->getUnderlyingInstr();
- auto *Clone = new VPReplicateRecipe(I, SinkCandidate->operands(), true);
- // TODO: add ".cloned" suffix to name of Clone's VPValue.
+ VPSingleDefRecipe *Clone;
+ if (isa<VPReplicateRecipe>(SinkCandidate)) {
+ Instruction *I = SinkCandidate->getUnderlyingInstr();
+ Clone = new VPReplicateRecipe(I, SinkCandidate->operands(), true);
----------------
ayalz wrote:
(Also independent) Could SinkCandidate->clone() also work for VPReplicateRecipe?
```
https://github.com/llvm/llvm-project/pull/136021
More information about the llvm-commits
mailing list