Import 2.3.16pre1
[davej-history.git] / arch / sparc / math-emu / fcmped.c
blob5b634da28e8596cabaa4452ed1c664b00fcbd9d7
1 /* $Id: fcmped.c,v 1.8 1999/05/28 13:41:38 jj Exp $
2 * arch/sparc/math-emu/fcmped.c
4 * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz)
5 * Copyright (C) 1998 Peter Maydell (pmaydell@chiark.greenend.org.uk)
7 */
9 #include "sfp-util.h"
10 #include "soft-fp.h"
11 #include "double.h"
13 int FCMPED(void *rd, void *rs2, void *rs1)
15 FP_DECL_EX;
16 FP_DECL_D(A); FP_DECL_D(B);
17 long ret;
18 unsigned long fsr;
20 FP_UNPACK_RAW_DP(A, rs1);
21 FP_UNPACK_RAW_DP(B, rs2);
22 FP_CMP_D(ret, B, A, 3);
23 if (ret == 3)
24 FP_SET_EXCEPTION(FP_EX_INVALID);
25 if (!FP_INHIBIT_RESULTS) {
26 if (ret == -1) ret = 2;
27 fsr = *(long *)rd;
28 fsr &= ~0xc00;
29 fsr |= (ret << 10);
30 *(long *)rd = fsr;
32 FP_HANDLE_EXCEPTIONS;