[llvm] [VPlan] Avoid branching around State.get (NFC) (PR #159042)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 16 04:32:37 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-vectorizers
Author: Ramkumar Ramachandra (artagnon)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/159042.diff
1 Files Affected:
- (modified) llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp (+3-9)
``````````diff
diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
index 2844b8348027b..dbd54f8bbbb14 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
@@ -1933,10 +1933,8 @@ void VPWidenSelectRecipe::execute(VPTransformState &State) {
// loop. This means that we can't just use the original 'cond' value.
// We have to take the 'vectorized' value and pick the first lane.
// Instcombine will make this a no-op.
- auto *InvarCond =
- isInvariantCond() ? State.get(getCond(), VPLane(0)) : nullptr;
+ Value *Cond = State.get(getCond(), isInvariantCond());
- Value *Cond = InvarCond ? InvarCond : State.get(getCond());
Value *Op0 = State.get(getOperand(1));
Value *Op1 = State.get(getOperand(2));
Value *Sel = State.Builder.CreateSelect(Cond, Op0, Op1);
@@ -2496,18 +2494,14 @@ void VPWidenGEPRecipe::execute(VPTransformState &State) {
// produce a vector of pointers unless VF is scalar.
// The pointer operand of the new GEP. If it's loop-invariant, we
// won't broadcast it.
- auto *Ptr = isPointerLoopInvariant() ? State.get(getOperand(0), VPLane(0))
- : State.get(getOperand(0));
+ auto *Ptr = State.get(getOperand(0), isPointerLoopInvariant());
// Collect all the indices for the new GEP. If any index is
// loop-invariant, we won't broadcast it.
SmallVector<Value *, 4> Indices;
for (unsigned I = 1, E = getNumOperands(); I < E; I++) {
VPValue *Operand = getOperand(I);
- if (isIndexLoopInvariant(I - 1))
- Indices.push_back(State.get(Operand, VPLane(0)));
- else
- Indices.push_back(State.get(Operand));
+ Indices.push_back(State.get(Operand, isIndexLoopInvariant(I - 1)));
}
// Create the new GEP. Note that this GEP may be a scalar if VF == 1,
``````````
</details>
https://github.com/llvm/llvm-project/pull/159042
More information about the llvm-commits
mailing list