[llvm] [VPlan] Unroll VPReplicateRecipe by VF. (PR #142433)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 22 04:26:45 PDT 2025
================
@@ -2627,45 +2662,30 @@ static void scalarizeInstruction(const Instruction *Instr,
void VPReplicateRecipe::execute(VPTransformState &State) {
Instruction *UI = getUnderlyingInstr();
- if (State.Lane) { // Generate a single instance.
- assert((State.VF.isScalar() || !isSingleScalar()) &&
- "uniform recipe shouldn't be predicated");
- assert(!State.VF.isScalable() && "Can't scalarize a scalable vector");
- scalarizeInstruction(UI, this, *State.Lane, State);
- // Insert scalar instance packing it into a vector.
- if (State.VF.isVector() && shouldPack()) {
- Value *WideValue;
- // If we're constructing lane 0, initialize to start from poison.
- if (State.Lane->isFirstLane()) {
- assert(!State.VF.isScalable() && "VF is assumed to be non scalable.");
- WideValue = PoisonValue::get(VectorType::get(UI->getType(), State.VF));
- } else {
- WideValue = State.get(this);
- }
- State.set(this, State.packScalarIntoVectorizedValue(this, WideValue,
- *State.Lane));
- }
- return;
- }
- if (IsSingleScalar) {
- // Uniform within VL means we need to generate lane 0.
+ if (!State.Lane) {
+ assert(IsSingleScalar &&
+ "VPReplicateRecipes outside replicate regions must be unrolled");
----------------
ayalz wrote:
```suggestion
"VPReplicateRecipes outside replicate regions must have already been unrolled");
```
https://github.com/llvm/llvm-project/pull/142433
More information about the llvm-commits
mailing list