[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 0/2] target-mips: Initiate IEEE 754-2008 support for
[Qemu-devel] [PATCH 0/2] target-mips: Initiate IEEE 754-2008 support for Mips
Thu, 7 Apr 2016 18:00:49 +0200
From: Aleksandar Markovic <address@hidden>
V2 - Relevant CPU initialization code changes revisited for all platforms.
- In connection with <CEIL|CVT|FLOOR|ROUND|TRUNC>.<L|W>.<S|D> and
<ABS|NEG>.<S|D> Mips instructions handling, decision on whether
pre-nan2008 or nan2008 handling will apply moved from run-time to
- For Mips only, in nan2008 cases only, default NaN values fixed.
- For Mips only, in nan2008 cases only, order in pickNaNMulAdd() fixed.
- Code cleanup issues:
a. Constants <floatx80|float128>_default_nan_<low|high> removed;
b. Suffix <l|w>_<s|d> replaced with _<l|w>_<s|d> for some Mips helpers;
c. In vicinity of changes, fixed not-beautiful code formatting.
- Commit messages improved.
V1 - Initial version
Mips platform represents the most complex case among QEMU-supported
platforms in reference to certain aspects of floating-point arithmetics.
This is mostly a consequence of the fact that Mips platform, for many
reasons, evolved considerably over time related to floating-point
arithmetics standards (significantly more than other platforms).
It has been difficult for emulators like QEMU to support such variety
This patch series provides number of IEEE 754-2008-related features to
Mips platform. It addresses the most sensitive changes that require
modification of SoftFloat library, that is used by most other platforms.
In order to make develpoment, testing, and integration easier, the patch
is split into two distinct parts:
1. Patch 1 that does not change any calculation or behavior for any
platform (and, for that matter, even for Mips platform). Its sole
purpose is to address platform independant issues in a non-invasive
manner, and to make Patch 2 possible.
2. Patch 2 that sets approprite Mips architecures to use provisions from
Patch 1, and additionally implements some of IEEE 754-2008-related
features for Mips, but, at the same time, dealing with files located
in directory target-mips only.
A limitation of this patch series is that it does not cover all IEEE 754-2008
Mips issues (for example, handling FCR31's FS bit). However, hopefully all
remaining such issues will touch only Mips-specific source code files, and thus
will be much easier to integrate in QEMU, in overall.
This patch series is based on the original set of patches proposed by Maciej
Aleksandar Markovic (2):
softfloat: Implement run-time-configurable meaning of signaling NaN bit
target-mips: Activate IEEE 754-2008 support for Mips
fpu/softfloat-specialize.h | 587 +++++++++++++++++++++--------------------
fpu/softfloat.c | 180 ++++++-------
include/fpu/softfloat.h | 49 ++--
target-alpha/cpu.c | 2 +
target-arm/helper-a64.c | 14 +-
target-arm/helper.c | 40 +--
target-m68k/helper.c | 6 +-
target-microblaze/cpu.c | 2 +
target-microblaze/op_helper.c | 6 +-
target-mips/helper.h | 22 +-
target-mips/msa_helper.c | 96 ++++---
target-mips/op_helper.c | 350 ++++++++++++++++++++++--
target-mips/translate.c | 157 +++++++++--
target-mips/translate_init.c | 20 +-
target-ppc/fpu_helper.c | 120 ++++-----
target-ppc/translate_init.c | 2 +
target-s390x/cpu.c | 1 +
target-s390x/fpu_helper.c | 28 +-
target-s390x/helper.h | 6 +-
target-s390x/translate.c | 6 +-
target-sh4/cpu.c | 1 +
target-sparc/cpu.c | 1 +
target-tricore/helper.c | 1 +
target-unicore32/cpu.c | 2 +
target-xtensa/cpu.c | 3 +
25 files changed, 1078 insertions(+), 624 deletions(-)
- [Qemu-devel] [PATCH 0/2] target-mips: Initiate IEEE 754-2008 support for Mips,
Aleksandar Markovic <=