Module Name: src Committed By: rin Date: Tue Sep 6 23:07:53 UTC 2022
Modified Files: src/sys/arch/powerpc/fpu: fpu_emu.h Log Message: fpu_sub(): Do not invert sign bit of NaN. Taken from FreeBSD: https://cgit.freebsd.org/src/commit/lib/libc/sparc64/fpu?h=releng/12.3&id=8ff9d52cd08cbf31efde4052d3593a5680eaa2a5 To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/powerpc/fpu/fpu_emu.h 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.h diff -u src/sys/arch/powerpc/fpu/fpu_emu.h:1.10 src/sys/arch/powerpc/fpu/fpu_emu.h:1.11 --- src/sys/arch/powerpc/fpu/fpu_emu.h:1.10 Mon Sep 5 00:27:16 2022 +++ src/sys/arch/powerpc/fpu/fpu_emu.h Tue Sep 6 23:07:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: fpu_emu.h,v 1.10 2022/09/05 00:27:16 rin Exp $ */ +/* $NetBSD: fpu_emu.h,v 1.11 2022/09/06 23:07:53 rin Exp $ */ /* * Copyright (c) 1992, 1993 @@ -163,7 +163,8 @@ struct fpemu { * Each returns a pointer to the result and/or sets exceptions. */ struct fpn *fpu_add(struct fpemu *); -#define fpu_sub(fe) ((fe)->fe_f2.fp_sign ^= 1, fpu_add(fe)) +#define fpu_sub(fe) \ + ((ISNAN(&(fe)->fe_f2) ? 0 : ((fe)->fe_f2.fp_sign ^= 1)), fpu_add(fe)) struct fpn *fpu_mul(struct fpemu *); struct fpn *fpu_div(struct fpemu *); struct fpn *fpu_sqrt(struct fpemu *);