[all-commits] [llvm/llvm-project] 3469db: [SLP]Add subvector vectorization for non-load nodes

Alexey Bataev via All-commits all-commits at lists.llvm.org
Wed Sep 25 07:24:03 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3469db82b5c821c94b58c0b81f03bbef51efa30b
      https://github.com/llvm/llvm-project/commit/3469db82b5c821c94b58c0b81f03bbef51efa30b
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2024-09-25 (Wed, 25 Sep 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/AArch64/loadorder.ll
    M llvm/test/Transforms/SLPVectorizer/AArch64/vectorizable-selects-uniform-cmps.ll
    M llvm/test/Transforms/SLPVectorizer/X86/buildvector-postpone-for-dependency.ll
    M llvm/test/Transforms/SLPVectorizer/X86/landing_pad.ll
    M llvm/test/Transforms/SLPVectorizer/X86/phi.ll
    M llvm/test/Transforms/SLPVectorizer/X86/reduction-logical.ll
    M llvm/test/Transforms/SLPVectorizer/X86/resched.ll

  Log Message:
  -----------
  [SLP]Add subvector vectorization for non-load nodes

Previously SLP vectorize supported clustered vectorization for loads
only. This patch adds support for "clustered" vectorization for other
instructions.
If the buildvector node contains "clusters", which can be vectorized
separately and then inserted into the resulting buildvector result, it
is better to do, since it may reduce the cost of the vector graph and
produce better vector code.
The patch does some analysis, if it is profitable to try to do this kind
of extra vectorization. It checks the scalar instructions and its
operands and tries to vectorize them only if they result in a better
graph.

Reviewers: RKSimon

Reviewed By: RKSimon

Pull Request: https://github.com/llvm/llvm-project/pull/108430



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