Merge branch 'vendor/GREP'
[dragonfly.git] / lib / libm / arch / i386 / e_asin.S
1 /*
2  * Written by J.T. Conklin <jtc@NetBSD.org>.
3  * Public domain.
4  *
5  * $NetBSD: e_asin.S,v 1.7 2003/07/26 19:24:58 salo Exp $
6  */
7
8 #include <machine/asm.h>
9
10 #include "abi.h"
11
12 /* asin = atan (x / sqrt(1 - x^2)) */
13 ENTRY(asin)
14         XMM_ONE_ARG_DOUBLE_PROLOGUE
15         fldl    ARG_DOUBLE_ONE          /* x */
16         fld     %st(0)
17         fmul    %st(0)                  /* x^2 */
18         fld1
19         fsubp                           /* 1 - x^2 */
20         fsqrt                           /* sqrt (1 - x^2) */
21         fpatan
22         XMM_DOUBLE_EPILOGUE
23         ret
24 END(asin)