[PATCH] [X86][SSE] pslldq/psrldq byte shifts/rotation for SSE2

Simon Pilgrim llvm-dev at redking.me.uk
Fri Oct 17 10:38:05 PDT 2014


Updated patch for SSE2 byte shifts/rotations.

As requested, I've re-implemented the byte shift shuffles using the zeroable computation routine. I've split the byte shift shuffle detection into a new function lowerVectorShuffleAsByteShift() as it makes it easier to do the zeroable element matching - lowerVectorShuffleAsByteRotate now only adds the basic PSRLDQ/PSLLDQ/POR pattern for pre-SSSE3 rotates.

I also made a fix to ISD::isBuildVectorAllZeros (and ISD::isBuildVectorAllOnes whilst I was there) so that the zero detection can properly see through multiple bitcast operations.

http://reviews.llvm.org/D5699

Files:
  lib/CodeGen/SelectionDAG/SelectionDAG.cpp
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/palignr.ll
  test/CodeGen/X86/sse3.ll
  test/CodeGen/X86/vec_insert-5.ll
  test/CodeGen/X86/vector-shuffle-128-v16.ll
  test/CodeGen/X86/vector-shuffle-128-v8.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D5699.15085.patch
Type: text/x-patch
Size: 60246 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141017/ef05740c/attachment.bin>


More information about the llvm-commits mailing list