Patch "MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix quiet NaN propagation" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix quiet NaN propagation
to the 4.4-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-max-maxa-min-mina-.-d-s-fix-quiet-nan-propagation.patch
and it can be found in the queue-4.4 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
e78bf0dc4789bdea1453595ae89e8db65918e22eMon Sep 17 00:00:00 2001
From: Aleksandar Markovic <[email protected]>
Date: Thu, 27 Jul 2017 18:08:48 +0200
Subject: MIPS: math-emu: <MAX|MAXA|MIN|MINA>.<D|S>: Fix quiet NaN propagation
From: Aleksandar Markovic <[email protected]>
commit e78bf0dc4789bdea1453595ae89e8db65918e22e upstream.
Fix the value returned by <MAX|MAXA|MIN|MINA>.<D|S> fd,fs,ft, if both inputs are quiet NaNs. The <MAX|MAXA|MIN|MINA>.<D|S> specifications state that the returned value in such cases should be the quiet NaN contained in register fs.
A relevant example:
MAX.S fd,fs,ft:
If fs contains qNaN1, and ft contains qNaN2, fd is going to contain qNaN1 (without this patch, it used to contain qNaN2).
Patchwork: https://patchwork.linux-mips.org/patch/16880/
--- arch/mips/math-emu/dp_fmax.c | 32 ++++++++++++++++++++++++++++---- arch/mips/math-emu/dp_fmin.c | 32 ++++++++++++++++++++++++++++---- arch/mips/math-emu/sp_fmax.c | 32 ++++++++++++++++++++++++++++---- arch/mips/math-emu/sp_fmin.c | 32 ++++++++++++++++++++++++++++---- 4 files changed, 112 insertions(+), 16 deletions(-)
arch/mips/math-emu/dp_fmax.c +28 -4
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmax(union ieecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754dp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
@@ -147,14 +159,26 @@ union ieee754dp ieee754dp_fmaxa(union iecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754dp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
arch/mips/math-emu/dp_fmin.c +28 -4
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmin(union ieecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754dp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
@@ -147,14 +159,26 @@ union ieee754dp ieee754dp_fmina(union iecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754dp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
arch/mips/math-emu/sp_fmax.c +28 -4
@@ -47,14 +47,26 @@ union ieee754sp ieee754sp_fmax(union ieecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754sp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
@@ -147,14 +159,26 @@ union ieee754sp ieee754sp_fmaxa(union iecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754sp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
arch/mips/math-emu/sp_fmin.c +28 -4
@@ -47,14 +47,26 @@ union ieee754sp ieee754sp_fmin(union ieecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754sp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
@@ -147,14 +159,26 @@ union ieee754sp ieee754sp_fmina(union iecase CLPAIR (IEEE754_CLASS_SNAN ,IEEE754_CLASS_INF ):return ieee754sp_nanxcpt (x); -/* numbers are preferred to NaNs */ +/* +* Quiet NaN handling +*/ + +/* +* The case of both inputs quiet NaNs +*/ +case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ): +return x; + +/* +* The cases of exactly one input quiet NaN (numbers +* are here preferred as returned values to NaNs) +*/ case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_QNAN ):return x; -case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_QNAN ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_QNAN ,IEEE754_CLASS_DNORM ):
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/mips-math-emu-max-maxa-min-mina-.-d-s-fix-cases-of-both-inputs-zero.patch queue-4.4/mips-math-emu-max-min-.-d-s-fix-cases-of-both-inputs-negative.patch queue-4.4/mips-math-emu-max-maxa-min-mina-.-d-s-fix-quiet-nan-propagation.patch queue-4.4/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-input-values-with-opposite-signs.patch queue-4.4/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-both-infinite-inputs.patch queue-4.4/mips-math-emu-mina.-d-s-fix-some-cases-of-infinity-and-zero-inputs.patch