cfu.s 714 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. .global cfu4, cfu8
  2. .align 8
  3. Fdmaxint:
  4. .double 0r2147483648
  5. Fsmaxint:
  6. .single 0r2147483648
  7. maxint:
  8. .word 0x80000000
  9. cfu4:
  10. ld [%l0], %f0
  11. set Fsmaxint, %o0
  12. ld [%o0], %f1
  13. fcmps %f0, %f1
  14. nop
  15. fbul 1f
  16. nop
  17. fsubs %f0, %f1, %f0
  18. fstoi %f0, %f1
  19. st %f1,[%l0]
  20. ld [%l0],%o0
  21. set maxint, %o1
  22. ld [%o1],%o2
  23. add %o0, %o2, %o0
  24. ba 2f
  25. nop
  26. 1:
  27. fstoi %f0, %f1
  28. st %f1,[%l0]
  29. ld [%l0],%o0
  30. 2:
  31. inc 4,%l0
  32. retl
  33. nop
  34. cfu8:
  35. ld [%l0], %f0
  36. ld [%l0+4], %f1
  37. set Fdmaxint, %o0
  38. ldd [%o0], %f2
  39. fcmpd %f0, %f2
  40. nop
  41. fbul 1f
  42. nop
  43. fsubd %f0, %f2, %f0
  44. fdtoi %f0, %f2
  45. st %f2,[%l0]
  46. ld [%l0],%o0
  47. set maxint, %o1
  48. ld [%o1],%o2
  49. add %o0, %o2, %o0
  50. ba 2f
  51. nop
  52. 1:
  53. fdtoi %f0, %f2
  54. st %f2,[%l0]
  55. ld [%l0],%o0
  56. 2:
  57. inc 8,%l0
  58. retl
  59. nop