Patch "MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix some cases of zero inputs" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix some cases of zero inputs
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mips-math-emu-maddf-msubf-.-d-s-fix-some-cases-of-zero-inputs.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
7cf64ce4d37f1b4f44365fcf77f565d523819dcdMon Sep 17 00:00:00 2001
From: Aleksandar Markovic <[email protected]>
Date: Thu, 27 Jul 2017 18:08:56 +0200
Subject: MIPS: math-emu: <MADDF|MSUBF>.<D|S>: Fix some cases of zero inputs
From: Aleksandar Markovic <[email protected]>
commit 7cf64ce4d37f1b4f44365fcf77f565d523819dcd upstream.
Fix the cases of <MADDF|MSUBF>.<D|S> when any of two multiplicands is +0 or -0, and the third input is also +0 or -0. Depending on the signs of inputs, certain special cases must be handled.
A relevant example:
MADDF.S fd,fs,ft:
If fs contains +0.0, ft contains -0.0, and fd contains 0.0, fd is going to contain +0.0 (without this patch, it used to contain -0.0).
Patchwork: https://patchwork.linux-mips.org/patch/16888/
--- arch/mips/math-emu/dp_maddf.c | 18 +++++++++++++++++- arch/mips/math-emu/sp_maddf.c | 18 +++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-)
arch/mips/math-emu/dp_maddf.c +17 -1
@@ -113,7 +113,23 @@ static union ieee754dp _dp_maddf(union icase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):if (zc ==IEEE754_CLASS_INF )return ieee754dp_inf (zs); -/* Multiplication is 0 so just return z */ +if (zc ==IEEE754_CLASS_ZERO ) { +/* Handle cases +0 + (-0) and similar ones. */ +if ((!(flags & maddf_negate_product) + && (zs == (xs ^ ys))) || + ((flags & maddf_negate_product) + && (zs != (xs ^ ys)))) +/* +* Cases of addition of zeros of equal signs +* or subtraction of zeroes of opposite signs. +* The sign of the resulting zero is in any +* such case determined only by the sign of z. +*/ +return z; + +return ieee754dp_zero (ieee754_csr.rm ==FPU_CSR_RD ); + } +/* x*y is here 0, and z is not 0, so just return z */ return z;case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_DNORM ):
arch/mips/math-emu/sp_maddf.c +17 -1
@@ -114,7 +114,23 @@ static union ieee754sp _sp_maddf(union icase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):if (zc ==IEEE754_CLASS_INF )return ieee754sp_inf (zs); -/* Multiplication is 0 so just return z */ +if (zc ==IEEE754_CLASS_ZERO ) { +/* Handle cases +0 + (-0) and similar ones. */ +if ((!(flags & maddf_negate_product) + && (zs == (xs ^ ys))) || + ((flags & maddf_negate_product) + && (zs != (xs ^ ys)))) +/* +* Cases of addition of zeros of equal signs +* or subtraction of zeroes of opposite signs. +* The sign of the resulting zero is in any +* such case determined only by the sign of z. +*/ +return z; + +return ieee754sp_zero (ieee754_csr.rm ==FPU_CSR_RD ); + } +/* x*y is here 0, and z is not 0, so just return z */ return z;case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_DNORM ):
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/mips-math-emu-maddf-msubf-.-d-s-fix-nan-propagation.patch queue-4.13/mips-math-emu-max-maxa-min-mina-.-d-s-fix-cases-of-both-inputs-zero.patch queue-4.13/mips-math-emu-max-min-.-d-s-fix-cases-of-both-inputs-negative.patch queue-4.13/mips-math-emu-max-maxa-min-mina-.-d-s-fix-quiet-nan-propagation.patch queue-4.13/mips-math-emu-maddf-msubf-.d-fix-accuracy-64-bit-case.patch queue-4.13/mips-math-emu-maddf-msubf-.s-fix-accuracy-32-bit-case.patch queue-4.13/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-input-values-with-opposite-signs.patch queue-4.13/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-both-infinite-inputs.patch queue-4.13/mips-math-emu-mina.-d-s-fix-some-cases-of-infinity-and-zero-inputs.patch queue-4.13/mips-math-emu-maddf-msubf-.-d-s-fix-some-cases-of-zero-inputs.patch queue-4.13/mips-math-emu-maddf-msubf-.-d-s-clean-up-maddf_flags-enumeration.patch queue-4.13/mips-math-emu-maddf-msubf-.-d-s-fix-some-cases-of-infinite-inputs.patch