[llvm] [VPlan] Add VPValue for VF, use it for VPWidenIntOrFpInductionRecipe. (PR #95305)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 6 03:33:41 PDT 2024
================
@@ -934,8 +934,19 @@ void VPlan::prepareToExecute(Value *TripCountV, Value *VectorTripCountV,
IRBuilder<> Builder(State.CFG.PrevBB->getTerminator());
// FIXME: Model VF * UF computation completely in VPlan.
- VFxUF.setUnderlyingValue(
- createStepForVF(Builder, TripCountV->getType(), State.VF, State.UF));
+ if (VF.getNumUsers()) {
+ Value *RuntimeVF =
+ createStepForVF(Builder, TripCountV->getType(), State.VF, 1);
+ VF.setUnderlyingValue(RuntimeVF);
+ VFxUF.setUnderlyingValue(
+ State.UF > 1
+ ? Builder.CreateMul(
+ RuntimeVF, ConstantInt::get(TripCountV->getType(), State.UF))
+ : RuntimeVF);
+ } else {
+ VFxUF.setUnderlyingValue(
----------------
ayalz wrote:
I see earlier that
> ... Code for VF is only generated if there are users of VF, to avoid unnecessary test changes.
Code for VF must be generated regardless of direct users, issues is its position and possible repetition?
https://github.com/llvm/llvm-project/pull/95305
More information about the llvm-commits
mailing list