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

VxWorks

开发平台:

C/C++

  1. /* ceil32.s - VxWorks conversion from Microtek tools to Sun native */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,10nov92,jwt  added temporary (until USS patch) fix for ceil(+0.0) = 1.0.
  7. 01a,05aug92,jwt  converted.
  8. */
  9. /*
  10. ! ! ! ! !
  11. ! SPARClite Floating Point Library
  12. !
  13. ! Copyright (C) 1992 By
  14. ! United States Software Corporation
  15. ! 14215 N.W. Science Park Drive
  16. ! Portland, Oregon 97229
  17. !
  18. ! This software is furnished under a license and may be used
  19. ! and copied only in accordance with the terms of such license
  20. ! and with the inclusion of the above copyright notice.
  21. ! This software or any other copies thereof may not be provided
  22. ! or otherwise made available to any other person.  No title to
  23. ! and ownership of the software is hereby transferred.
  24. !
  25. ! The information in this software is subject to change without 
  26. ! notice and should not be construed as a commitment by United
  27. ! States Software Corporation.
  28. !
  29. ! First Release: V1.02 March 26 1992
  30. ! ! ! ! !
  31. .macro scan,p1,p2,p3
  32. .word 0x81602000 | (&p3<<25) | (&p1<<14) | p2
  33. .endm
  34. .macro umul,p1,p2,p3
  35. .word 0x80500000 | (&p3<<25) | (&p1<<14) | &p2
  36. .endm
  37. .macro divscc,p1,p2,p3
  38. .word 0x80e80000 | (&p3<<25) | (&p1<<14) | &p2
  39. .endm
  40. .text
  41. */
  42. #include "arch/sparc/ussSun4.h"
  43. .global _dpceil
  44. _dpceil:
  45. .global _ceil
  46. _ceil:
  47. save %sp,-96,%sp
  48. /* Test for positive zero */
  49. set 0xFFF00000,%l1 /* sign (31) and exponent (30-20) */
  50. andcc %l1,%i0,%l1
  51. bne ceilNonZero
  52. nop
  53. clr %i0 /* return value */
  54. clr %i1
  55. ret
  56. restore
  57. ceilNonZero:
  58. sethi   %hi(0x80000000),%l1
  59. and     %l1,%i0,%i4
  60. sll     %i0,1,%i3
  61. srl     %i3,21,%i3
  62. subcc   %i3,0x7ff,%g0
  63. be      Aspec    
  64. NOP
  65. or      %g0,0x433,%l1
  66. sub     %l1,%i3,%i3
  67. subcc   %i3,0,%i3
  68. ble     Aret           
  69. subcc   %i3,0x35,%g0
  70. bl      i1             
  71. subcc   %i4,0,%i4
  72. bne     Azer     
  73. NOP
  74. ba,a    Aone     
  75. i1: subcc   %i4,0,%i4
  76. bne     i2       
  77. NOP
  78. subcc   %g0,%i1,%i1
  79. subx    %g0,%i0,%i0
  80. i2: and     %i3,0x1f,%l1
  81. or      %g0,1,%l0
  82. sll     %l0,%l1,%l0
  83. sub     %g0,%l0,%l0
  84. subcc   %i3,0x20,%g0
  85. bl      i3       
  86. NOP
  87. or      %g0,0,%i1
  88. ba      e3       
  89. and     %i0,%l0,%i0
  90. i3: and     %i1,%l0,%i1
  91. e3: subcc   %i4,0,%i4
  92. bne     Aret     
  93. NOP
  94. subcc   %g0,%i1,%i1
  95. subx    %g0,%i0,%i0
  96. Aret:
  97. A999: jmpl %i7+8,%g0
  98. restore %g0,0,%g0
  99. Aspec: sethi   %hi(0xfff00000),%l2
  100. andn    %i0,%l2,%l1
  101. orcc    %l1,%i1,%l1
  102. bne     Anan     
  103. NOP
  104. ba,a    Aret     
  105. Aone: sethi   %hi(0x3ff00000),%i0
  106. ba      Aret     
  107. or      %g0,0,%i1
  108. Azer: or      %g0,%i4,%i0
  109. ba      Aret     
  110. or      %g0,0,%i1
  111. Anan: sethi   %hi(0xfff80000),%i0
  112. ba      Aret     
  113. or      %g0,0,%i1
  114. ! .end