[all-commits] [llvm/llvm-project] f8d909: [DAGCombiner] `combineShuffleOfSplatVal()`: try to...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Sun Jan 15 10:12:34 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: f8d9097168b73e3befd94ac4e16cbc5f944afcec
      https://github.com/llvm/llvm-project/commit/f8d9097168b73e3befd94ac4e16cbc5f944afcec
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2023-01-15 (Sun, 15 Jan 2023)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
    M llvm/test/CodeGen/PowerPC/v4i32_scalar_to_vector_shuffle.ll
    M llvm/test/CodeGen/X86/srem-seteq-vec-nonsplat.ll
    M llvm/test/CodeGen/X86/urem-seteq-illegal-types.ll
    M llvm/test/CodeGen/X86/urem-seteq-vec-nonsplat.ll
    M llvm/test/CodeGen/X86/vec_smulo.ll
    M llvm/test/CodeGen/X86/vec_umulo.ll

  Log Message:
  -----------
  [DAGCombiner] `combineShuffleOfSplatVal()`: try to canonicalize to a splat shuffle

As noted in https://reviews.llvm.org/D141778#inline-1369900,
we fail to produce splat shuffles from certain sequences
of shuffles, that may have non-shuffles in the middle of seq.

There is a big pitfail to avoid here: just because `isSplatValue()`
says that all demanded elements are splat, we can't pick any random
one of them, because some of them could be undef! We must ignore those!




More information about the All-commits mailing list