[llvm] b5c7213 - [LV] Use early return to simplify code structure
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 22 12:15:34 PDT 2022
Author: Philip Reames
Date: 2022-07-22T12:15:14-07:00
New Revision: b5c7213647aae9c456c0a82af46e7dae9e04bf49
URL: https://github.com/llvm/llvm-project/commit/b5c7213647aae9c456c0a82af46e7dae9e04bf49
DIFF: https://github.com/llvm/llvm-project/commit/b5c7213647aae9c456c0a82af46e7dae9e04bf49.diff
LOG: [LV] Use early return to simplify code structure
Added:
Modified:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index e86d56e83105..e82aca170159 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -9569,12 +9569,19 @@ void VPReplicateRecipe::execute(VPTransformState &State) {
return;
}
- // Generate scalar instances for all VF lanes of all UF parts, unless the
- // instruction is uniform inwhich case generate only the first lane for each
- // of the UF parts.
- unsigned EndLane = IsUniform ? 1 : State.VF.getKnownMinValue();
- assert((!State.VF.isScalable() || IsUniform) &&
- "Can't scalarize a scalable vector");
+ if (IsUniform) {
+ // Uniform within VL means we need to generate lane 0 only for each
+ // unrolled copy.
+ for (unsigned Part = 0; Part < State.UF; ++Part)
+ State.ILV->scalarizeInstruction(getUnderlyingInstr(), this,
+ VPIteration(Part, 0), IsPredicated,
+ State);
+ return;
+ }
+
+ // Generate scalar instances for all VF lanes of all UF parts.
+ assert(!State.VF.isScalable() && "Can't scalarize a scalable vector");
+ const unsigned EndLane = State.VF.getKnownMinValue();
for (unsigned Part = 0; Part < State.UF; ++Part)
for (unsigned Lane = 0; Lane < EndLane; ++Lane)
State.ILV->scalarizeInstruction(getUnderlyingInstr(), this,
More information about the llvm-commits
mailing list