Fix copy and paste bug from r186491 to make v2f64 use MOVAPD/MOVUPD as it should.
authorCraig Topper <craig.topper@gmail.com>
Thu, 18 Jul 2013 07:16:44 +0000 (07:16 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 18 Jul 2013 07:16:44 +0000 (07:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186566 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86FastISel.cpp
test/CodeGen/X86/fast-isel-store.ll

index 8c9575c8b775f1c1d174eec4e179cec1c8040a58..5bc34201aa4ea361ca4267efec8b507912096abb 100644 (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:
index 06f5b6621a1aa2b5e6adcf990663827702b2719a..3d2a46c2bd1b280e48633ddf1dcfaea5a52c3005 100644 (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
+}