hypot.s 567 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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