xref: /original-bsd/sys/tahoe/math/Kcmpd.s (revision 4cda19ca)
1/*-
2 * Copyright (c) 1985 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Computer Consoles Inc.
7 *
8 * %sccs.include.redist.c%
9 *
10 *	@(#)Kcmpd.s	7.1 (Berkeley) 12/06/90
11 */
12
13#include "../tahoe/SYS.h"
14
15/*
16 * cmpd(hi1, lo1, hi2, lo2)
17 *	register hi1, hi2;
18 *	register unsigned lo1, lo2;
19 *{
20 *	if(hi1 < 0) {
21 *		hi1 ^= 0x80000000;
22 *		if(lo1) {
23 *			lo1 = -lo1;
24 *			hi1 = ~hi1;
25 *		} else
26 *			hi1 = -hi1;
27 *	}
28 *	if(hi2 < 0) {
29 *		hi2 ^= 0x80000000;
30 *		if(lo2) {
31 *			lo2 = -lo2;
32 *			hi2 = ~hi2;
33 *		} else
34 *			hi2 = -hi2;
35 *	}
36 *	if(hi1 != hi2)
37 *		return(hi1>hi2 ? 1 : -1);
38 *	if(lo1 != lo2)
39 *		return(lo1>lo2 ? 1 : -1);
40 *	return(0);
41 *}
42 */
43	.text
44ENTRY(Kcmpd, 0)
45	movl	8(fp),r3
46	movl	12(fp),r4
47	movl	16(fp),r2
48	movl	4(fp),r5
49	jgeq	1f
50	xorl2	$0x80000000,r5
51	tstl	r3
52	jeql	2f
53	mnegl	r3,r3
54	mcoml	r5,r5
55	jbr	1f
562:
57	mnegl	r5,r5
581:
59	tstl	r4
60	jgeq	1f
61	xorl2	$0x80000000,r4
62	tstl	r2
63	jeql	2f
64	mnegl	r2,r2
65	mcoml	r4,r4
66	jbr	1f
672:
68	mnegl	r4,r4
691:
70	cmpl	r5,r4
71	jeql	1f
72	jleq	2f
73	movl	$1,r0
74	ret
752:
76	mnegl	$1,r0
77	ret
781:
79	cmpl	r3,r2
80	jeql	1f
81	jlequ	2f
82	movl	$1,r0
83	ret
842:
85	mnegl	$1,r0
86	ret
871:
88	clrl	r0
89	ret
90