|
|
1.1 root 1: /*
2: * Copyright (c) 1986 Regents of the University of California.
3: * All rights reserved.
4: *
5: * This code is derived from software contributed to Berkeley by
6: * Computer Consoles Inc.
7: *
8: * Redistribution and use in source and binary forms are permitted
9: * provided that: (1) source distributions retain this entire copyright
10: * notice and comment, and (2) distributions including binaries display
11: * the following acknowledgement: ``This product includes software
12: * developed by the University of California, Berkeley and its contributors''
13: * in the documentation or other materials provided with the distribution
14: * and in all advertising materials mentioning features or use of this
15: * software. Neither the name of the University nor the names of its
16: * contributors may be used to endorse or promote products derived
17: * from this software without specific prior written permission.
18: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
19: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
20: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21: */
22:
23: #if defined(SYSLIBC_SCCS) && !defined(lint)
24: .asciz "@(#)cvtdl.s 1.3 (Berkeley) 6/1/90"
25: #endif /* SYSLIBC_SCCS and not lint */
26:
27: #include <tahoemath/fp.h>
28: #include "DEFS.h"
29:
30: XENTRY(cvtdu, R2|R3|R4|R5)
31: jbr 1f
32:
33: XENTRY(cvtdl, R2|R3|R4|R5)
34: #
35: #Some initializations:
36: #
37: 1:
38: movl 4(fp),r0 # fetch operand.
39: movl 8(fp),r1
40: clrl r3 # r3 - negative flag.
41: #
42: #get exponent
43: #
44: andl3 $EXPMASK,r0,r2 # r2 will hold the exponent.
45: jeql is_reserved # check for reserved operand.
46: cmpl $ONE_EXP,r2 # if exponent is less then 1,return zero.
47: jgtr retzero
48: andl2 $0!EXPSIGN,r2 # turn off biased exponent sign
49: shrl $EXPSHIFT,r2,r2
50: #
51: #get fraction
52: #
53: bbc $31,r0,positive # if negative remember it.
54: incl r3
55: positive:
56: # clear the non fraction parts.
57: andl2 $(0!(EXPMASK | SIGNBIT)),r0
58: # add the hidden bit.
59: orl2 $(0!CLEARHID),r0
60: subl2 $24,r2 # compute the shift.
61: jgtr shift_left
62: mnegl r2,r2
63: shrl r2,r0,r0 # shift right.
64: jmp shifted
65: shift_left:
66: cmpl r2,$7
67: jgtr overflow
68: go_on: shlq r2,r0,r0 # shift right.
69: shifted:
70: bbc $0,r3,done # check for negative
71: mnegl r0,r0
72: done:
73: ret
74:
75: retzero:
76: clrl r0
77: ret
78: overflow:
79: callf $4,fpover
80: jmp go_on
81:
82: is_reserved:
83: bbc $31,r0,retzero
84:
85: callf $4,fpresop
86: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.