Add one more pattern to fallback movddup
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Thu, 9 Sep 2010 18:48:34 +0000 (18:48 +0000)
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>
Thu, 9 Sep 2010 18:48:34 +0000 (18:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113522 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrSSE.td
test/CodeGen/X86/vec_shuffle-37.ll

index 88b60229b2c0a69cbc09c5e1747bc5f23744ac9f..eed685d84b47201e1557a446b9472242a96a4fd9 100644 (file)
@@ -5688,6 +5688,8 @@ def : Pat<(v2i64 (X86Movddup VR128:$src)),
           (MOVLHPSrr VR128:$src, VR128:$src)>;
 def : Pat<(v4f32 (X86Movddup VR128:$src)),
           (MOVLHPSrr VR128:$src, VR128:$src)>;
+def : Pat<(v2f64 (X86Movddup VR128:$src)),
+          (UNPCKLPDrr VR128:$src, VR128:$src)>;
 
 // Shuffle with MOVLHPD
 def : Pat<(v2f64 (X86Movlhpd VR128:$src1,
index 1ed858de64e8638bbc950d577a78c732fbc3071b..b09093089c5aa4701cd3d06db1e8061ba63c7e98 100644 (file)
@@ -1,4 +1,5 @@
 ; RUN: llc < %s -march=x86-64 | FileCheck %s
+; RUN: llc -O0 < %s -march=x86 -mcpu=core2 | FileCheck %s --check-prefix=CHECK_O0
 
 define <4 x i32> @t00(<4 x i32>* %a0) nounwind ssp {
 entry:
@@ -12,3 +13,12 @@ entry:
   ret <4 x i32> %2
 }
 
+define void @t01(double* %a0) nounwind ssp {
+entry:
+; CHECK_O0: movsd (%eax), %xmm0
+; CHECK_O0: unpcklpd  %xmm0, %xmm0
+  %tmp93 = load double* %a0, align 8
+  %vecinit94 = insertelement <2 x double> undef, double %tmp93, i32 1
+  store <2 x double> %vecinit94, <2 x double>* undef
+  ret void
+}