asm for hypot and hypotf
[musl] / src / math / i386 / hypot.s
1 .global hypot
2 .type hypot,@function
3 hypot:
4         mov 8(%esp),%eax
5         mov 16(%esp),%ecx
6         add %eax,%eax
7         add %ecx,%ecx
8         and %eax,%ecx
9         cmp $0xffe00000,%ecx
10         jae 2f
11         or 4(%esp),%eax
12         jnz 1f
13         fldl 12(%esp)
14         fabs
15         ret
16 1:      mov 16(%esp),%eax
17         add %eax,%eax
18         or 12(%esp),%eax
19         jnz 1f
20         fldl 4(%esp)
21         fabs
22         ret
23 1:      fldl 4(%esp)
24         fld %st(0)
25         fmulp
26         fldl 12(%esp)
27         fld %st(0)
28         fmulp
29         faddp
30         fsqrt
31         ret
32 2:      sub $0xffe00000,%eax
33         or 4(%esp),%eax
34         jnz 1f
35         fldl 4(%esp)
36         fabs
37         ret
38 1:      mov 16(%esp),%eax
39         add %eax,%eax
40         sub $0xffe00000,%eax
41         or 12(%esp),%eax
42         fldl 12(%esp)
43         jnz 1f
44         fabs
45 1:      ret