Fix copy and paste bug from r186491 to make v2f64 use MOVAPD/MOVUPD as it should.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186566 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper 2013-07-18 07:16:44 +00:00
parent f7c45ce3f5
commit fe754512dc
2 changed files with 18 additions and 2 deletions

View File

@ -270,9 +270,9 @@ X86FastISel::X86FastEmitStore(EVT VT, unsigned ValReg,
break;
case MVT::v2f64:
if (Aligned)
Opc = Subtarget->hasAVX() ? X86::VMOVAPSmr : X86::MOVAPSmr;
Opc = Subtarget->hasAVX() ? X86::VMOVAPDmr : X86::MOVAPDmr;
else
Opc = Subtarget->hasAVX() ? X86::VMOVUPSmr : X86::MOVUPSmr;
Opc = Subtarget->hasAVX() ? X86::VMOVUPDmr : X86::MOVUPDmr;
break;
case MVT::v4i32:
case MVT::v2i64:

View File

@ -46,3 +46,19 @@ define <4 x float> @test_store_4xf32_aligned(<4 x float>* nocapture %addr, <4 x
store <4 x float> %value, <4 x float>* %addr, align 16
ret <4 x float> %value
}
define <2 x double> @test_store_2xf64(<2 x double>* nocapture %addr, <2 x double> %value, <2 x double> %value2) {
; CHECK: movupd
; CHECK: ret
%foo = fadd <2 x double> %value, %value2 ; to force dobule type on store
store <2 x double> %foo, <2 x double>* %addr, align 1
ret <2 x double> %foo
}
define <2 x double> @test_store_2xf64_aligned(<2 x double>* nocapture %addr, <2 x double> %value, <2 x double> %value2) {
; CHECK: movapd
; CHECK: ret
%foo = fadd <2 x double> %value, %value2 ; to force dobule type on store
store <2 x double> %foo, <2 x double>* %addr, align 16
ret <2 x double> %foo
}