|
|
Power 6/32 Unix version 1.21
/* file: Kexpf.x
*/
.data
.comm _errno,4
.align 2
_p0: .long 0x45BD3D04, 0x7F734DBD # .double 1513.9067990543389
.align 2
_p1: .long 0x42A19DD4, 0x989F60DA # .double 20.202065651286927
.align 2
_p2: .long 0x3DBD2E42, 0xAB70BDA9 # .double .023093347753750233
.align 2
_q0: .long 0x468881B1, 0x7C3A6529 # .double 4368.2116627275583
.align 2
_q1: .long 0x44692F28, 0x7AE89541 # .double 233.18421142748162
.align 2
_q2: .long 0x40800000, 0x00000000 # .double 1
.align 2
_log2e: .long 0x40B8AA3B, 0x295C17F0 # .double 1.4426950408889634
.align 2
_sqrt2: .long 0x40B504F3, 0x33F9DE64 # .double 1.414213562373095
.align 2
_maxf: .long 0x471C4000, 0x00000000 # .double 10000
.align 2
_HUGE: .long 0x7FFFFFFE, 0xFFFFFFFC # .double 1.701411733192644e+38
.text
LL0: .align 1
.globl _Kexpf
.data
.align 2
L28: .long 0x40800000 # .float 1
.text
.data
.align 2
L32: .long 0x40000000, 0x00000000 # .double .5
.text
.set L23,0xC
.data
.text
_Kexpf:.word L23
subl3 $88,fp,sp
tstl 4(fp)
jneq L27
movl L28,r0
ret
L27: lnd _maxf
cmpd 4(fp)
jleq L29
clrl r0
ret
L29: cmpd2 4(fp),_maxf
jleq L30
movl $34,_errno
ldd _HUGE
cvdf
stf r0
ret
L30:
pushal 20(fp) # hfs
ldd _log2e
pushd
ldd 4(fp)
pushd
callf $24,_Kmuld
ldd r0
std 4(fp)
pushal 20(fp) # hfs
pushl 8(fp)
pushl 4(fp)
callf $16,_Kfloorf
movl r0,-88(fp) # (int)ent from Kfloorf
cvlf -88(fp)
clrl r1
stf r0
pushal 20(fp) # hfs
pushl r1
pushl r0
ldd 4(fp)
pushd
callf $24,_Ksubd # (arg - ent)
pushal 20(fp) # hfs
ldd L32
pushd
ldd r0
pushd
callf $24,_Ksubd
ldd r0
std -60(fp) # fract
pushal 20(fp) # hfs
pushd
pushd
callf $24,_Kmuld
ldd r0
std -84(fp) # xsq
pushal 20(fp) # hfs
pushd # xsq
ldd _p2
pushd
callf $24,_Kmuld
pushal 20(fp) # hfs
ldd _p1
pushd
ldd r0
pushd
callf $24,_Kaddd
pushal 20(fp) # hfs
ldd -84(fp)
pushd
ldd r0
pushd
callf $24,_Kmuld
pushal 20(fp) # hfs
ldd _p0
pushd
ldd r0
pushd
callf $24,_Kaddd
pushal 20(fp) # hfs
ldd -60(fp) # fract
pushd
ldd r0
pushd
callf $24,_Kmuld
ldd r0
std -68(fp) # temp1
pushal 20(fp) # hfs
ldd -84(fp) # xsq
pushd
ldd _q2
pushd
callf $24,_Kmuld
pushal 20(fp) # hfs
ldd _q1
pushd
ldd r0
pushd
callf $24,_Kaddd
pushal 20(fp) # hfs
ldd -84(fp)
pushd
ldd r0
pushd
callf $24,_Kmuld
pushal 20(fp) # hfs
ldd _q0
pushd
ldd r0
pushd
callf $24,_Kaddd
ldd r0
std -76(fp) # temp2
pushal 20(fp) # hfs for Kldexpf
pushl -88(fp) # ent
pushal 20(fp) # hfs tor temp2+temp1
ldd -68(fp) # temp1
pushd
ldd -76(fp) # temp2
pushd
callf $24,_Kaddd
pushal 20(fp) # hfs
ldd _sqrt2
pushd
ldd r0 # temp2+temp1
pushd
callf $24,_Kmuld
ldd r0
std r2 # sqrt2*(temp2+temp1)
pushal 20(fp) # hfs
ldd -68(fp)
pushd
ldd -76(fp)
pushd
callf $24,_Ksubd # temp2-temp1
pushal 20(fp) # hfs
ldd r0
pushd # temp2-temp1
ldd r2
pushd
callf $24,_Kdivd
ldd r0
pushd
callf $20,_Kldexpf
#pushal 20(fp) # hfs
#pushl $0
#pushl r0 # cvlf r0
#pushl $0
#pushl $0
#callf $24,_Kcvtld
#ldd r0
#cvdf
#stf r0
ret
/* file : Kfloorf.x
*/
.text
.globl _Kfloorf
.data
.align 2
L19: .long 0x40800000, 0x00000000 # .double 1
.text
.set L13,0x0
.data
.text
_Kfloorf:
.word L13
subl3 $60,fp,sp
tstl 4(fp) # if (d<0.0) {
jgeq L17
lnd 4(fp)
std 4(fp) # d = -d;
pushl 12(fp) # hfs
addl3 $4,fp,-(sp) # &d
pushl 8(fp)
pushl 4(fp)
callf $20,_Kmodf
clrl -60+4(fp)
movl r0,-60(fp) # fract = modf(d,&d);
tstl r0 # if (fract != 0.0)
jeql L18
pushl 12(fp) # hfs
ldd L19
pushd
ldd 4(fp)
pushd
callf $24,_Kaddd
ldd r0
std 4(fp) # d +=1;
L18: lnd 4(fp)
std 4(fp) # d = -d;
jbr L20
L17:
pushl 12(fp) # hfs
addl3 $4,fp,-(sp)
pushl 8(fp)
pushl 4(fp)
callf $20,_Kmodf
L20: ldd 4(fp)
cvdl r0 # for Kexpf call only!
ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.