fdmul32.s
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* fdmul32.s - VxWorks conversion from Microtek tools to Sun native */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,06aug92,jwt  converted.
  7. */
  8. /*
  9. ! ! ! ! !
  10. ! SPARClite Floating Point Library
  11. !
  12. ! Copyright (C) 1992 By
  13. ! United States Software Corporation
  14. ! 14215 N.W. Science Park Drive
  15. ! Portland, Oregon 97229
  16. !
  17. ! This software is furnished under a license and may be used
  18. ! and copied only in accordance with the terms of such license
  19. ! and with the inclusion of the above copyright notice.
  20. ! This software or any other copies thereof may not be provided
  21. ! or otherwise made available to any other person.  No title to
  22. ! and ownership of the software is hereby transferred.
  23. !
  24. ! The information in this software is subject to change without 
  25. ! notice and should not be construed as a commitment by United
  26. ! States Software Corporation.
  27. !
  28. ! First Release: V1.02 March 26 1992
  29. ! ! ! ! !
  30. .macro scan,p1,p2,p3
  31. .word 0x81602000 | (&p3<<25) | (&p1<<14) | p2
  32. .endm
  33. .macro umul,p1,p2,p3
  34. .word 0x80500000 | (&p3<<25) | (&p1<<14) | &p2
  35. .endm
  36. .macro divscc,p1,p2,p3
  37. .word 0x80e80000 | (&p3<<25) | (&p1<<14) | &p2
  38. .endm
  39. */
  40. #include "arch/sparc/ussSun4.h"
  41. .text
  42. .align 4
  43. .global _fdmul
  44. _fdmul:
  45. save %sp,-96,%sp
  46. sra     %i0,23,%l3
  47. and     %l3,0xff,%l3
  48. sra     %i1,23,%i3
  49. and     %i3,0xff,%i3
  50. sethi   %hi(0x80000000),%i4
  51. sll     %i0,8,%l1
  52. or      %l1,%i4,%l1
  53. sll     %i1,8,%i2
  54. or      %i2,%i4,%i2
  55. xor     %i0,%i1,%l4
  56. and     %i4,%l4,%i4
  57. sub     %l3,1,%l4
  58. subcc   %l4,0xfe,%g0
  59. bcc     AspecA         
  60. sub     %i3,1,%l4
  61. subcc   %l4,0xfe,%g0
  62. bcc     AspecB   
  63. NOP
  64. umul %l1,%i2,%l2
  65. rd %y,%l1
  66. subcc   %l1,0,%l1
  67. ble     i1       
  68. NOP
  69. addcc   %l2,%l2,%l2
  70. addx    %l1,%l1,%l1
  71. sub     %l3,1,%l3
  72. i1: add     %i3,0x302,%l4
  73. add     %l3,%l4,%l3
  74. subcc   %l3,0,%l3
  75. ble     Azer     
  76. NOP
  77. addcc   %l2,0x400,%l2
  78. addxcc  %l1,0,%l1
  79. addx    %l3,0,%l3
  80. andcc   %l2,0x7ff,%l4
  81. be,a i2                
  82. and     %l2,0xfffff7ff,%l2
  83. i2: srl     %l2,11,%l0
  84. sll     %l1,21,%l4
  85. or      %l0,%l4,%l0
  86. srl     %l1,11,%i5
  87. sethi   %hi(0xfffff),%l4
  88. or      %l4,0x3ff,%l4
  89. and     %i5,%l4,%i5
  90. sll     %l3,20,%l4
  91. or      %i5,%l4,%i5
  92. or      %i5,%i4,%i5
  93. Aret: or      %g0,%i5,%i0
  94. or      %g0,%l0,%i1
  95. A999: jmpl %i7+8,%g0
  96. restore %g0,0,%g0
  97. AspecA: subcc   %l3,0,%l3
  98. bne     i3             
  99. subcc   %i3,0xff,%g0
  100. be      Anan     
  101. NOP
  102. ba,a    Azer     
  103. i3: addcc   %l1,%l1,%l4
  104. bne     Anan           
  105. subcc   %i3,0,%i3
  106. be      Anan           
  107. subcc   %i3,0xff,%g0
  108. bne     Ainf           
  109. addcc   %i2,%i2,%l4
  110. bne     Anan     
  111. NOP
  112. ba,a    Ainf     
  113. AspecB: subcc   %i3,0,%i3
  114. be      Azer           
  115. addcc   %i2,%i2,%l4
  116. bne     Anan     
  117. NOP
  118. Ainf: sethi   %hi(0x7ff00000),%i5
  119. ba      Aret     
  120. or      %g0,0,%l0
  121. Azer: or      %g0,0,%l0
  122. ba      Aret     
  123. or      %g0,%i4,%i5
  124. Anan: sethi   %hi(0xfff80000),%i5
  125. ba      Aret     
  126. or      %g0,0,%l0
  127. ! .end