xref: /openbsd/sys/arch/hppa/spmath/mpyaccs.c (revision d415bd75)
1 /*	$OpenBSD: mpyaccs.c,v 1.6 2003/04/10 17:27:58 mickey Exp $	*/
2 /*
3   (c) Copyright 1986 HEWLETT-PACKARD COMPANY
4   To anyone who acknowledges that this file is provided "AS IS"
5   without any express or implied warranty:
6       permission to use, copy, modify, and distribute this file
7   for any purpose is hereby granted without fee, provided that
8   the above copyright notice and this notice appears in all
9   copies, and that the name of Hewlett-Packard Company not be
10   used in advertising or publicity pertaining to distribution
11   of the software without specific, written prior permission.
12   Hewlett-Packard Company makes no representations about the
13   suitability of this software for any purpose.
14 */
15 /* @(#)mpyaccs.c: Revision: 1.6.88.1 Date: 93/12/07 15:06:39 */
16 
17 #include "md.h"
18 
19 void
20 mpyaccs(opnd1,opnd2,result)
21 	int opnd1, opnd2;
22 	struct mdsfu_register *result;
23 {
24 	struct mdsfu_register temp;
25 	int carry, sign;
26 
27 	s_xmpy(&opnd1,&opnd2,&temp);
28 
29 	/* get result of low word add, and check for carry out */
30 	if ((result_lo += (unsigned)temp.rslt_lo) < (unsigned)temp.rslt_lo)
31 		carry = 1;
32 	else
33 		carry = 0;
34 
35 	/* get result of high word add, and determine overflow status */
36 	sign = result_hi ^ temp.rslt_hi;
37 	result_hi += temp.rslt_hi + carry;
38 	if (sign >= 0 && (temp.rslt_hi ^ result_hi) < 0)
39 		overflow = TRUE;
40 }
41