Module Name: src
Committed By: rin
Date: Thu Sep 15 14:25:28 UTC 2022
Modified Files:
src/sys/arch/powerpc/fpu: fpu_emu.c
Log Message:
fnm{add,sub}{,s}: Do not negate NaN.
To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/powerpc/fpu/fpu_emu.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/powerpc/fpu/fpu_emu.c
diff -u src/sys/arch/powerpc/fpu/fpu_emu.c:1.57 src/sys/arch/powerpc/fpu/fpu_emu.c:1.58
--- src/sys/arch/powerpc/fpu/fpu_emu.c:1.57 Thu Sep 15 14:24:00 2022
+++ src/sys/arch/powerpc/fpu/fpu_emu.c Thu Sep 15 14:25:28 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: fpu_emu.c,v 1.57 2022/09/15 14:24:00 rin Exp $ */
+/* $NetBSD: fpu_emu.c,v 1.58 2022/09/15 14:25:28 rin Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@@ -76,7 +76,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.57 2022/09/15 14:24:00 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fpu_emu.c,v 1.58 2022/09/15 14:25:28 rin Exp $");
#ifdef _KERNEL_OPT
#include "opt_ddb.h"
@@ -738,7 +738,8 @@ fpu_execute(struct trapframe *tf, struct
fpu_explode(fe, &fe->fe_f2, type, FR(rb));
fp = fpu_sub(fe);
/* Negate */
- fp->fp_sign ^= 1;
+ if (!ISNAN(fp))
+ fp->fp_sign ^= 1;
break;
case OPC59_FNMADDS:
FPU_EMU_EVCNT_INCR(fnmadd);
@@ -750,7 +751,8 @@ fpu_execute(struct trapframe *tf, struct
fpu_explode(fe, &fe->fe_f2, type, FR(rb));
fp = fpu_add(fe);
/* Negate */
- fp->fp_sign ^= 1;
+ if (!ISNAN(fp))
+ fp->fp_sign ^= 1;
break;
default:
return (NOTFPU);