muldi3.S 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /* Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
  2. This file is part of GNU CC.
  3. GNU CC is free software; you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation; either version 2, or (at your option)
  6. any later version.
  7. GNU CC is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with GNU CC; see the file COPYING. If not, write to
  13. the Free Software Foundation, 59 Temple Place - Suite 330,
  14. Boston, MA 02111-1307, USA. */
  15. .text
  16. .align 4
  17. .globl __muldi3
  18. __muldi3:
  19. save %sp, -104, %sp
  20. wr %g0, %i1, %y
  21. sra %i3, 0x1f, %g2
  22. and %i1, %g2, %g2
  23. andcc %g0, 0, %g1
  24. mulscc %g1, %i3, %g1
  25. mulscc %g1, %i3, %g1
  26. mulscc %g1, %i3, %g1
  27. mulscc %g1, %i3, %g1
  28. mulscc %g1, %i3, %g1
  29. mulscc %g1, %i3, %g1
  30. mulscc %g1, %i3, %g1
  31. mulscc %g1, %i3, %g1
  32. mulscc %g1, %i3, %g1
  33. mulscc %g1, %i3, %g1
  34. mulscc %g1, %i3, %g1
  35. mulscc %g1, %i3, %g1
  36. mulscc %g1, %i3, %g1
  37. mulscc %g1, %i3, %g1
  38. mulscc %g1, %i3, %g1
  39. mulscc %g1, %i3, %g1
  40. mulscc %g1, %i3, %g1
  41. mulscc %g1, %i3, %g1
  42. mulscc %g1, %i3, %g1
  43. mulscc %g1, %i3, %g1
  44. mulscc %g1, %i3, %g1
  45. mulscc %g1, %i3, %g1
  46. mulscc %g1, %i3, %g1
  47. mulscc %g1, %i3, %g1
  48. mulscc %g1, %i3, %g1
  49. mulscc %g1, %i3, %g1
  50. mulscc %g1, %i3, %g1
  51. mulscc %g1, %i3, %g1
  52. mulscc %g1, %i3, %g1
  53. mulscc %g1, %i3, %g1
  54. mulscc %g1, %i3, %g1
  55. mulscc %g1, %i3, %g1
  56. mulscc %g1, 0, %g1
  57. add %g1, %g2, %l2
  58. rd %y, %o1
  59. mov %o1, %l3
  60. mov %i1, %o0
  61. mov %i2, %o1
  62. umul %o0, %o1, %o0
  63. mov %o0, %l0
  64. mov %i0, %o0
  65. mov %i3, %o1
  66. umul %o0, %o1, %o0
  67. add %l0, %o0, %l0
  68. mov %l2, %i0
  69. add %l2, %l0, %i0
  70. ret
  71. restore %g0, %l3, %o1