[llvm] [SLP]Initial support for non-power-of-2 vectorization (PR #151530)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 5 14:04:07 PDT 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp -- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
index 2a70e175e..54f331b8b 100644
--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
@@ -7696,11 +7696,10 @@ BoUpSLP::LoadsState BoUpSLP::canVectorizeLoads(
InstructionCost VectorGEPCost =
(LS == LoadsState::ScatterVectorize && ProfitableGatherPointers)
? 0
- : getGEPCosts(TTI,
- ArrayRef(PointerOps).slice(SliceStart, SliceVF),
- LI0->getPointerOperand(),
- Instruction::GetElementPtr, CostKind, ScalarTy,
- SubVecTy)
+ : getGEPCosts(
+ TTI, ArrayRef(PointerOps).slice(SliceStart, SliceVF),
+ LI0->getPointerOperand(), Instruction::GetElementPtr,
+ CostKind, ScalarTy, SubVecTy)
.second;
if (LS == LoadsState::ScatterVectorize) {
if (static_cast<unsigned>(
@@ -19427,8 +19426,8 @@ BoUpSLP::isGatherShuffledSingleRegisterEntry(
Entries.swap(TempEntries);
if (EntryLanes.size() == Entries.size() &&
!VL.equals(ArrayRef(TE->Scalars)
- .slice(MaskBase, getNumElems(TE->Scalars.size(),
- SliceSize, Part)))) {
+ .slice(MaskBase, getNumElems(TE->Scalars.size(), SliceSize,
+ Part)))) {
// We may have here 1 or 2 entries only. If the number of scalars is equal
// to the number of entries, no need to do the analysis, it is not very
// profitable. Since VL is not the same as TE->Scalars, it means we already
@@ -25444,10 +25443,9 @@ SLPVectorizerPass::vectorizeStoreChain(ArrayRef<Value *> Chain, BoUpSLP &R,
Analysis.buildInstructionsState(ValOps.getArrayRef(), R);
if (all_of(ValOps, IsaPred<Instruction>) && ValOps.size() > 1) {
DenseSet<Value *> Stores(Chain.begin(), Chain.end());
- bool IsAllowedSize =
- hasFullVectorsOrPowerOf2(*TTI, ValOps.front()->getType(),
- ValOps.size()) ||
- isAllowedNonPowerOf2VF(ValOps.size());
+ bool IsAllowedSize = hasFullVectorsOrPowerOf2(
+ *TTI, ValOps.front()->getType(), ValOps.size()) ||
+ isAllowedNonPowerOf2VF(ValOps.size());
if ((!IsAllowedSize && S && S.getOpcode() != Instruction::Load &&
(!S.getMainOp()->isSafeToRemove() ||
any_of(ValOps.getArrayRef(),
``````````
</details>
https://github.com/llvm/llvm-project/pull/151530
More information about the llvm-commits
mailing list