Add one more pattern to fallback movddup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113522 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bruno Cardoso Lopes 2010-09-09 18:48:34 +00:00
parent c8ddbdabb6
commit ae4f7421c0
2 changed files with 12 additions and 0 deletions

View File

@ -5688,6 +5688,8 @@ def : Pat<(v2i64 (X86Movddup VR128:$src)),
(MOVLHPSrr VR128:$src, VR128:$src)>; (MOVLHPSrr VR128:$src, VR128:$src)>;
def : Pat<(v4f32 (X86Movddup VR128:$src)), def : Pat<(v4f32 (X86Movddup VR128:$src)),
(MOVLHPSrr VR128:$src, VR128:$src)>; (MOVLHPSrr VR128:$src, VR128:$src)>;
def : Pat<(v2f64 (X86Movddup VR128:$src)),
(UNPCKLPDrr VR128:$src, VR128:$src)>;
// Shuffle with MOVLHPD // Shuffle with MOVLHPD
def : Pat<(v2f64 (X86Movlhpd VR128:$src1, def : Pat<(v2f64 (X86Movlhpd VR128:$src1,

View File

@ -1,4 +1,5 @@
; RUN: llc < %s -march=x86-64 | FileCheck %s ; 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 { define <4 x i32> @t00(<4 x i32>* %a0) nounwind ssp {
entry: entry:
@ -12,3 +13,12 @@ entry:
ret <4 x i32> %2 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
}