[all-commits] [llvm/llvm-project] 1c504b: [VPlan] Scalarize to first-lane-only directly on V...
Andrei Elovikov via All-commits
all-commits at lists.llvm.org
Mon Apr 27 09:35:32 PDT 2026
Branch: refs/heads/users/eas/vplan-based-first-lane-only-scalarize
Home: https://github.com/llvm/llvm-project
Commit: 1c504b3dbf3b18272ba912f2da60a3648a4d77e7
https://github.com/llvm/llvm-project/commit/1c504b3dbf3b18272ba912f2da60a3648a4d77e7
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.h
M llvm/test/Transforms/LoopVectorize/AArch64/binop-costs.ll
M llvm/test/Transforms/LoopVectorize/VPlan/vplan-print-after-all.ll
M llvm/test/Transforms/LoopVectorize/X86/drop-poison-generating-flags.ll
M llvm/test/Transforms/LoopVectorize/X86/funclet.ll
M llvm/test/Transforms/LoopVectorize/pr37248.ll
M llvm/test/Transforms/LoopVectorize/runtime-check-needed-but-empty.ll
Log Message:
-----------
[VPlan] Scalarize to first-lane-only directly on VPlan
This is needed to enable subsequent https://github.com/llvm/llvm-project/pull/182595.
I don't think we can fully port all scalarization logic from the legacy
path to VPlan-based right now because that would require us to introduce
interleave groups much earlier in VPlan pipeline, and without that we
can't really `assert` this new decision matches the previous CM-based
one. And without those `assert`s it's really hard to ensure we properly
port all the previous logic.
As such, I decided just to implement something much simpler that would
be enough for #182595. However, we perform this transformation before
delegating to the old CM-based decision, so it **is** effective
immediately and taking precedence even for consecutive loads/stores
right away.
Depends on https://github.com/llvm/llvm-project/pull/182592 but is stacked on
top of https://github.com/llvm/llvm-project/pull/182594 to enable linear
stacking for https://github.com/llvm/llvm-project/pull/182595.
Commit: 385003306f77358f1bec4a3d852ac6e1b86e6bad
https://github.com/llvm/llvm-project/commit/385003306f77358f1bec4a3d852ac6e1b86e6bad
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Use `reverse`/`IsaPred`
Commit: ada4b13029429ddaa29e3f9f527bcc124dea402e
https://github.com/llvm/llvm-project/commit/ada4b13029429ddaa29e3f9f527bcc124dea402e
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.h
Log Message:
-----------
Don't pass RecipeBuilder
Legacy calls `setRecipe` on all processed recipes but really queries `getRecipe`
for memory operations only, that we don't touch in the scalarization as that
happens after all memory recipes has been processed.
Commit: ff7e66d53726d472a6c5d87cfca9183e29039dde
https://github.com/llvm/llvm-project/commit/ff7e66d53726d472a6c5d87cfca9183e29039dde
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Just use `vputils::onlyFirstLaneUsed`
Commit: 7722a1f02a73c2e28b36d4a6b36fdd3567773082
https://github.com/llvm/llvm-project/commit/7722a1f02a73c2e28b36d4a6b36fdd3567773082
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Extend post_order's lifetime
Commit: c742b3ca847b5435b09cf97435a9513691ad0c94
https://github.com/llvm/llvm-project/commit/c742b3ca847b5435b09cf97435a9513691ad0c94
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Minor stylistic cleanup
Commit: e192fc24e9a9474b565545ab07544f79f037cbda
https://github.com/llvm/llvm-project/commit/e192fc24e9a9474b565545ab07544f79f037cbda
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Addressing code review comments
Commit: 65370d66900b321c2818d3c6e6bc366045a29a1c
https://github.com/llvm/llvm-project/commit/65370d66900b321c2818d3c6e6bc366045a29a1c
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Use `post_order` directly as `vp_post_order_shallow` has been removed
Commit: b9785fc765ebf0063db29ea39026262227940267
https://github.com/llvm/llvm-project/commit/b9785fc765ebf0063db29ea39026262227940267
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
use VPWidenIntOrFpInductionRecipe for canonical IV bailouts
Commit: 09a556e5c199d8c9c856db023fbf9978a7f42058
https://github.com/llvm/llvm-project/commit/09a556e5c199d8c9c856db023fbf9978a7f42058
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Update llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Co-authored-by: Ramkumar Ramachandra <artagnon at tenstorrent.com>
Commit: 9bb907bae1c6881b5649304bf0787e6c0eecf6d0
https://github.com/llvm/llvm-project/commit/9bb907bae1c6881b5649304bf0787e6c0eecf6d0
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlan.h
M llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
Log Message:
-----------
Add VPRecipeBase::isSafeToSpeculativelyExecute
Commit: c309f17e58cda968fdba393899cede7e25fe1448
https://github.com/llvm/llvm-project/commit/c309f17e58cda968fdba393899cede7e25fe1448
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
Log Message:
-----------
More conservative isSafeToSpeculativelyExecute
Commit: 0e9ccc1d47f941d5fff3717daec2f843ef4fab62
https://github.com/llvm/llvm-project/commit/0e9ccc1d47f941d5fff3717daec2f843ef4fab62
Author: Andrei Elovikov <andrei.elovikov at sifive.com>
Date: 2026-04-27 (Mon, 27 Apr 2026)
Changed paths:
M llvm/test/Transforms/LoopVectorize/extract-value-widen.ll
Log Message:
-----------
Update test after rebase
Compare: https://github.com/llvm/llvm-project/compare/87b95d8fa0f3...0e9ccc1d47f9
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list