diff options
author | nsz <nsz@port70.net> | 2012-03-23 11:16:56 +0100 |
---|---|---|
committer | nsz <nsz@port70.net> | 2012-03-23 11:16:56 +0100 |
commit | c5ec5b2ce93bd87eb3dbf966d8bf279089f8a35d (patch) | |
tree | 35a276d479538eb3898e47358e9e8eded63cf5cc /src/math/i386/hypot.s | |
parent | 6d8df2b9720b7133a0735c9d5a2aae55021bb2c2 (diff) | |
parent | ad2d2b963a4bf9e2631b345c898e8715b36b459e (diff) | |
download | musl-c5ec5b2ce93bd87eb3dbf966d8bf279089f8a35d.tar.gz musl-c5ec5b2ce93bd87eb3dbf966d8bf279089f8a35d.tar.xz musl-c5ec5b2ce93bd87eb3dbf966d8bf279089f8a35d.zip |
Merge branch 'master' of git://git.etalabs.net/musl
Diffstat (limited to 'src/math/i386/hypot.s')
-rw-r--r-- | src/math/i386/hypot.s | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/math/i386/hypot.s b/src/math/i386/hypot.s new file mode 100644 index 00000000..299c2e18 --- /dev/null +++ b/src/math/i386/hypot.s @@ -0,0 +1,45 @@ +.global hypot +.type hypot,@function +hypot: + mov 8(%esp),%eax + mov 16(%esp),%ecx + add %eax,%eax + add %ecx,%ecx + and %eax,%ecx + cmp $0xffe00000,%ecx + jae 2f + or 4(%esp),%eax + jnz 1f + fldl 12(%esp) + fabs + ret +1: mov 16(%esp),%eax + add %eax,%eax + or 12(%esp),%eax + jnz 1f + fldl 4(%esp) + fabs + ret +1: fldl 4(%esp) + fld %st(0) + fmulp + fldl 12(%esp) + fld %st(0) + fmulp + faddp + fsqrt + ret +2: sub $0xffe00000,%eax + or 4(%esp),%eax + jnz 1f + fldl 4(%esp) + fabs + ret +1: mov 16(%esp),%eax + add %eax,%eax + sub $0xffe00000,%eax + or 12(%esp),%eax + fldl 12(%esp) + jnz 1f + fabs +1: ret |