[lld] [flang] [lldb] [compiler-rt] [mlir] [polly] [clang] [llvm] [openmp] [VPlan] Compute scalable VF in preheader for induction increment. (PR #74762)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 8 15:12:59 PST 2023
================
@@ -340,8 +340,14 @@ Value *VPInstruction::generateInstruction(VPTransformState &State,
auto *Phi = State.get(getOperand(0), 0);
// The loop step is equal to the vectorization factor (num of SIMD
// elements) times the unroll factor (num of SIMD instructions).
- Value *Step =
- createStepForVF(Builder, Phi->getType(), State.VF, State.UF);
+ Value *Step;
+ {
+ BasicBlock *VectorPH = State.CFG.getPreheaderBBFor(this);
+ IRBuilder<> PHBuilder(VectorPH->getTerminator());
+ // Step is loop-invariant, calls to vscale will be placed in the
+ // preheader.
+ Step = createStepForVF(PHBuilder, Phi->getType(), State.VF, State.UF);
+ }
----------------
ayalz wrote:
```suggestion
// Step is loop-invariant, calls to vscale will be placed in the preheader.
BasicBlock *VectorPH = State.CFG.getPreheaderBBFor(this);
IRBuilder<> PHBuilder(VectorPH->getTerminator());
Value *Step = createStepForVF(PHBuilder, Phi->getType(), State.VF, State.UF);
```
(no need for the bracketed block, which was needed for the point guard.)
https://github.com/llvm/llvm-project/pull/74762
More information about the cfe-commits
mailing list