diff options
author | Mel Chen <mel.chen@sifive.com> | 2025-07-02 18:16:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-02 18:16:02 +0800 |
commit | bc8dad1c7ef02f9a9d8a07c242fc3db470a7579b (patch) | |
tree | 42662f312d48df581bbe46865664183439df42de /clang/lib/Basic/SourceManager.cpp | |
parent | 6e1e89ee380e1ce133e3525abe64d95d5ae0326e (diff) | |
download | llvm-bc8dad1c7ef02f9a9d8a07c242fc3db470a7579b.zip llvm-bc8dad1c7ef02f9a9d8a07c242fc3db470a7579b.tar.gz llvm-bc8dad1c7ef02f9a9d8a07c242fc3db470a7579b.tar.bz2 |
[VPlan] Emit VPVectorEndPointerRecipe for reverse interleave pointer adjustment (#144864)
A reverse interleave access is essentially composed of multiple
load/store operations with same negative stride, and their addresses are
based on the last lane address of member 0 in the interleaved group.
Currently, we already have VPVectorEndPointerRecipe for computing the
last lane address of consecutive reverse memory accesses. This patch
extends VPVectorEndPointerRecipe to support constant stride and extracts
the reverse interleave group address adjustment from
VPInterleaveRecipe::execute, replacing it with a
VPVectorEndPointerRecipe.
The final goal is to support interleaved accesses with EVL tail folding.
Given that VPInterleaveRecipe is large and tightly coupled — combining
both load and store, and embedding operations like reverse pointer
adjustion (GEP), widen load/store, deinterleave/interleave, and reversal
— breaking it down into smaller, dedicated recipes may allow
VPlanTransforms::tryAddExplicitVectorLength to lower them into EVL-aware
form more effectively.
One foreseeable challenge is that
VPlanTransforms::convertToConcreteRecipes currently runs after
tryAddExplicitVectorLength, so decomposing VPInterleaveRecipe will
likely need to happen earlier in the pipeline to be effective.
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
0 files changed, 0 insertions, 0 deletions