redo include files for kernel reorg
[unix-history] / usr / src / sys / tahoe / math / Klogf.s
/* Klogf.s 1.4 90/12/04 */
#include "../tahoe/SYS.h"
.text
ENTRY(Klogf, R5|R4|R3|R2)
subl3 $88,fp,sp
clrl 8(fp)
tstl 4(fp)
jgtr L53
movl small+4,r1
movl small,r0
ret
L53: pushl 20(fp) # hfs
subl3 $88,fp,-(sp) # &exp
pushl 8(fp) # arg
pushl 4(fp)
callf $20,_Kfrexpf
ldd r0
# movl r1,-56(fp)
std -60(fp) # movl r0,-60(fp)
jbr L55
L2000001:
pushl 20(fp) # hfs
ldd two # 2.0
pushd
ldd -60(fp) # x
pushd
callf $24,_Kmuld
ldd r0
std -60(fp)
subl2 $1,-88(fp)
L55: cmpd2 -60(fp),half
jlss L2000001
cmpd2 -60(fp),_sqrto2
jgeq L59
pushl 20(fp) # hfs
ldd -60(fp) # x
pushd
ldd two # 2.0
pushd
callf $24,_Kmuld
ldd r0
std -60(fp)
subl2 $1,-88(fp)
L59: pushl 20(fp) # hfs
ldd one # 1.0
pushd
ldd -60(fp) # x
pushd
callf $24,_Ksubd
ldd r0
std r2
pushl 20(fp) # hfs
ldd one # 1.0
pushd
ldd -60(fp) # x
pushd
callf $24,_Kaddd
ldd r0
std r4
pushl 20(fp) # hfs
ldd r4 # temp result of x-1
pushd
ldd r2 # temp result of x+1
pushd
callf $24,_Kdivd
ldd r0
std -68(fp) # z
pushl 20(fp) # hfs
pushd # z
pushd # z
callf $24,_Kmuld
ldd r0
std -76(fp) # zsq
pushl 20(fp) # hfs
ldd -76(fp) # zsq
pushd
ldd _p1 # p1
pushd
callf $24,_Kmuld
ldd r0
std r2
pushl 20(fp) # hfs
ldd _p0 # p0
pushd
ldd r2
pushd
callf $24,_Kaddd
ldd r0
std -84(fp) # temp
pushl 20(fp) # hfs
ldd -76(fp) # zsq
pushd
ldd _q1
pushd
callf $24,_Kmuld
ldd r0
std r2
pushl 20(fp) # hfs
ldd _q0 # q0
pushd
ldd r2
pushd
callf $24,_Kaddd
ldd r0
std r2 # temp result of (q1*zsq+q0)
pushl 20(fp) # hfs
ldd r2
pushd
ldd -84(fp) # temp
pushd
callf $24,_Kdivd
ldd r0
std -84(fp) # put in temp
pushl 20(fp) # hfs
ldd -68(fp) # z
pushd
ldd -84(fp)
pushd
callf $24,_Kmuld
ldd r0
std r2
pushl 20(fp) #hfs
pushl $0 # 0 pad
pushl -88(fp) # exp
pushl $0 # dummy
pushl $0 # dummy
callf $24,_Kcvtld
pushl 20(fp) # hfs
ldd _log2 # log2
pushd
pushl r1 # exp converted
pushl r0
callf $24,_Kmuld
ldd r0
std r4
pushl 20(fp) # hfs
ldd r2 # result of temp*z
pushd
ldd r4
pushd
callf $24,_Kaddd
ldd r0
cvdf
stf r0
clrl r1
ret
.data
.align 2
_log2: .long 0x40317217, 0xf7d1cf7a # .double 0.69314718055994531
_ln10: .long 0x41135d8d, 0xddaaa8ac # .double 2.3025850929940457
_sqrto2:.long 0x403504f3, 0x33f9de65 # .double 0.70710678118654753
_p0: .long 0xc154114d, 0xeb0ba468 # .double -3.31355617479
_p1: .long 0x40654226, 0x56bd0c4c # .double 0.89554061525
_q0: .long 0xc0d4114c, 0xfdc7df02 # .double -1.65677797691
_q1: .long 0x40800000, 0x00000000 # .double 1
small: .long 0xfffffffe, 0xfffffffe # .double -1.7014117331926443e+38
half: .long 0x40000000, 0x00000000 # .double 0.5
two: .long 0x41000000, 0x00000000 # .double 2
one: .long 0x40800000, 0x00000000 # .double 1