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
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
View File
@@ -0,0 +1 @@
# see acos.s
+1
View File
@@ -0,0 +1 @@
# see acos.s
+23
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
View File
@@ -0,0 +1 @@
# see asin.s
+1
View File
@@ -0,0 +1 @@
# see asin.s
+7
View File
@@ -0,0 +1,7 @@
.global atan
.type atan,@function
atan:
fldl 4(%esp)
fld1
fpatan
ret
+7
View File
@@ -0,0 +1,7 @@
.global atan2
.type atan2,@function
atan2:
fldl 4(%esp)
fldl 12(%esp)
fpatan
ret
+7
View File
@@ -0,0 +1,7 @@
.global atan2f
.type atan2f,@function
atan2f:
flds 4(%esp)
flds 8(%esp)
fpatan
ret
+7
View File
@@ -0,0 +1,7 @@
.global atan2l
.type atan2l,@function
atan2l:
fldt 4(%esp)
fldt 16(%esp)
fpatan
ret
+7
View File
@@ -0,0 +1,7 @@
.global atanf
.type atanf,@function
atanf:
flds 4(%esp)
fld1
fpatan
ret
+7
View File
@@ -0,0 +1,7 @@
.global atanl
.type atanl,@function
atanl:
fldt 4(%esp)
fld1
fpatan
ret