[llvm-branch-commits] [llvm-branch] r97503 - in /llvm/branches/Apple/Hermes: include/llvm/CodeGen/SelectionDAGNodes.h test/CodeGen/X86/vec_shuffle-36.ll

Bill Wendling isanbard at gmail.com
Mon Mar 1 13:46:03 PST 2010


Author: void
Date: Mon Mar  1 15:46:03 2010
New Revision: 97503

URL: http://llvm.org/viewvc/llvm-project?rev=97503&view=rev
Log:
$ svn merge -c 96621 https://llvm.org/svn/llvm-project/llvm/trunk

Modified:
    llvm/branches/Apple/Hermes/include/llvm/CodeGen/SelectionDAGNodes.h
    llvm/branches/Apple/Hermes/test/CodeGen/X86/vec_shuffle-36.ll

Modified: llvm/branches/Apple/Hermes/include/llvm/CodeGen/SelectionDAGNodes.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Hermes/include/llvm/CodeGen/SelectionDAGNodes.h?rev=97503&r1=97502&r2=97503&view=diff
==============================================================================
--- llvm/branches/Apple/Hermes/include/llvm/CodeGen/SelectionDAGNodes.h (original)
+++ llvm/branches/Apple/Hermes/include/llvm/CodeGen/SelectionDAGNodes.h Mon Mar  1 15:46:03 2010
@@ -1759,7 +1759,12 @@
   bool isSplat() const { return isSplatMask(Mask, getValueType(0)); }
   int  getSplatIndex() const { 
     assert(isSplat() && "Cannot get splat index for non-splat!");
-    return Mask[0];
+    EVT VT = getValueType(0);
+    for (unsigned i = 0, e = VT.getVectorNumElements(); i != e; ++i) {
+      if (Mask[i] != -1)
+        return Mask[i];
+    }
+    return -1;
   }
   static bool isSplatMask(const int *Mask, EVT VT);
 

Modified: llvm/branches/Apple/Hermes/test/CodeGen/X86/vec_shuffle-36.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Hermes/test/CodeGen/X86/vec_shuffle-36.ll?rev=97503&r1=97502&r2=97503&view=diff
==============================================================================
--- llvm/branches/Apple/Hermes/test/CodeGen/X86/vec_shuffle-36.ll (original)
+++ llvm/branches/Apple/Hermes/test/CodeGen/X86/vec_shuffle-36.ll Mon Mar  1 15:46:03 2010
@@ -1,9 +1,16 @@
-; RUN: llc < %s -march=x86 -mattr=sse41 -o %t
-; RUN: grep pshufb %t | count 1
-
+; RUN: llc < %s -march=x86-64 -mattr=sse41 | FileCheck %s
 
 define <8 x i16> @shuf6(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone {
+; CHECK: pshufb
+; CHECK-NOT: pshufb
+; CHECK: ret
 entry:
-	%tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 3, i32 2, i32 0, i32 2, i32 1, i32 5, i32 6 , i32 undef >
-	ret <8 x i16> %tmp9
+  %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 3, i32 2, i32 0, i32 2, i32 1, i32 5, i32 6 , i32 undef >
+  ret <8 x i16> %tmp9
+}
+
+define <8 x i16> @shuf7(<8 x i16> %t0) {
+; CHECK: pshufd
+  %tmp10 = shufflevector <8 x i16> %t0, <8 x i16> undef, <8 x i32> < i32 undef, i32 2, i32 2, i32 2, i32 2, i32 2, i32 undef, i32 undef >
+  ret <8 x i16> %tmp10
 }





More information about the llvm-branch-commits mailing list