[PATCH] D140811: [DAGCombiner][X86] `visitVECTOR_SHUFFLE()`: splats with a single non-undef element are not splats

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 31 12:48:48 PST 2022


lebedev.ri created this revision.
lebedev.ri added reviewers: RKSimon, pengfei.
lebedev.ri added a project: LLVM.
Herald added subscribers: ecnelises, hiraditya, nemanjai.
Herald added a project: All.
lebedev.ri requested review of this revision.

This addresses a significant portion of regressions that would otherwise appear in D140677 <https://reviews.llvm.org/D140677>.

@RKSimon this seems obviously good in general overall,
but there are some dubious changes here, at mostly for SSE2:
we fail to simplify some and/andn masks,
and pull identical target-specific shuffles out of commutative opcodes.

Please can you indicate which of these should be dealt with?


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D140811

Files:
  llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
  llvm/test/CodeGen/AArch64/shuffles.ll
  llvm/test/CodeGen/PowerPC/v8i16_scalar_to_vector_shuffle.ll
  llvm/test/CodeGen/X86/haddsub-3.ll
  llvm/test/CodeGen/X86/haddsub-undef.ll
  llvm/test/CodeGen/X86/horizontal-sum.ll
  llvm/test/CodeGen/X86/phaddsub.ll
  llvm/test/CodeGen/X86/sse3.ll
  llvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-7.ll
  llvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-5.ll
  llvm/test/CodeGen/X86/vector-interleaved-store-i32-stride-7.ll
  llvm/test/CodeGen/X86/vector-interleaved-store-i64-stride-5.ll
  llvm/test/CodeGen/X86/vector-interleaved-store-i64-stride-7.ll
  llvm/test/CodeGen/X86/vector-narrow-binop.ll
  llvm/test/CodeGen/X86/vector-shuffle-128-v4.ll
  llvm/test/CodeGen/X86/vector-shuffle-combining-avx2.ll



More information about the llvm-commits mailing list