[all-commits] [llvm/llvm-project] a2075c: [SLP] Treat extracts from undef vectors as real, n...

Alexey Bataev via All-commits all-commits at lists.llvm.org
Wed May 6 12:03:40 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a2075c3dea692c6150fb626b328ceeead52df455
      https://github.com/llvm/llvm-project/commit/a2075c3dea692c6150fb626b328ceeead52df455
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2026-05-06 (Wed, 06 May 2026)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/X86/blending-shuffle.ll
    A llvm/test/Transforms/SLPVectorizer/X86/extractelements-with-undef-vector.ll

  Log Message:
  -----------
  [SLP] Treat extracts from undef vectors as real, not free, extracts

tryToGatherSingleRegisterExtractElements classified an extractelement whose
vector operand was undef as a free undef extract via UndefVectorExtracts.
When the remaining extracts already filled the two-vector shuffle budget,
the resulting build vector contained a third distinct vector operand and
tripped the assertion "Expected only 1 or 2 vectors shuffle." in
processBuildVector.

Use isUndefVector with IsPoisonOnly=true so that only extracts from poison
vectors are still treated as free.

Fixes #196015.

Reviewers: 

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



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