[clang-tools-extra] [clang] [llvm] [SLP]Improve findReusedOrderedScalars and graph rotation. (PR #77529)

Alexey Bataev via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 30 06:14:57 PST 2024


alexey-bataev wrote:

> Please can you add better comments explaining the process

Improves the rendering info, taken from gathered/buildvector nodes.
Currently, this info is taken only from vector nodes. E.g. if we have 2 nodes: vectorized <a1, a2, a3, a4> and gather/buildvector <a2, a1, a3, a4>, the reoder info is build only based on the vectorized node (how we need to reshuffle vectorized node to build the gathered/buildvector node). It does not take into account the neither the ordering within basic block, nor ordering because of other gathered/buildvector nodes, as codegen/cost model currently does.
The patch improves this process by using same approach, as codegen/cost model. Unfortunately, it cannot be unified with codegen/cost model approach directly (see processBuildVector template function, used for codegen/cost), because it requires some extra filtering, e.g. if the order comes from multiple nodes, it is not profitable to use it in many cases, since it may break the ordering that comes from the single node permutation. But the base process is still the same and relies on same functions, as codegen/cost model does.

https://github.com/llvm/llvm-project/pull/77529


More information about the cfe-commits mailing list