aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
diff options
context:
space:
mode:
authorDavid Green <david.green@arm.com>2024-07-27 11:18:56 +0100
committerGitHub <noreply@github.com>2024-07-27 11:18:56 +0100
commitf2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b (patch)
treec111590df77df72636c68ce20d4685de08a1ddbb /clang/lib/CodeGen/CodeGenFunction.cpp
parentfe07d9aa410518c5b631a065ddc5782a623af030 (diff)
downloadllvm-f2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b.zip
llvm-f2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b.tar.gz
llvm-f2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b.tar.bz2
[SLP] Order clustered load base pointers by ascending offsets (#100653)
This attempts to fix a regression from #98025, where the new order of reduction nodes causes later passes to not be able to produce as nice shuffles. The issue boils down to picking an order of [0 1 3 2] for loaded v4i8 values, which meant later parts could not find a simpler ordering for the shuffles given the legal nodes available in AArch64. If instead we make sure they are ordered [0 1 2 3] then everything can fall into place. In order to produce a better order that is more likely to work in more cases, this patch takes the existing clustered loads and sort the base pointers if there is an order between them. i.e if `V2 == gep (V1, X)` then V1 is sorted before V2.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenFunction.cpp')
0 files changed, 0 insertions, 0 deletions