xref: /csrg-svn/sys/tahoe/math/Kcmpd.s (revision 45761)
1*45761Sbostic/*-
2*45761Sbostic * Copyright (c) 1985 The Regents of the University of California.
3*45761Sbostic * All rights reserved.
4*45761Sbostic *
5*45761Sbostic * This code is derived from software contributed to Berkeley by
6*45761Sbostic * Computer Consoles Inc.
7*45761Sbostic *
8*45761Sbostic * %sccs.include.redist.c%
9*45761Sbostic *
10*45761Sbostic *	@(#)Kcmpd.s	7.1 (Berkeley) 12/06/90
11*45761Sbostic */
1224135Ssam
1325693Ssam#include "../tahoe/SYS.h"
1424135Ssam
1525664Ssam/*
1625664Ssam * cmpd(hi1, lo1, hi2, lo2)
1725664Ssam *	register hi1, hi2;
1825664Ssam *	register unsigned lo1, lo2;
1925664Ssam *{
2025664Ssam *	if(hi1 < 0) {
2125664Ssam *		hi1 ^= 0x80000000;
2225664Ssam *		if(lo1) {
2325664Ssam *			lo1 = -lo1;
2425664Ssam *			hi1 = ~hi1;
2525664Ssam *		} else
2625664Ssam *			hi1 = -hi1;
2725664Ssam *	}
2825664Ssam *	if(hi2 < 0) {
2925664Ssam *		hi2 ^= 0x80000000;
3025664Ssam *		if(lo2) {
3125664Ssam *			lo2 = -lo2;
3225664Ssam *			hi2 = ~hi2;
3325664Ssam *		} else
3425664Ssam *			hi2 = -hi2;
3525664Ssam *	}
3625664Ssam *	if(hi1 != hi2)
3725664Ssam *		return(hi1>hi2 ? 1 : -1);
3825664Ssam *	if(lo1 != lo2)
3925664Ssam *		return(lo1>lo2 ? 1 : -1);
4025664Ssam *	return(0);
4125664Ssam *}
4225664Ssam */
4325664Ssam	.text
4425664SsamENTRY(Kcmpd, 0)
4525664Ssam	movl	8(fp),r3
4625664Ssam	movl	12(fp),r4
4725664Ssam	movl	16(fp),r2
4825664Ssam	movl	4(fp),r5
4925664Ssam	jgeq	1f
5025664Ssam	xorl2	$0x80000000,r5
5125664Ssam	tstl	r3
5225664Ssam	jeql	2f
5325664Ssam	mnegl	r3,r3
5425664Ssam	mcoml	r5,r5
5525664Ssam	jbr	1f
5625664Ssam2:
5725664Ssam	mnegl	r5,r5
5825664Ssam1:
5925664Ssam	tstl	r4
6025664Ssam	jgeq	1f
6125664Ssam	xorl2	$0x80000000,r4
6225664Ssam	tstl	r2
6325664Ssam	jeql	2f
6425664Ssam	mnegl	r2,r2
6525664Ssam	mcoml	r4,r4
6625664Ssam	jbr	1f
6725664Ssam2:
6825664Ssam	mnegl	r4,r4
6925664Ssam1:
7025664Ssam	cmpl	r5,r4
7125664Ssam	jeql	1f
7225664Ssam	jleq	2f
7325664Ssam	movl	$1,r0
7425664Ssam	ret
7525664Ssam2:
7625664Ssam	mnegl	$1,r0
7725664Ssam	ret
7825664Ssam1:
7925664Ssam	cmpl	r3,r2
8025664Ssam	jeql	1f
8125664Ssam	jlequ	2f
8225664Ssam	movl	$1,r0
8325664Ssam	ret
8425664Ssam2:
8525664Ssam	mnegl	$1,r0
8625664Ssam	ret
8725664Ssam1:
8825664Ssam	clrl	r0
8925664Ssam	ret
90