diff options
-rw-r--r-- | llvm/test/CodeGen/X86/vec_fneg.ll | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/vec_fneg.ll b/llvm/test/CodeGen/X86/vec_fneg.ll index d198964bf1d..26c233f7db2 100644 --- a/llvm/test/CodeGen/X86/vec_fneg.ll +++ b/llvm/test/CodeGen/X86/vec_fneg.ll @@ -98,3 +98,22 @@ define <2 x float> @fneg_bitcast(i64 %i) nounwind { %fneg = fsub <2 x float> <float -0.0, float -0.0>, %bitcast ret <2 x float> %fneg } + +define <4 x float> @undef_elts_v4f32(<4 x float> %x) { +; X32-SSE-LABEL: undef_elts_v4f32: +; X32-SSE: # %bb.0: +; X32-SSE-NEXT: movaps {{.*#+}} xmm1 = <-0,u,u,-0> +; X32-SSE-NEXT: subps %xmm0, %xmm1 +; X32-SSE-NEXT: movaps %xmm1, %xmm0 +; X32-SSE-NEXT: retl +; +; X64-SSE-LABEL: undef_elts_v4f32: +; X64-SSE: # %bb.0: +; X64-SSE-NEXT: movaps {{.*#+}} xmm1 = <-0,u,u,-0> +; X64-SSE-NEXT: subps %xmm0, %xmm1 +; X64-SSE-NEXT: movaps %xmm1, %xmm0 +; X64-SSE-NEXT: retq + %r = fsub <4 x float> <float -0.0, float undef, float undef, float -0.0>, %x + ret <4 x float> %r +} + |