[all-commits] [llvm/llvm-project] f2d2ae: [SLP] Order clustered load base pointers by ascend...
David Green via All-commits
all-commits at lists.llvm.org
Sat Jul 27 03:19:18 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: f2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b
https://github.com/llvm/llvm-project/commit/f2d2ae3f5a8e45c1386bf71e403d78cfee52cb7b
Author: David Green <david.green at arm.com>
Date: 2024-07-27 (Sat, 27 Jul 2024)
Changed paths:
M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
M llvm/test/Transforms/PhaseOrdering/AArch64/slpordering.ll
M llvm/test/Transforms/SLPVectorizer/AArch64/loadorder.ll
Log Message:
-----------
[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.
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