[PATCH] [X86][SSE] Added support for SSE3 lane duplication shuffle instructions

Simon Pilgrim llvm-dev at redking.me.uk
Sun Jan 18 03:47:08 PST 2015


Hi chandlerc, qcolombet, spatel, andreadb,

This patch adds shuffle matching for the SSE3 MOVDDUP, MOVSLDUP and MOVSHDUP instructions. The big use of these being that they avoid many single source shuffles from needing to use dual source instrutions such as SHUFPD/SHUFPS, avoiding extra moves and allowing more load folds.

Adding these instructions uncovered an issue in XFormVExtractWithShuffleIntoLoad which crashed on single operand shuffle instructions. It also involved fixing getTargetShuffleMask to correctly identify theses instructions as unary shuffles.

I also added a shuffle mask decoder for MOVDDUP.

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7042

Files:
  lib/Target/X86/InstPrinter/X86InstComments.cpp
  lib/Target/X86/Utils/X86ShuffleDecode.cpp
  lib/Target/X86/Utils/X86ShuffleDecode.h
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/sincos-opt.ll
  test/CodeGen/X86/sse41.ll
  test/CodeGen/X86/sse_partial_update.ll
  test/CodeGen/X86/v2f32.ll
  test/CodeGen/X86/vec_cast2.ll
  test/CodeGen/X86/vector-shuffle-256-v4.ll
  test/CodeGen/X86/vector-shuffle-256-v8.ll
  test/CodeGen/X86/vector-shuffle-512-v8.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7042.18358.patch
Type: text/x-patch
Size: 21056 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150118/38239f1c/attachment.bin>


More information about the llvm-commits mailing list