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

VxWorks

开发平台:

C/C++

  1. /* Copyright 1991-1992 Wind River Systems, Inc. */
  2. .data
  3. .globl _copyright_wind_river
  4. .long _copyright_wind_river
  5. /*
  6. modification history
  7. --------------------
  8. 01f,23aug92,jcf  changed bxxx to jxx.
  9. 01e,05jun92,kdl  changed external branches to jumps (and bsr's to jsr's).
  10. 01d,26may92,rrr  the tree shuffle
  11. 01c,30mar92,kdl  added include of "uss_fp.h"; commented-out ".set" directives
  12.  (SPR #1398).
  13. 01b,04oct91,rrr  passed through the ansification filter
  14.   -changed ASMLANGUAGE to _ASMLANGUAGE
  15.   -changed copyright notice
  16. 01a,28jan91,kdl  original US Software version.
  17. */
  18. /*
  19. DESCRIPTION
  20. |       ttl     FPAC 68K/XLFNCS: IEEE Precision Translation Functions
  21. |XLFNCS idnt    1,0             ; IEEE Precision Translation Functions
  22. |                               ; XLFNCS.A68
  23. |
  24. |* * * * * * * * * *
  25. |
  26. |       68000 DPAC  --  Precision Translations Functions
  27. |
  28. |       Copyright (C) 1984 - 1990 By
  29. |       United States Software Corporation
  30. |       14215 N.W. Science Park Drive
  31. |       Portland, Oregon 97229
  32. |
  33. |       This software is furnished under a license and may be used
  34. |       and copied only in accordance with the terms of such license
  35. |       and with the inclusion of the above copyright notice.
  36. |       This software or any other copies thereof may not be provided
  37. |       or otherwise made available to any other person.  No title to
  38. |       and ownership of the software is hereby transferred.
  39. |
  40. |       The information in this software is subject to change without
  41. |       notice and should not be construed as a commitment by United
  42. |       States Software Corporation.
  43. |
  44. |       Version:        See VSNLOG.TXT
  45. |       Released:       01 Jan 1984
  46. |
  47. |* * * * * * * * * *
  48. |
  49. NOMANUAL
  50. */
  51. #define _ASMLANGUAGE
  52. #include "uss_fp.h"
  53. |
  54. |       opt     BRS             ; Default to forward branches SHORT
  55. |
  56. |
  57.         .globl  SINGLE,DOUBLE
  58. |
  59. |
  60. |       .set    FBIAS,127
  61. |       .set    DBIAS,1023
  62. |
  63. |       xref    GETDP1,DOPRSL,DZERRS,DINFRS,DNANRS
  64. |       xref    GETFP1,FOPRSL,FZERRS,FINFRS,FNANRS
  65. |
  66. |       page
  67. |
  68.         .text
  69. /*
  70. |
  71. |  SINGLE
  72. |  ======
  73. |  Convert the double precision value on the stack to single precision
  74. |
  75. */
  76. SINGLE:
  77.         jsr     GETDP1          | Fetch the operand
  78. |
  79.         andw    d0,d0
  80. jne SNG001
  81.         jmp     FZERRS          | J/ 0.0 parameter/result
  82. |
  83. SNG001:
  84.         cmpiw   #0x7FF,d0
  85.         jeq     SNG010          | J/ operand is NaN/INF
  86. |
  87.         addiw   #FBIAS-DBIAS,d0 | Change exponent bias
  88.         jmp     FOPRSL          | Standard single prec. result routine
  89. |
  90. SNG010:
  91.         lsll    #1,d2           | Remove implicit bit
  92.         jmp     FNANRS          | J/ NaN converts to NaN
  93.         jmp     FINFRS          |    INF converts to INF
  94. /*
  95. |
  96. |
  97. |
  98. |  DOUBLE
  99. |  ======
  100. |  Extend the single precision argument to double precision
  101. |
  102. */
  103. DOUBLE:
  104.         jsr     GETFP1          | Fetch the operand
  105. |
  106.         andw    d0,d0
  107. jne DBL001
  108.         jmp     DZERRS          | J/ 0.0 converts to 0.0
  109. |
  110. DBL001:
  111.         cmpiw   #0xFF,d0
  112.         jeq     DBL010          | J/ operand is NaN/INF
  113. |
  114.         addiw   #DBIAS-FBIAS,d0 | Change exponent bias
  115.         clrl    d3              | Extend precision of mantissa
  116.         jmp     DOPRSL          | Standard double prec. result routine
  117. |
  118. DBL010:
  119.         lsll    #1,d2
  120.         jmp     DNANRS          | J/ NaN converts to NaN
  121.         jmp     DINFRS          |    INF converts to INF
  122. |
  123. |
  124. |       end