asm for inverse trig functions

unlike trig functions, these are easy to do in asm because they do not
involve (arbitrary-precision) argument reduction. fpatan automatically
takes care of domain issues, and in asin and acos, fsqrt takes care of
them for us.
This commit is contained in:
Rich Felker 2012-03-19 04:56:07 -04:00
parent 495a52ae7b
commit bc33e61704
12 changed files with 93 additions and 0 deletions

24
src/math/i386/acos.s Normal file
View File

@ -0,0 +1,24 @@
.global acosf
.type acosf,@function
acosf:
flds 4(%esp)
jmp 1f
.global acosl
.type acosl,@function
acosl:
fldt 4(%esp)
jmp 1f
.global acos
.type acos,@function
acos:
fldl 4(%esp)
1: fld %st(0)
fmul %st(0)
fld1
fsubp %st(1)
fsqrt
fxch %st(1)
fpatan
ret

1
src/math/i386/acosf.s Normal file
View File

@ -0,0 +1 @@
# see acos.s

1
src/math/i386/acosl.s Normal file
View File

@ -0,0 +1 @@
# see acos.s

23
src/math/i386/asin.s Normal file
View File

@ -0,0 +1,23 @@
.global asinf
.type asinf,@function
asinf:
flds 4(%esp)
jmp 1f
.global asinl
.type asinl,@function
asinl:
fldt 4(%esp)
jmp 1f
.global asin
.type asin,@function
asin:
fldl 4(%esp)
1: fld %st(0)
fmul %st(0)
fld1
fsubp %st(1)
fsqrt
fpatan
ret

1
src/math/i386/asinf.s Normal file
View File

@ -0,0 +1 @@
# see asin.s

1
src/math/i386/asinl.s Normal file
View File

@ -0,0 +1 @@
# see asin.s

7
src/math/i386/atan.s Normal file
View File

@ -0,0 +1,7 @@
.global atan
.type atan,@function
atan:
fldl 4(%esp)
fld1
fpatan
ret

7
src/math/i386/atan2.s Normal file
View File

@ -0,0 +1,7 @@
.global atan2
.type atan2,@function
atan2:
fldl 4(%esp)
fldl 12(%esp)
fpatan
ret

7
src/math/i386/atan2f.s Normal file
View File

@ -0,0 +1,7 @@
.global atan2f
.type atan2f,@function
atan2f:
flds 4(%esp)
flds 8(%esp)
fpatan
ret

7
src/math/i386/atan2l.s Normal file
View File

@ -0,0 +1,7 @@
.global atan2l
.type atan2l,@function
atan2l:
fldt 4(%esp)
fldt 16(%esp)
fpatan
ret

7
src/math/i386/atanf.s Normal file
View File

@ -0,0 +1,7 @@
.global atanf
.type atanf,@function
atanf:
flds 4(%esp)
fld1
fpatan
ret

7
src/math/i386/atanl.s Normal file
View File

@ -0,0 +1,7 @@
.global atanl
.type atanl,@function
atanl:
fldt 4(%esp)
fld1
fpatan
ret