[X86][AVX] Added (V)MOVDDUP / (V)MOVSLDUP / (V)MOVSHDUP memory folding + tests.
[opencl/llvm.git] / test / CodeGen / X86 / stack-folding-fp-sse42.ll
index 4010907854d1bdb7e2207b7c624c7d87d595a189..ed36553887927d6463b890bf83978b7b8efb2a8f 100644 (file)
@@ -737,20 +737,19 @@ define <4 x float> @stack_fold_minss_int(<4 x float> %a0, <4 x float> %a1) {
 }
 declare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) nounwind readnone
 
-; TODO stack_fold_movd (load / store)
-; TODO stack_fold_movq (load / store)
-
-; TODO stack_fold_movddup
-
+define <2 x double> @stack_fold_movddup(<2 x double> %a0) {
+  ;CHECK-LABEL: stack_fold_movddup
+  ;CHECK:   movddup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
+  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
+  %2 = shufflevector <2 x double> %a0, <2 x double> undef, <2 x i32> <i32 0, i32 0>
+  ret <2 x double> %2
+}
 ; TODO stack_fold_movhpd (load / store)
 ; TODO stack_fold_movhps (load / store)
 
 ; TODO stack_fold_movlpd (load / store)
 ; TODO stack_fold_movlps (load / store)
 
-; TODO stack_fold_movsd (load / store)
-; TODO stack_fold_movss (load / store)
-
 define <4 x float> @stack_fold_movshdup(<4 x float> %a0) {
   ;CHECK-LABEL: stack_fold_movshdup
   ;CHECK:       movshdup {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload