Patch "MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of both infinite inputs" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of both infinite inputs
to the 4.9-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-maxa-mina-.-d-s-fix-cases-of-both-infinite-inputs.patch
and it can be found in the queue-4.9 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
3444c4eb534c20e44f0d6670b34263efaf8b531fMon Sep 17 00:00:00 2001
From: Aleksandar Markovic <[email protected]>
Date: Thu, 27 Jul 2017 18:08:52 +0200
Subject: MIPS: math-emu: <MAXA|MINA>.<D|S>: Fix cases of both infinite inputs
From: Aleksandar Markovic <[email protected]>
commit 3444c4eb534c20e44f0d6670b34263efaf8b531f upstream.
Fix the value returned by <MAXA|MINA>.<D|S> fd,fs,ft, if both inputs are infinite. The previous implementation returned always the value contained in ft in such cases. The correct behavior is specified in Mips instruction set manual and is as follows:
fs ft MAXA MINA
---------------------------------
inf inf inf inf
inf -inf inf -inf
-inf inf inf -inf-inf -inf -inf -inf
A relevant example:
MAXA.S fd,fs,ft:
If fs contains +inf, and ft contains -inf, fd is going to contain +inf (without this patch, it used to contain -inf).
Patchwork: https://patchwork.linux-mips.org/patch/16884/
--- arch/mips/math-emu/dp_fmax.c | 4 +++- arch/mips/math-emu/dp_fmin.c | 4 +++- arch/mips/math-emu/sp_fmax.c | 4 +++- arch/mips/math-emu/sp_fmin.c | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-)
arch/mips/math-emu/dp_fmax.c +3 -1
@@ -202,6 +202,9 @@ union ieee754dp ieee754dp_fmaxa(union ie/* * Infinity and zero handling */ +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ): +return ieee754dp_inf (xs & ys); +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_DNORM ):
@@ -209,7 +212,6 @@ union ieee754dp ieee754dp_fmaxa(union iecase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):return x; -case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_INF ):
arch/mips/math-emu/dp_fmin.c +3 -1
@@ -202,6 +202,9 @@ union ieee754dp ieee754dp_fmina(union ie/* * Infinity and zero handling */ +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ): +return ieee754dp_inf (xs | ys); +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_DNORM ):
@@ -209,7 +212,6 @@ union ieee754dp ieee754dp_fmina(union iecase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):return x; -case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_INF ):
arch/mips/math-emu/sp_fmax.c +3 -1
@@ -202,6 +202,9 @@ union ieee754sp ieee754sp_fmaxa(union ie/* * Infinity and zero handling */ +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ): +return ieee754sp_inf (xs & ys); +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_DNORM ):
@@ -209,7 +212,6 @@ union ieee754sp ieee754sp_fmaxa(union iecase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):return x; -case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_INF ):
arch/mips/math-emu/sp_fmin.c +3 -1
@@ -202,6 +202,9 @@ union ieee754sp ieee754sp_fmina(union ie/* * Infinity and zero handling */ +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ): +return ieee754sp_inf (xs | ys); +case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_ZERO ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_NORM ):case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_DNORM ):
@@ -209,7 +212,6 @@ union ieee754sp ieee754sp_fmina(union iecase CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_ZERO ):return x; -case CLPAIR (IEEE754_CLASS_INF ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_NORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_DNORM ,IEEE754_CLASS_INF ):case CLPAIR (IEEE754_CLASS_ZERO ,IEEE754_CLASS_INF ):
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/mips-math-emu-maddf-msubf-.-d-s-fix-nan-propagation.patch queue-4.9/mips-math-emu-max-maxa-min-mina-.-d-s-fix-cases-of-both-inputs-zero.patch queue-4.9/mips-math-emu-handle-zero-accumulator-case-in-maddf-and-msubf-separately.patch queue-4.9/mips-math-emu-max-min-.-d-s-fix-cases-of-both-inputs-negative.patch queue-4.9/mips-math-emu-max-maxa-min-mina-.-d-s-fix-quiet-nan-propagation.patch queue-4.9/mips-math-emu-maddf-msubf-.d-fix-accuracy-64-bit-case.patch queue-4.9/mips-math-emu-maddf-msubf-.s-fix-accuracy-32-bit-case.patch queue-4.9/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-input-values-with-opposite-signs.patch queue-4.9/mips-math-emu-maxa-mina-.-d-s-fix-cases-of-both-infinite-inputs.patch queue-4.9/mips-math-emu-mina.-d-s-fix-some-cases-of-infinity-and-zero-inputs.patch queue-4.9/mips-math-emu-maddf-msubf-.-d-s-fix-some-cases-of-zero-inputs.patch queue-4.9/mips-math-emu-maddf-msubf-.-d-s-clean-up-maddf_flags-enumeration.patch queue-4.9/mips-math-emu-maddf-msubf-.-d-s-fix-some-cases-of-infinite-inputs.patch