[PATCH] D23027: [X86][SSE] Avoid specifying unused arguments in SHUFPD lowering

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 1 12:12:31 PDT 2016


RKSimon created this revision.
RKSimon added reviewers: ab, delena, spatel, andreadb.
RKSimon added a subscriber: llvm-commits.
RKSimon set the repository for this revision to rL LLVM.

As discussed on PR26491, we are missing the opportunity to make use of the smaller MOVHLPS instruction because we set both arguments of a SHUFPD when using it to lower a single input shuffle.

This patch sets the lowered argument to UNDEF if that shuffle element is undefined. This in turn makes it easier for target shuffle combining to decode UNDEF shuffle elements, allowing combines to MOVHLPS to occur.

A fix to match against MOVHPD stores was necessary as well.

This builds on the improved MOVLHPS/MOVHLPS lowering and memory folding support added in D16956

Adding similar support SHUFPS will have to wait until have better support for target combining of binary shuffles.

Repository:
  rL LLVM

https://reviews.llvm.org/D23027

Files:
  lib/Target/X86/X86ISelLowering.cpp
  lib/Target/X86/X86InstrSSE.td
  test/CodeGen/X86/buildvec-insertvec.ll
  test/CodeGen/X86/haddsub-2.ll
  test/CodeGen/X86/haddsub-undef.ll
  test/CodeGen/X86/nontemporal-2.ll
  test/CodeGen/X86/pr11334.ll
  test/CodeGen/X86/sse2-intrinsics-fast-isel.ll
  test/CodeGen/X86/sse3-avx-addsub-2.ll
  test/CodeGen/X86/sse_partial_update.ll
  test/CodeGen/X86/vec_extract.ll
  test/CodeGen/X86/vec_fp_to_int.ll
  test/CodeGen/X86/vector-rem.ll
  test/CodeGen/X86/widen_conv-3.ll
  test/CodeGen/X86/widen_conv-4.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23027.66353.patch
Type: text/x-patch
Size: 25002 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160801/a6e1b2c3/attachment.bin>


More information about the llvm-commits mailing list