[all-commits] [llvm/llvm-project] 252567: [SLP] Initial vectorization of non-power-of-2 ops.

Florian Hahn via All-commits all-commits at lists.llvm.org
Thu Feb 8 03:24:49 PST 2024


  Branch: refs/reviewable/pr77790/r1
  Home:   https://github.com/llvm/llvm-project
  Commit: 252567a8223e4acf1179be01a4b5b5a88ae4607f
      https://github.com/llvm/llvm-project/commit/252567a8223e4acf1179be01a4b5b5a88ae4607f
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/AArch64/vec15-base.ll
    M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-base.ll
    M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-calls.ll
    M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-reorder-reshuffle.ll
    M llvm/test/Transforms/SLPVectorizer/X86/odd_store.ll
    M llvm/test/Transforms/SLPVectorizer/X86/vect_copyable_in_binops.ll

  Log Message:
  -----------
  [SLP] Initial vectorization of non-power-of-2 ops.

This patch enables vectorization for non-power-of-2 VFs. Initially only
VFs where adding 1 makes the VF a power-of-of-2, i.e. we can still make
relatively effective use of the vectors.

It relies on the existing target cost-models to return accurate costs for
non-power-of-2 vectors. I checked mostly AArch64 and X86 and
there the costs seem reasonable for the costs I checked, although
I expect there will be a need to refine both the cost-models and lowering
to make most effective use of non-power-of-2 SLP vectorization.

Note that re-ordering and shuffling is not implemented for nodes
requiring padding yet to keep the initial implementation simpler.

The feature is guarded by a new flag, off by defaul for now.


  Commit: 0bb957bf61f9f5ed2f6c5805d9dd3f8721272962
      https://github.com/llvm/llvm-project/commit/0bb957bf61f9f5ed2f6c5805d9dd3f8721272962
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M llvm/test/Transforms/SLPVectorizer/AArch64/vec3-reorder-reshuffle.ll

  Log Message:
  -----------
  Remove stale PADDING check lines, fix POW2/NON-POW2 prefixes in test.


  Commit: 84cf9b90017d48879811c04662c8adb4f60be540
      https://github.com/llvm/llvm-project/commit/84cf9b90017d48879811c04662c8adb4f60be540
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-01-31 (Wed, 31 Jan 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

  Log Message:
  -----------
  !fixup Address latest comments, thanks!


  Commit: 552b8aaf1563c9c074965dd24548d8cd446a2b2e
      https://github.com/llvm/llvm-project/commit/552b8aaf1563c9c074965dd24548d8cd446a2b2e
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-02-01 (Thu, 01 Feb 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

  Log Message:
  -----------
  !fixup  Add fixme to processBuildVector

also use {} instead of (empty) ResueShuffleIndices.


Compare: https://github.com/llvm/llvm-project/compare/252567a8223e%5E...552b8aaf1563


More information about the All-commits mailing list