diff options
-rw-r--r-- | llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll b/llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll index f14044335f9..e66c504f8b7 100644 --- a/llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll +++ b/llvm/test/CodeGen/X86/sse2-intrinsics-x86.ll @@ -225,6 +225,22 @@ define <4 x float> @test_x86_sse2_cvtpd2ps(<2 x double> %a0) { } declare <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double>) nounwind readnone +define <4 x float> @test_x86_sse2_cvtpd2ps_zext(<2 x double> %a0) nounwind { +; SSE-LABEL: test_x86_sse2_cvtpd2ps_zext: +; SSE: ## BB#0: +; SSE-NEXT: cvtpd2ps %xmm0, %xmm0 +; SSE-NEXT: movq {{.*#+}} xmm0 = xmm0[0],zero +; SSE-NEXT: retl +; +; KNL-LABEL: test_x86_sse2_cvtpd2ps_zext: +; KNL: ## BB#0: +; KNL-NEXT: vcvtpd2ps %xmm0, %xmm0 +; KNL-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero +; KNL-NEXT: retl + %cvt = call <4 x float> @llvm.x86.sse2.cvtpd2ps(<2 x double> %a0) + %res = shufflevector <4 x float> %cvt, <4 x float> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 4, i32 5> + ret <4 x float> %res +} define <4 x i32> @test_x86_sse2_cvtps2dq(<4 x float> %a0) { ; SSE-LABEL: test_x86_sse2_cvtps2dq: |