File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / sys / tahoe / Kexpf.x
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:30:04 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v121, HEAD
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
	

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.