diff options
Diffstat (limited to 'src/math')
-rw-r--r-- | src/math/i386/sqrt.s | 16 | ||||
-rw-r--r-- | src/math/i386/sqrtf.s | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/math/i386/sqrt.s b/src/math/i386/sqrt.s index c6e55303..8289d094 100644 --- a/src/math/i386/sqrt.s +++ b/src/math/i386/sqrt.s @@ -2,4 +2,20 @@ .type sqrt,@function sqrt: fldl 4(%esp) fsqrt + fstsw %ax + sub $12,%esp + fld %st(0) + fstpt (%esp) + mov (%esp),%ecx + and $0x7ff,%ecx + cmp $0x400,%ecx + jnz 1f + and $0x200,%eax + sub $0x100,%eax + sub %eax,(%esp) + fstp %st(0) + fldt (%esp) +1: add $12,%esp + fstpl 4(%esp) + fldl 4(%esp) ret diff --git a/src/math/i386/sqrtf.s b/src/math/i386/sqrtf.s index b79bd949..9e944f45 100644 --- a/src/math/i386/sqrtf.s +++ b/src/math/i386/sqrtf.s @@ -2,4 +2,6 @@ .type sqrtf,@function sqrtf: flds 4(%esp) fsqrt + fstps 4(%esp) + flds 4(%esp) ret |