#include <machine/asm.h>
#include "abi.h"
RCSID("$NetBSD: e_expf.S,v 1.6 2008/06/24 17:27:56 drochner Exp $")
ENTRY(__ieee754_expf)
XMM_ONE_ARG_FLOAT_PROLOGUE
movl ARG_FLOAT_ONE,%eax
andl $0x7fffffff,%eax
cmpl $0x7f800000,%eax
jae x_Inf_or_NaN
flds ARG_FLOAT_ONE
fldl2e
fmulp
fld %st(0)
frndint
fsubr %st(0),%st(1)
fxch
f2xm1
fld1
faddp
fscale
fstp %st(1)
XMM_FLOAT_EPILOGUE
ret
x_Inf_or_NaN:
movl ARG_FLOAT_ONE,%eax
cmpl $0xff800000,%eax
jne x_not_minus_Inf
fldz
XMM_FLOAT_EPILOGUE
ret
x_not_minus_Inf:
flds ARG_FLOAT_ONE
XMM_FLOAT_EPILOGUE
ret