analogous to commit 1c9afd69051a64cf085c6fb3674a444ff9a43857 for atan[2][f].
@@ -1,22 +1,10 @@
# use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x)
-.global acosf
-.type acosf,@function
-acosf:
- flds 4(%esp)
- jmp 1f
-
-.global acosl
-.type acosl,@function
-acosl:
- fldt 4(%esp)
.global acos
.type acos,@function
acos:
fldl 4(%esp)
-1: fld %st(0)
+ fld %st(0)
fld1
fsub %st(0),%st(1)
fadd %st(2)
@@ -25,4 +13,6 @@ acos:
fabs # fix sign of zero (matters in downward rounding mode)
fxch %st(1)
fpatan
+ fstpl 4(%esp)
+ fldl 4(%esp)
ret
@@ -1 +1,16 @@
-# see acos.s
+.global acosf
+.type acosf,@function
+acosf:
+ flds 4(%esp)
+ fld1
+ fsub %st(0),%st(1)
+ fadd %st(2)
+ fmulp
+ fsqrt
+ fabs # fix sign of zero (matters in downward rounding mode)
+ fxch %st(1)
+ fpatan
+ fstps 4(%esp)
+ ret
@@ -1 +1,14 @@
+.global acosl
+.type acosl,@function
+acosl:
+ fldt 4(%esp)
@@ -1,23 +1,3 @@
-.global asinf
-.type asinf,@function
-asinf:
- mov 4(%esp),%eax
- add %eax,%eax
- cmp $0x01000000,%eax
- jae 1f
- # subnormal x, return x with underflow
- fld %st(0)
- fmul %st(1)
- fstps 4(%esp)
- ret
-.global asinl
-.type asinl,@function
-asinl:
.global asin
.type asin,@function
asin:
@@ -25,15 +5,17 @@ asin:
mov 8(%esp),%eax
add %eax,%eax
cmp $0x00200000,%eax
- fsts 4(%esp)
+ jb 1f
fmulp
fsqrt
+ # subnormal x, return x with underflow
+1: fsts 4(%esp)
@@ -1 +1,23 @@
-# see asin.s
+.global asinf
+.type asinf,@function
+asinf:
+ mov 4(%esp),%eax
+ add %eax,%eax
+ cmp $0x01000000,%eax
+1: fld %st(0)
+ fmul %st(1)
@@ -1 +1,12 @@
+.global asinl
+.type asinl,@function
+asinl: