[all-commits] [llvm/llvm-project] 9254d7: [VPlan] Scalarize to first-lane-only directly on V...

Andrei Elovikov via All-commits all-commits at lists.llvm.org
Wed Apr 15 10:49:03 PDT 2026


  Branch: refs/heads/users/eas/vplan-based-first-lane-only-scalarize
  Home:   https://github.com/llvm/llvm-project
  Commit: 9254d750245314caef1e0cb2566f2387aa2b645b
      https://github.com/llvm/llvm-project/commit/9254d750245314caef1e0cb2566f2387aa2b645b
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
    M llvm/lib/Transforms/Vectorize/VPlanTransforms.h
    M llvm/test/Transforms/LoopVectorize/AArch64/binop-costs.ll
    M llvm/test/Transforms/LoopVectorize/VPlan/vplan-print-after-all.ll
    M llvm/test/Transforms/LoopVectorize/X86/drop-poison-generating-flags.ll
    M llvm/test/Transforms/LoopVectorize/X86/funclet.ll
    M llvm/test/Transforms/LoopVectorize/pr37248.ll
    M llvm/test/Transforms/LoopVectorize/runtime-check-needed-but-empty.ll

  Log Message:
  -----------
  [VPlan] Scalarize to first-lane-only directly on VPlan

This is needed to enable subsequent https://github.com/llvm/llvm-project/pull/182595.

I don't think we can fully port all scalarization logic from the legacy
path to VPlan-based right now because that would require us to introduce
interleave groups much earlier in VPlan pipeline, and without that we
can't really `assert` this new decision matches the previous CM-based
one. And without those `assert`s it's really hard to ensure we properly
port all the previous logic.

As such, I decided just to implement something much simpler that would
be enough for #182595. However, we perform this transformation before
delegating to the old CM-based decision, so it **is** effective
immediately and taking precedence even for consecutive loads/stores
right away.

Depends on https://github.com/llvm/llvm-project/pull/182592 but is stacked on
top of https://github.com/llvm/llvm-project/pull/182594 to enable linear
stacking for https://github.com/llvm/llvm-project/pull/182595.


  Commit: 4bc4c9324f943b45e361add638ba719ce3c6b4ca
      https://github.com/llvm/llvm-project/commit/4bc4c9324f943b45e361add638ba719ce3c6b4ca
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

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

  Log Message:
  -----------
  Use `reverse`/`IsaPred`


  Commit: dd419f628ccf393b05e425b933cb8f3b37b63a69
      https://github.com/llvm/llvm-project/commit/dd419f628ccf393b05e425b933cb8f3b37b63a69
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

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

  Log Message:
  -----------
  Don't pass RecipeBuilder

Legacy calls `setRecipe` on all processed recipes but really queries `getRecipe`
for memory operations only, that we don't touch in the scalarization as that
happens after all memory recipes has been processed.


  Commit: 5ade4c776085046e52dce5c9cc6b5cdf8d507e91
      https://github.com/llvm/llvm-project/commit/5ade4c776085046e52dce5c9cc6b5cdf8d507e91
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

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

  Log Message:
  -----------
  Just use `vputils::onlyFirstLaneUsed`


  Commit: ee7a6c7d753d3dc5253e63f02a70ced897c27a0c
      https://github.com/llvm/llvm-project/commit/ee7a6c7d753d3dc5253e63f02a70ced897c27a0c
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

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

  Log Message:
  -----------
  Extend post_order's lifetime


  Commit: 0b2522bb651cfe86f9681fcaf658485c0c30599a
      https://github.com/llvm/llvm-project/commit/0b2522bb651cfe86f9681fcaf658485c0c30599a
  Author: Andrei Elovikov <andrei.elovikov at sifive.com>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

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

  Log Message:
  -----------
  Minor stylistic cleanup


Compare: https://github.com/llvm/llvm-project/compare/56ea5c963f27...0b2522bb651c

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