[all-commits] [llvm/llvm-project] 26390f: [VectorCombine] foldShuffleOfShuffles - fold shuff...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Sun Jun 22 05:31:07 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 26390f22b8aa90c422b9e39a8295a7a0a6ef33ba
      https://github.com/llvm/llvm-project/commit/26390f22b8aa90c422b9e39a8295a7a0a6ef33ba
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2025-06-22 (Sun, 22 Jun 2025)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/VectorCombine.cpp
    M llvm/test/Transforms/VectorCombine/AArch64/shuffletoidentity.ll
    M llvm/test/Transforms/VectorCombine/X86/extract-insert-poison.ll
    M llvm/test/Transforms/VectorCombine/X86/load-inseltpoison.ll

  Log Message:
  -----------
  [VectorCombine] foldShuffleOfShuffles - fold shuffle(shuffle(x,y),poison) length changing masks (#144690)

The shuffle merging code assumes that the shuffle sources are all the
same type, which fails if we've changed length and don't have 2 inner
shuffles. We already handle length-changing shuffles if we do have 2
inner shuffles.

This patch creates a fake "all poison" shuffle mask and reuses the other
shuffle's sources, which can be safely used with the existing merge
code.

The alternative was a considerable refactor of the merge code to account
for different vector widths......

Fixes #144656



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