Add two patterns to match special vmovss and vmovsd cases. Also fix
[oota-llvm.git] / test / CodeGen / X86 / avx-load-store.ll
index 5196089e4bc8d8b13e2635f5750b5d0bdbe7874c..0d591ec27f71d65cc425726bd765d00ce27cfddf 100644 (file)
@@ -22,3 +22,21 @@ entry:
 
 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
+
+; CHECK: vmovss (%
+define <8 x float> @mov00(<8 x float> %v, float * %ptr) nounwind {
+  %val = load float* %ptr
+  %i0 = insertelement <8 x float> zeroinitializer, float %val, i32 0
+  ret <8 x float> %i0
+}
+
+; CHECK: vmovsd (%
+define <4 x double> @mov01(<4 x double> %v, double * %ptr) nounwind {
+  %val = load double* %ptr
+  %i0 = insertelement <4 x double> zeroinitializer, double %val, i32 0
+  ret <4 x double> %i0
+}
+