xref: /original-bsd/sys/tahoe/math/Kcmpd.s (revision 0fc6f013)
1/*	Kcmpd.s	1.3	86/01/05	*/
2
3#include "../tahoe/SYS.h"
4
5/*
6 * cmpd(hi1, lo1, hi2, lo2)
7 *	register hi1, hi2;
8 *	register unsigned lo1, lo2;
9 *{
10 *	if(hi1 < 0) {
11 *		hi1 ^= 0x80000000;
12 *		if(lo1) {
13 *			lo1 = -lo1;
14 *			hi1 = ~hi1;
15 *		} else
16 *			hi1 = -hi1;
17 *	}
18 *	if(hi2 < 0) {
19 *		hi2 ^= 0x80000000;
20 *		if(lo2) {
21 *			lo2 = -lo2;
22 *			hi2 = ~hi2;
23 *		} else
24 *			hi2 = -hi2;
25 *	}
26 *	if(hi1 != hi2)
27 *		return(hi1>hi2 ? 1 : -1);
28 *	if(lo1 != lo2)
29 *		return(lo1>lo2 ? 1 : -1);
30 *	return(0);
31 *}
32 */
33	.text
34ENTRY(Kcmpd, 0)
35	movl	8(fp),r3
36	movl	12(fp),r4
37	movl	16(fp),r2
38	movl	4(fp),r5
39	jgeq	1f
40	xorl2	$0x80000000,r5
41	tstl	r3
42	jeql	2f
43	mnegl	r3,r3
44	mcoml	r5,r5
45	jbr	1f
462:
47	mnegl	r5,r5
481:
49	tstl	r4
50	jgeq	1f
51	xorl2	$0x80000000,r4
52	tstl	r2
53	jeql	2f
54	mnegl	r2,r2
55	mcoml	r4,r4
56	jbr	1f
572:
58	mnegl	r4,r4
591:
60	cmpl	r5,r4
61	jeql	1f
62	jleq	2f
63	movl	$1,r0
64	ret
652:
66	mnegl	$1,r0
67	ret
681:
69	cmpl	r3,r2
70	jeql	1f
71	jlequ	2f
72	movl	$1,r0
73	ret
742:
75	mnegl	$1,r0
76	ret
771:
78	clrl	r0
79	ret
80