[x86] Fix a bad predicate I spotted by inspection -- pshufhw and pshuflw
authorChandler Carruth <chandlerc@gmail.com>
Sat, 17 May 2014 03:29:20 +0000 (03:29 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 17 May 2014 03:29:20 +0000 (03:29 +0000)
were added in SSE2, no SSSE3. Found this while auditing all uses of
SSSE3 in the X86 target. I don't actually expect this to make
a significant difference on anything and I don't have any detailed test
cases but I updated the existing test cases that already covered some of
this code path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209056 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/sse3.ll

index f88ed31249034b46f7d18e7364d5e9ef6b7ef7a3..2ac3cabf33de906df8fcc5ecb00ab17d0dbf6f47 100644 (file)
@@ -6719,7 +6719,7 @@ LowerVECTOR_SHUFFLEv8i16(SDValue Op, const X86Subtarget *Subtarget,
     NewV = DAG.getVectorShuffle(MVT::v8i16, dl, NewV, DAG.getUNDEF(MVT::v8i16),
                                 &MaskV[0]);
 
-    if (NewV.getOpcode() == ISD::VECTOR_SHUFFLE && Subtarget->hasSSSE3()) {
+    if (NewV.getOpcode() == ISD::VECTOR_SHUFFLE && Subtarget->hasSSE2()) {
       ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(NewV.getNode());
       NewV = getTargetShuffleNode(X86ISD::PSHUFLW, dl, MVT::v8i16,
                                   NewV.getOperand(0),
@@ -6743,7 +6743,7 @@ LowerVECTOR_SHUFFLEv8i16(SDValue Op, const X86Subtarget *Subtarget,
     NewV = DAG.getVectorShuffle(MVT::v8i16, dl, NewV, DAG.getUNDEF(MVT::v8i16),
                                 &MaskV[0]);
 
-    if (NewV.getOpcode() == ISD::VECTOR_SHUFFLE && Subtarget->hasSSSE3()) {
+    if (NewV.getOpcode() == ISD::VECTOR_SHUFFLE && Subtarget->hasSSE2()) {
       ShuffleVectorSDNode *SVOp = cast<ShuffleVectorSDNode>(NewV.getNode());
       NewV = getTargetShuffleNode(X86ISD::PSHUFHW, dl, MVT::v8i16,
                                   NewV.getOperand(0),
index 6d5b19243e457fb2a22c783901c78e6aeba434e8..18bdcb3912b1dadd27fe65a9b5d7688dee5b28d2 100644 (file)
@@ -209,7 +209,7 @@ entry:
 ; X64-LABEL: t13:
 ; X64:         punpcklqdq      %xmm0, %xmm1
 ; X64:         pextrw  $3, %xmm1, %eax
-; X64:         pshufd  $52, %xmm1, %xmm0
+; X64:         pshufhw $12, %xmm1, %xmm0
 ; X64:         pinsrw  $4, %eax, %xmm0
 ; X64:         ret
 }