summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/2012-07-10-extload64.ll
diff options
context:
space:
mode:
authorNadav Rotem <nadav.rotem@intel.com>2012-07-11 13:27:05 +0000
committerNadav Rotem <nadav.rotem@intel.com>2012-07-11 13:27:05 +0000
commit5cd95e1478ddb8f3f1efde56a1cd2db47b312d72 (patch)
tree683bcd0a23e98be9c07295045bef13008b450a22 /test/CodeGen/X86/2012-07-10-extload64.ll
parent4b24bf8da340ba30585777ab656c83752a5e3e6a (diff)
downloadllvm-5cd95e1478ddb8f3f1efde56a1cd2db47b312d72.tar.gz
llvm-5cd95e1478ddb8f3f1efde56a1cd2db47b312d72.tar.bz2
llvm-5cd95e1478ddb8f3f1efde56a1cd2db47b312d72.tar.xz
When ext-loading and trunc-storing vectors to memory, on x86 32bit systems, allow loads/stores of 64bit values from xmm registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160044 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/2012-07-10-extload64.ll')
-rw-r--r--test/CodeGen/X86/2012-07-10-extload64.ll23
1 files changed, 21 insertions, 2 deletions
diff --git a/test/CodeGen/X86/2012-07-10-extload64.ll b/test/CodeGen/X86/2012-07-10-extload64.ll
index 3284f5e7e3..906b748fa4 100644
--- a/test/CodeGen/X86/2012-07-10-extload64.ll
+++ b/test/CodeGen/X86/2012-07-10-extload64.ll
@@ -3,11 +3,30 @@
; CHECK: load_store
define void @load_store(<4 x i16>* %in) {
entry:
+; CHECK: movsd
%A27 = load <4 x i16>* %in, align 4
%A28 = add <4 x i16> %A27, %A27
+; CHECK: movlpd
store <4 x i16> %A28, <4 x i16>* %in, align 4
ret void
-; CHECK: movd
-; CHECK: pinsrd
; CHECK: ret
}
+
+; Make sure that we store a 64bit value, even on 32bit systems.
+;CHECK: store_64
+define void @store_64(<2 x i32>* %ptr) {
+BB:
+ store <2 x i32> zeroinitializer, <2 x i32>* %ptr
+ ret void
+;CHECK: movlpd
+;CHECK: ret
+}
+
+;CHECK: load_64
+define <2 x i32> @load_64(<2 x i32>* %ptr) {
+BB:
+ %t = load <2 x i32>* %ptr
+ ret <2 x i32> %t
+;CHECK: movsd
+;CHECK: ret
+}