muldi.s 822 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. |muldi3 routine copyright (C) 2002, Kevin Kofler
  2. .data
  3. .xdef __muldi3
  4. .even
  5. __muldi3:
  6. move.w 18(%a7),%d0
  7. mulu 4(%a7),%d0
  8. move.w 16(%a7),%d2
  9. mulu 6(%a7),%d2
  10. add.w %d2,%d0
  11. move.w 14(%a7),%d2
  12. mulu 8(%a7),%d2
  13. add.w %d2,%d0
  14. move.w 12(%a7),%d2
  15. mulu 10(%a7),%d2
  16. add.w %d2,%d0
  17. swap %d0
  18. clr.w %d0
  19. move.w 18(%a7),%d2
  20. mulu 6(%a7),%d2
  21. add.l %d2,%d0
  22. move.w 16(%a7),%d2
  23. mulu 8(%a7),%d2
  24. add.l %d2,%d0
  25. move.w 14(%a7),%d2
  26. mulu 10(%a7),%d2
  27. add.l %d2,%d0
  28. move.w 18(%a7),%d1
  29. mulu 8(%a7),%d1
  30. swap %d1
  31. add.w %d1,%d0
  32. clr.w %d1
  33. swap %d0
  34. addx.w %d1,%d0
  35. swap %d0
  36. move.w 16(%a7),%d2
  37. mulu 10(%a7),%d2
  38. swap %d2
  39. add.w %d2,%d0
  40. clr.w %d2
  41. swap %d0
  42. addx.w %d2,%d0
  43. swap %d0
  44. add.l %d2,%d1
  45. moveq.l #0,%d2
  46. addx.l %d2,%d0
  47. move.w 18(%a7),%d2
  48. mulu 10(%a7),%d2
  49. add.l %d2,%d1
  50. moveq.l #0,%d2
  51. addx.l %d2,%d0
  52. rts