[llvm] 7b026ac - [VPlan] Simplify extract-lane of all single-scalars (#194838)
via llvm-commits
llvm-commits at lists.llvm.org
Sat May 2 05:03:01 PDT 2026
Author: Ramkumar Ramachandra
Date: 2026-05-02T12:02:56Z
New Revision: 7b026ac8d55fe642c7513410ee2bdbb5aee01c0f
URL: https://github.com/llvm/llvm-project/commit/7b026ac8d55fe642c7513410ee2bdbb5aee01c0f
DIFF: https://github.com/llvm/llvm-project/commit/7b026ac8d55fe642c7513410ee2bdbb5aee01c0f.diff
LOG: [VPlan] Simplify extract-lane of all single-scalars (#194838)
Checking against vputils::isSingleScalar is sufficient for both
correctness and profitability.
Added:
Modified:
llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
llvm/test/Transforms/LoopVectorize/X86/replicating-load-store-costs.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
index 11e5b18bca871..5facd6e15159a 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
@@ -1794,11 +1794,9 @@ static void simplifyRecipe(VPSingleDefRecipe *Def, VPTypeAnalysis &TypeInfo) {
}
if (match(Def, m_ExtractLastLane(m_VPValue(A))) &&
- ((isa<VPInstruction>(A) && vputils::isSingleScalar(A)) ||
- (isa<VPReplicateRecipe>(A) &&
- cast<VPReplicateRecipe>(A)->isSingleScalar())) &&
- all_of(A->users(),
- [Def, A](VPUser *U) { return U->usesScalars(A) || Def == U; })) {
+ vputils::isSingleScalar(A) && all_of(A->users(), [Def, A](VPUser *U) {
+ return U->usesScalars(A) || Def == U;
+ })) {
return Def->replaceAllUsesWith(A);
}
diff --git a/llvm/test/Transforms/LoopVectorize/X86/replicating-load-store-costs.ll b/llvm/test/Transforms/LoopVectorize/X86/replicating-load-store-costs.ll
index 6f74f7c5154b3..3063207e47b25 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/replicating-load-store-costs.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/replicating-load-store-costs.ll
@@ -477,7 +477,6 @@ define double @test_load_used_by_other_load_scev(ptr %ptr.a, ptr %ptr.b, ptr %pt
; I64-NEXT: [[TMP3:%.*]] = icmp eq i64 [[INDEX_NEXT]], 100
; I64-NEXT: br i1 [[TMP3]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]]
; I64: [[MIDDLE_BLOCK]]:
-; I64-NEXT: [[VECTOR_RECUR_EXTRACT:%.*]] = extractelement <2 x double> [[TMP2]], i64 1
; I64-NEXT: br label %[[SCALAR_PH:.*]]
; I64: [[SCALAR_PH]]:
;
More information about the llvm-commits
mailing list