[all-commits] [llvm/llvm-project] e61ad7: [LV] Compute register usage for interleaving on VP...

Sam Tebbs via All-commits all-commits at lists.llvm.org
Wed Apr 2 07:42:19 PDT 2025


  Branch: refs/heads/users/SamTebbs33/reg-pressure
  Home:   https://github.com/llvm/llvm-project
  Commit: e61ad769cbf0173256e99c38354ecb72ab903275
      https://github.com/llvm/llvm-project/commit/e61ad769cbf0173256e99c38354ecb72ab903275
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Transforms/LoopVectorize/AArch64/i1-reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/LoongArch/reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/PowerPC/exit-branch-cost.ll
    M llvm/test/Transforms/LoopVectorize/PowerPC/reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/reg-usage-bf16.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/reg-usage-f16.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/riscv-vector-reverse.ll
    M llvm/test/Transforms/LoopVectorize/X86/i1-reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/X86/pr47437.ll
    M llvm/test/Transforms/LoopVectorize/X86/reg-usage.ll

  Log Message:
  -----------
  [LV] Compute register usage for interleaving on VPlan.

Add a version of calculateRegisterUsage that works estimates register
usage for a VPlan. This mostly just ports the existing code, with some
updates to figure out what recipes will generate vectors vs scalars.

There are number of changes in the computed register usages, but they
should be more accurate w.r.t. to the generated vector code.

There are the following changes:

 * Scalar usage increases in most cases by 1, as we always create a
   scalar canonical IV, which is alive across the loop and is not
   considered by the legacy implementation

 * Output is ordered by insertion, now scalar registers are added first
   due the canonical IV phi.

 * Using the VPlan, we now also more precisely know if an induction will
   be vectorized or scalarized.


  Commit: fdadc194b4d0002622160f3be37f1137a56a0db8
      https://github.com/llvm/llvm-project/commit/fdadc194b4d0002622160f3be37f1137a56a0db8
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Transforms/LoopVectorize/PowerPC/large-loop-rdx.ll

  Log Message:
  -----------
  !fixup update after rebasing


  Commit: cb23083d68bf70c7ff6cda8831bd0c95809a55a5
      https://github.com/llvm/llvm-project/commit/cb23083d68bf70c7ff6cda8831bd0c95809a55a5
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

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

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


  Commit: eac6a32cdd4da0c349372b16bad7df5fadf7a62e
      https://github.com/llvm/llvm-project/commit/eac6a32cdd4da0c349372b16bad7df5fadf7a62e
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h
    M llvm/lib/Transforms/Vectorize/VPlan.h
    M llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-dot-product-neon.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-dot-product.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/reg-usage.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/scalable-call.ll
    M llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll
    M llvm/test/Transforms/LoopVectorize/ARM/mve-reduction-types.ll
    M llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll
    M llvm/test/Transforms/LoopVectorize/ARM/tail-folding-reduces-vf.ll
    M llvm/test/Transforms/LoopVectorize/PowerPC/exit-branch-cost.ll
    M llvm/test/Transforms/LoopVectorize/X86/pr47437.ll
    M llvm/test/Transforms/LoopVectorize/X86/reg-usage.ll
    M llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll

  Log Message:
  -----------
  [LoopVectorizer] Prune VFs based on plan register pressure

Based on fhahn's work at https://github.com/llvm/llvm-project/pull/126437 .

This PR moves the register usage checking to after the plans are
created, so that any recipes that optimise register usage (such as
partial reductions) can be properly costed and not have their VF pruned
unnecessarily.

It involves changing some tests, notably removing one from
mve-known-tripcount.ll due to it not being vectorisable thanks to high
register pressure. tail-folding-reduces-vf.ll was modified to reduce its
register pressure but still test what was intended.


  Commit: 170f6f257acefa7ad24f880a419dae2f10b6a3e7
      https://github.com/llvm/llvm-project/commit/170f6f257acefa7ad24f880a419dae2f10b6a3e7
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

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

  Log Message:
  -----------
  Format


  Commit: a9c9a52bdcd71ce3fe00976360a7e2e51f208700
      https://github.com/llvm/llvm-project/commit/a9c9a52bdcd71ce3fe00976360a7e2e51f208700
  Author: Sam Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll
    M llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll

  Log Message:
  -----------
  Ignore in-loop reductions


  Commit: cecc626cd9e8fa2e06628865cec58f8ea50028a0
      https://github.com/llvm/llvm-project/commit/cecc626cd9e8fa2e06628865cec58f8ea50028a0
  Author: Sam Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

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

  Log Message:
  -----------
  Simpify in-loop checking


  Commit: 02ebbec52a294754b15947ad1ab306a9f202bbb5
      https://github.com/llvm/llvm-project/commit/02ebbec52a294754b15947ad1ab306a9f202bbb5
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll

  Log Message:
  -----------
  Re-add tripcount test


  Commit: deadd9169b120d61b74303e2346a90582d66c68e
      https://github.com/llvm/llvm-project/commit/deadd9169b120d61b74303e2346a90582d66c68e
  Author: Sam Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/test/Transforms/LoopVectorize/AArch64/scalable-call.ll

  Log Message:
  -----------
  Revert scalable-call.ll changes


  Commit: 7881f91c11bfee39c190ef39d4a47fabcd85c3c4
      https://github.com/llvm/llvm-project/commit/7881f91c11bfee39c190ef39d4a47fabcd85c3c4
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

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

  Log Message:
  -----------
  Set MaxVF without loop if MaxVectorElementCount <= MaxVectorElementCountMaxBW


  Commit: bf9951c1c9132cdf8796a8b0bc57dee146be9912
      https://github.com/llvm/llvm-project/commit/bf9951c1c9132cdf8796a8b0bc57dee146be9912
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

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

  Log Message:
  -----------
  Move calculateRegisterUsage out of cost model


  Commit: 57ffaeadcc230ed2857f49a00c3d2db6a9c374e0
      https://github.com/llvm/llvm-project/commit/57ffaeadcc230ed2857f49a00c3d2db6a9c374e0
  Author: Samuel Tebbs <samuel.tebbs at arm.com>
  Date:   2025-04-01 (Tue, 01 Apr 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h
    M llvm/lib/Transforms/Vectorize/VPlan.h
    M llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-dot-product-neon.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-dot-product.ll

  Log Message:
  -----------
  Separate out scaled reduction changes


Compare: https://github.com/llvm/llvm-project/compare/5f81501485b6...57ffaeadcc23

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