|
|
1.1 root 1: /* Kcvtdl.s 1.3 86/01/05 */
2:
3: #include "../tahoemath/fp.h"
4: #include "../tahoemath/Kfp.h"
5: #include "../tahoe/SYS.h"
6:
7:
8: .text
9: .globl _Kcvtdl
10: .globl _Kcvtdu
11: _Kcvtdu:
12: _Kcvtdl:
13: .word R5|R4|R3|R2
14:
15: #
16: #Some initializations:
17: #
18: clrl r3 # r3 - negative flag.
19: movl 4(fp),r0 # fetch operand.
20: movl 8(fp),r1
21: #
22: #get exponent
23: #
24: andl3 $EXPMASK,r0,r2 # r2 will hold the exponent.
25: jeql retzero
26: cmpl $TWO_EXP,r2 # if exponent is less then -2,return zero.
27: jgtr retzero
28: andl2 $0!EXPSIGN,r2 # turn off biased exponent sign
29: shrl $EXPSHIFT,r2,r2
30: #
31: #get fraction
32: #
33: bbc $31,r0,positive # if negative remember it.
34: incl r3
35: positive:
36: # clear the non fraction parts.
37: andl2 $(0!(EXPMASK | SIGNBIT)),r0
38: # add the hidden bit.
39: orl2 $(0!CLEARHID),r0
40: subl2 $24,r2 # compute the shift.
41: jgtr shift_left
42: mnegl r2,r2
43: shrl r2,r0,r0 # shift right.
44: jmp shifted
45: shift_left:
46: cmpl r2,$7
47: jgtr overflow
48: go_on: shlq r2,r0,r0 # shift right.
49: shifted:
50: bbc $0,r3,done # check for negative
51: mnegl r0,r0
52: done:
53: ret
54:
55: retzero:
56: clrl r0
57: ret
58: overflow:
59: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.