Commit | Line | Data |
---|---|---|
9d1834ba | 1 | /* Klogf.s 1.3 86/01/05 */ |
2b252132 | 2 | |
9d1834ba | 3 | #include "../tahoe/SYS.h" |
2b252132 | 4 | |
3893ac9d | 5 | .text |
2b252132 | 6 | ENTRY(Klogf, R5|R4|R3|R2) |
3893ac9d SL |
7 | subl3 $88,fp,sp |
8 | clrl 8(fp) | |
9 | tstl 4(fp) | |
10 | jgtr L53 | |
2b252132 SL |
11 | movl small+4,r1 |
12 | movl small,r0 | |
3893ac9d SL |
13 | ret |
14 | L53: pushl 20(fp) # hfs | |
15 | subl3 $88,fp,-(sp) # &exp | |
16 | pushl 8(fp) # arg | |
17 | pushl 4(fp) | |
18 | callf $20,_Kfrexpf | |
19 | ldd r0 | |
20 | # movl r1,-56(fp) | |
21 | std -60(fp) # movl r0,-60(fp) | |
22 | jbr L55 | |
23 | L2000001: | |
24 | pushl 20(fp) # hfs | |
2b252132 | 25 | ldd two # 2.0 |
3893ac9d SL |
26 | pushd |
27 | ldd -60(fp) # x | |
28 | pushd | |
29 | callf $24,_Kmuld | |
30 | ldd r0 | |
31 | std -60(fp) | |
32 | subl2 $1,-88(fp) | |
2b252132 | 33 | L55: cmpd2 -60(fp),half |
3893ac9d SL |
34 | jlss L2000001 |
35 | cmpd2 -60(fp),_sqrto2 | |
36 | jgeq L59 | |
37 | pushl 20(fp) # hfs | |
38 | ldd -60(fp) # x | |
39 | pushd | |
2b252132 | 40 | ldd two # 2.0 |
3893ac9d SL |
41 | pushd |
42 | callf $24,_Kmuld | |
43 | ldd r0 | |
44 | std -60(fp) | |
45 | subl2 $1,-88(fp) | |
46 | L59: pushl 20(fp) # hfs | |
2b252132 | 47 | ldd one # 1.0 |
3893ac9d SL |
48 | pushd |
49 | ldd -60(fp) # x | |
50 | pushd | |
51 | callf $24,_Ksubd | |
52 | ldd r0 | |
53 | std r2 | |
54 | pushl 20(fp) # hfs | |
2b252132 | 55 | ldd one # 1.0 |
3893ac9d SL |
56 | pushd |
57 | ldd -60(fp) # x | |
58 | pushd | |
59 | callf $24,_Kaddd | |
60 | ldd r0 | |
61 | std r4 | |
62 | pushl 20(fp) # hfs | |
63 | ldd r4 # temp result of x-1 | |
64 | pushd | |
65 | ldd r2 # temp result of x+1 | |
66 | pushd | |
67 | callf $24,_Kdivd | |
68 | ldd r0 | |
69 | std -68(fp) # z | |
70 | pushl 20(fp) # hfs | |
71 | pushd # z | |
72 | pushd # z | |
73 | callf $24,_Kmuld | |
74 | ldd r0 | |
75 | std -76(fp) # zsq | |
76 | pushl 20(fp) # hfs | |
77 | ldd -76(fp) # zsq | |
78 | pushd | |
79 | ldd _p1 # p1 | |
80 | pushd | |
81 | callf $24,_Kmuld | |
82 | ldd r0 | |
83 | std r2 | |
84 | pushl 20(fp) # hfs | |
85 | ldd _p0 # p0 | |
86 | pushd | |
87 | ldd r2 | |
88 | pushd | |
89 | callf $24,_Kaddd | |
90 | ldd r0 | |
91 | std -84(fp) # temp | |
92 | pushl 20(fp) # hfs | |
93 | ldd -76(fp) # zsq | |
94 | pushd | |
95 | ldd _q1 | |
96 | pushd | |
97 | callf $24,_Kmuld | |
98 | ldd r0 | |
99 | std r2 | |
100 | pushl 20(fp) # hfs | |
101 | ldd _q0 # q0 | |
102 | pushd | |
103 | ldd r2 | |
104 | pushd | |
105 | callf $24,_Kaddd | |
106 | ldd r0 | |
107 | std r2 # temp result of (q1*zsq+q0) | |
108 | pushl 20(fp) # hfs | |
109 | ldd r2 | |
110 | pushd | |
111 | ldd -84(fp) # temp | |
112 | pushd | |
113 | callf $24,_Kdivd | |
114 | ldd r0 | |
115 | std -84(fp) # put in temp | |
116 | pushl 20(fp) # hfs | |
117 | ldd -68(fp) # z | |
118 | pushd | |
119 | ldd -84(fp) | |
120 | pushd | |
121 | callf $24,_Kmuld | |
122 | ldd r0 | |
123 | std r2 | |
124 | pushl 20(fp) #hfs | |
125 | pushl $0 # 0 pad | |
126 | pushl -88(fp) # exp | |
127 | pushl $0 # dummy | |
128 | pushl $0 # dummy | |
129 | callf $24,_Kcvtld | |
130 | pushl 20(fp) # hfs | |
131 | ldd _log2 # log2 | |
132 | pushd | |
133 | pushl r1 # exp converted | |
134 | pushl r0 | |
135 | callf $24,_Kmuld | |
136 | ldd r0 | |
137 | std r4 | |
138 | pushl 20(fp) # hfs | |
139 | ldd r2 # result of temp*z | |
140 | pushd | |
141 | ldd r4 | |
142 | pushd | |
143 | callf $24,_Kaddd | |
144 | ldd r0 | |
145 | cvdf | |
146 | stf r0 | |
147 | clrl r1 | |
148 | ret | |
2b252132 SL |
149 | |
150 | .data | |
151 | .align 2 | |
152 | _log2: .long 0x40317217, 0xf7d1cf7a # .double 0.69314718055994531 | |
153 | _ln10: .long 0x41135d8d, 0xddaaa8ac # .double 2.3025850929940457 | |
154 | _sqrto2:.long 0x403504f3, 0x33f9de65 # .double 0.70710678118654753 | |
155 | _p0: .long 0xc154114d, 0xeb0ba468 # .double -3.31355617479 | |
156 | _p1: .long 0x40654226, 0x56bd0c4c # .double 0.89554061525 | |
157 | _q0: .long 0xc0d4114c, 0xfdc7df02 # .double -1.65677797691 | |
158 | _q1: .long 0x40800000, 0x00000000 # .double 1 | |
159 | small: .long 0xfffffffe, 0xfffffffe # .double -1.7014117331926443e+38 | |
160 | half: .long 0x40000000, 0x00000000 # .double 0.5 | |
161 | two: .long 0x41000000, 0x00000000 # .double 2 | |
162 | one: .long 0x40800000, 0x00000000 # .double 1 |