[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