MIPS: math-emu: Unify ieee754sp_m{add,sub}f
The code for emulating MIPSr6 madd.s & msub.s instructions has previously been implemented as 2 different functions, namely ieee754sp_maddf & ieee754sp_msubf. The difference in behaviour of these 2 instructions is merely the sign of the product, so we can easily share the code implementing them. Do this for the single precision variant, removing the original ieee754sp_msubf in favor of reusing the code from ieee754sp_maddf. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/13154/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
このコミットが含まれているのは:
@@ -14,8 +14,12 @@
|
||||
|
||||
#include "ieee754sp.h"
|
||||
|
||||
union ieee754sp ieee754sp_maddf(union ieee754sp z, union ieee754sp x,
|
||||
union ieee754sp y)
|
||||
enum maddf_flags {
|
||||
maddf_negate_product = 1 << 0,
|
||||
};
|
||||
|
||||
static union ieee754sp _sp_maddf(union ieee754sp z, union ieee754sp x,
|
||||
union ieee754sp y, enum maddf_flags flags)
|
||||
{
|
||||
int re;
|
||||
int rs;
|
||||
@@ -154,6 +158,8 @@ union ieee754sp ieee754sp_maddf(union ieee754sp z, union ieee754sp x,
|
||||
|
||||
re = xe + ye;
|
||||
rs = xs ^ ys;
|
||||
if (flags & maddf_negate_product)
|
||||
rs ^= 1;
|
||||
|
||||
/* shunt to top of word */
|
||||
xm <<= 32 - (SP_FBITS + 1);
|
||||
@@ -253,3 +259,15 @@ union ieee754sp ieee754sp_maddf(union ieee754sp z, union ieee754sp x,
|
||||
}
|
||||
return ieee754sp_format(zs, ze, zm);
|
||||
}
|
||||
|
||||
union ieee754sp ieee754sp_maddf(union ieee754sp z, union ieee754sp x,
|
||||
union ieee754sp y)
|
||||
{
|
||||
return _sp_maddf(z, x, y, 0);
|
||||
}
|
||||
|
||||
union ieee754sp ieee754sp_msubf(union ieee754sp z, union ieee754sp x,
|
||||
union ieee754sp y)
|
||||
{
|
||||
return _sp_maddf(z, x, y, maddf_negate_product);
|
||||
}
|
||||
|
新しいイシューから参照
ユーザーをブロックする