aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/avx-load-store.ll
diff options
context:
space:
mode:
authorNadav Rotem <nadav.rotem@intel.com>2012-01-11 14:07:51 +0000
committerNadav Rotem <nadav.rotem@intel.com>2012-01-11 14:07:51 +0000
commit394a1f53b90698486ac7c75724a6bda349cd0353 (patch)
treec6dde480f491863ee41c3c7678782704ccce7683 /test/CodeGen/X86/avx-load-store.ll
parent1876abe63edf0380aee3d0f3ad9cace3f7e6a042 (diff)
Fix a bug in the lowering of BUILD_VECTOR for AVX. SCALAR_TO_VECTOR does not zero untouched elements. Use INSERT_VECTOR_ELT instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147948 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/avx-load-store.ll')
-rw-r--r--test/CodeGen/X86/avx-load-store.ll12
1 files changed, 9 insertions, 3 deletions
diff --git a/test/CodeGen/X86/avx-load-store.ll b/test/CodeGen/X86/avx-load-store.ll
index 07a63efd71..c9fc66a8a7 100644
--- a/test/CodeGen/X86/avx-load-store.ll
+++ b/test/CodeGen/X86/avx-load-store.ll
@@ -25,20 +25,26 @@ declare void @dummy(<4 x double>, <8 x float>, <4 x i64>)
;;
;; The two tests below check that we must fold load + scalar_to_vector
-;; + ins_subvec+ zext into only a single vmovss or vmovsd
+;; + ins_subvec+ zext into only a single vmovss or vmovsd or vinsertps from memory
-; CHECK: vmovss (%
+; CHECK: mov00
define <8 x float> @mov00(<8 x float> %v, float * %ptr) nounwind {
%val = load float* %ptr
+; CHECK: vinsertps
+; CHECK: vinsertf128
%i0 = insertelement <8 x float> zeroinitializer, float %val, i32 0
ret <8 x float> %i0
+; CHECK: ret
}
-; CHECK: vmovsd (%
+; CHECK: mov01
define <4 x double> @mov01(<4 x double> %v, double * %ptr) nounwind {
%val = load double* %ptr
+; CHECK: vmovlpd
+; CHECK: vinsertf128
%i0 = insertelement <4 x double> zeroinitializer, double %val, i32 0
ret <4 x double> %i0
+; CHECK: ret
}
; CHECK: vmovaps %ymm