date and time created 86/07/02 16:25:50 by sam
authorSam Leffler <sam@ucbvax.Berkeley.EDU>
Thu, 3 Jul 1986 07:25:50 +0000 (23:25 -0800)
committerSam Leffler <sam@ucbvax.Berkeley.EDU>
Thu, 3 Jul 1986 07:25:50 +0000 (23:25 -0800)
SCCS-vsn: lib/libc/tahoe/fpe/cvtud.s 1.1
SCCS-vsn: lib/libc/tahoe/fpe/cvtuf.s 1.1

usr/src/lib/libc/tahoe/fpe/cvtud.s [new file with mode: 0644]
usr/src/lib/libc/tahoe/fpe/cvtuf.s [new file with mode: 0644]

diff --git a/usr/src/lib/libc/tahoe/fpe/cvtud.s b/usr/src/lib/libc/tahoe/fpe/cvtud.s
new file mode 100644 (file)
index 0000000..d158fa6
--- /dev/null
@@ -0,0 +1,52 @@
+#ifdef LIBC_SCCS
+       .asciz  "@(#)cvtud.s    1.1 (Berkeley/CCI) %G%"
+#endif LIBC_SCCS
+
+#include <tahoemath/fp.h>
+#include "DEFS.h"
+
+XENTRY(cvtud, R2|R3|R4|R5)
+ #
+ #     Some initializations:
+ #
+       clrl    r2              # r2 - exponent.
+       movl    4(fp),r0        # fetch operand.
+       jeql    retzero         # return zero.
+ # 
+ #     Compute exponent:
+ #
+positive:
+       ffs     r0,r1
+       incl    r1
+       addl2   r1,r2
+       shrl    r1,r0,r0
+       jneq    positive        # look for more set bits.
+ #
+ # we have the exponent in r2.
+ #
+       movl    4(fp),r0        # r0,r1 will hold the resulting f.p. number.
+       clrl    r1
+ #
+ #     Shift the fraction part to its proper place:
+ #
+       subl3   r2,$HID_POS,r3
+       jlss    shiftr          # if less then zero we have to shift right.
+       shll    r3,r0,r0        # else we shift left.
+       jmp     shifted
+shiftr:
+       mnegl   r3,r3
+       shrq    r3,r0,r0
+shifted:
+       andl2   $CLEARHID,r0    # clear the hidden bit.
+       shal    $EXPSHIFT,r2,r2 # shift the exponent to its proper place.
+       orl2    $EXPSIGN,r2     # set the exponent sign bit(to bias it).
+       orl2    r2,r0           # combine exponent & fraction.
+sign_ok:
+       ret
+
+retzero:
+       clrl    r0
+       clrl    r1
+       ret
+
+       
diff --git a/usr/src/lib/libc/tahoe/fpe/cvtuf.s b/usr/src/lib/libc/tahoe/fpe/cvtuf.s
new file mode 100644 (file)
index 0000000..ac9fdf8
--- /dev/null
@@ -0,0 +1,51 @@
+#ifdef LIBC_SCCS
+       .asciz  "@(#)cvtuf.s    1.1 (Berkeley/CCI) %G%"
+#endif LIBC_SCCS
+
+#include <tahoemath/fp.h>
+#include "DEFS.h"
+
+XENTRY(cvtuf, R2|R3|R4|R5)
+ #
+ #     Some initializations:
+ #
+       clrl    r1
+       clrl    r2              # r2 - exponent.
+       movl    4(fp),r0        # fetch operand.
+       jeql    retzero         # return zero.
+ # 
+ #     Compute exponent:
+ #
+positive:
+       ffs     r0,r1
+       incl    r1
+       addl2   r1,r2
+       shrl    r1,r0,r0
+       jneq    positive        # look for more set bits.
+ #
+ # we have the exponent in r2.
+ #
+       movl    4(fp),r0        # r0 will hold the resulting f.p. number.
+ #
+ #     Shift the fraction part to its proper place:
+ #
+       subl3   r2,$HID_POS,r3
+       jlss    shiftr          # if less then zero we have to shift right.
+       shll    r3,r0,r0        # else we shift left.
+       jmp     shifted
+shiftr:
+       mnegl   r3,r3
+       shrl    r3,r0,r0
+shifted:
+       andl2   $CLEARHID,r0    # clear the hidden bit.
+       shal    $EXPSHIFT,r2,r2 # shift the exponent to its proper place.
+       orl2    $EXPSIGN,r2     # set the exponent sign bit(to bias it).
+       orl2    r2,r0           # combine exponent & fraction.
+sign_ok:
+       ret
+
+retzero:
+       clrl    r0
+       ret
+
+