fpexp32.s
上传用户:baixin
上传日期:2008-03-13
资源大小:4795k
文件大小:4k
开发平台:

MultiPlatform

  1. /* fpexp32.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. .data
  42. .align 4
  43. expcof: .word 0x7ff3
  44. .word 0x50c24
  45. .word 0x2bb100
  46. .word 0x13b2ab7
  47. .word 0x71ac236
  48. .word 0x1ebfbe00
  49. .word 0x58b90bfc
  50. .word 0x80000000
  51. .text
  52. .align 4
  53. .global _fpexexp
  54. _fpexexp:
  55. save %sp,-96,%sp
  56. sra     %i2,31,%i4
  57. sethi   %hi(0xb8aa3b29),%i5
  58. or      %i5,0x329,%i5
  59. umul %i5,%i0,%i5
  60. rd %y,%l1
  61. subcc   %l1,0,%l1
  62. ble     i1       
  63. NOP
  64. addcc   %i5,%i5,%i5
  65. addx    %l1,%l1,%l1
  66. sub     %i1,1,%i1
  67. i1: or      %g0,0,%i3
  68. subcc   %i1,0x7d,%l0
  69. be      Alab3          
  70. subcc   %l0,0xf,%g0
  71. bcs     i2             
  72. subcc   %l0,0,%l0
  73. bg      Aovr     
  74. NOP
  75. sub     %g0,%l0,%i5
  76. subcc %i5,32,%g0
  77. bcc,a L1             
  78. or %g0,0,%l1
  79. L1: srl %l1,%i5,%l1
  80. ba,a    Alab3    
  81. i2: or      %g0,0x20,%l4
  82. sub     %l4,%l0,%l4
  83. srl     %l1,%l4,%i3
  84. sll     %l1,%l0,%l1
  85. Alab3: subcc   %l1,0,%l1
  86. bpos    i3       
  87. NOP
  88. sub     %g0,%l1,%l1
  89. xor     %i4,-1,%i4
  90. add     %i3,1,%i3
  91. i3: sethi   %hi(expcof),%l3
  92. or %l3,%lo(expcof),%l3
  93. ld      [%l3],%i0
  94. add     %l3,4,%l3
  95. b4: xor     %i0,%i4,%l2
  96. umul %l1,%i0,%i0
  97. rd %y,%i0
  98. subcc   %l2,0,%l2
  99. bneg,a i5              
  100. sub     %g0,%i0,%i0
  101. i5: ld      [%l3],%l0
  102. add     %l3,4,%l3
  103. add     %i0,%l0,%i0
  104. sethi   %hi(0x80000000),%l4
  105. subcc   %l0,%l4,%g0
  106. bne     b4       
  107. NOP
  108. sra     %i2,31,%i4
  109. xor     %i3,%i4,%i3
  110. sub     %i3,%i4,%i3
  111. add     %i3,0x7f,%i1
  112. subcc   %i0,0,%i0
  113. bneg    Aret     
  114. NOP
  115. sll     %i0,1,%i0
  116. sub     %i1,1,%i1
  117. Aret: or      %g0,0,%i2
  118. A999: jmpl %i7+8,%g0
  119. restore %g0,0,%g0
  120. Aovr: sethi   %hi(0x80000000),%i0
  121. sethi   %hi(0xffff),%i1
  122. or      %i1,0x3ff,%i1
  123. subcc   %i2,0,%i2
  124. bne,a Aret             
  125. xor     %i1,-1,%i1
  126. ba,a    Aret     
  127. .global _fpexp
  128. _fpexp:
  129. .global _expf
  130. _expf:
  131. save %sp,-96,%sp
  132. srl     %i0,23,%i2
  133. and     %i2,0xff,%i2
  134. sethi   %hi(0x80000000),%i3
  135. sll     %i0,8,%i1
  136. or      %i1,%i3,%i1
  137. and     %i3,%i0,%i3
  138. sub     %i2,1,%l2
  139. subcc   %l2,0xfe,%g0
  140. bcc     Bspec          
  141. or      %g0,%i1,%o0
  142. or      %g0,%i2,%o1
  143. call    _fpexexp
  144. or      %g0,%i3,%o2
  145. or      %g0,%o0,%i4
  146. or      %g0,%o1,%i5
  147. or      %g0,%o2,%l0
  148. sub     %i5,1,%l2
  149. subcc   %l2,0xfe,%g0
  150. bcc     Bundove  
  151. NOP
  152. Bret: sll     %i4,1,%i0
  153. srl     %i0,9,%i0
  154. sll     %i5,23,%l2
  155. or      %i0,%l2,%i0
  156. B999: jmpl %i7+8,%g0
  157. restore %g0,0,%g0
  158. Bspec: subcc   %i2,0,%i2
  159. bne     i8       
  160. NOP
  161. ba      B999     
  162. sethi   %hi(0x3f800000),%i0
  163. i8: sll     %i1,1,%l2
  164. subcc   %l2,0,%l2
  165. be      Bundove  
  166. NOP
  167. ba      B999     
  168. sethi   %hi(0xffc00000),%i0
  169. Bundove:
  170. subcc   %i3,0,%i3
  171. be      i10      
  172. NOP
  173. or      %g0,9,%l1
  174. sub     %l1,%i5,%l1
  175. subcc %l1,32,%g0
  176. bcc,a L2             
  177. or %g0,0,%i4
  178. L2: srl %i4,%l1,%i4
  179. ba      B999     
  180. or      %g0,%i4,%i0
  181. i10: ba      B999     
  182. sethi   %hi(0x7f800000),%i0
  183. ! .end