about summary refs log tree commit diff
path: root/sysdeps/i386/i686
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/i386/i686')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S9
1 files changed, 5 insertions, 4 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
index be3b145e0f..2e2359508b 100644
--- a/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
+++ b/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
@@ -113,11 +113,12 @@ ENTRY(__ieee754_expf_sse2)
 	mulsd	MO2(DP_T,%eax,8), %xmm0	/* DP P(y)*T[j] */
 	addsd	MO2(DP_T,%eax,8), %xmm0	/* DP T[j]*(P(y)+1) */
 	mulsd	%xmm1, %xmm0		/* DP result=2^n*(T[j]*(P(y)+1)) */
+	cvtsd2ss	%xmm0, %xmm1
 
-	lea	-8(%esp), %esp		/* Borrow 8 bytes of stack frame */
-	movsd	%xmm0, 0(%esp)		/* Move result from sse... */
-	fldl	0(%esp)			/* ...to FPU. */
-	lea	8(%esp), %esp		/* Return back 8 bytes of stack frame */
+	lea	-4(%esp), %esp		/* Borrow 4 bytes of stack frame */
+	movss	%xmm1, 0(%esp)		/* Move result from sse... */
+	flds	0(%esp)			/* ...to FPU. */
+	lea	4(%esp), %esp		/* Return back 4 bytes of stack frame */
 	ret
 
 	.p2align	4