These 4 patches fix the ARM Neon vrecpe and vrsqrte instructions by
matching the algorithms descibed in the ARM ARM.
With these patches, qemu passes my ARM/Neon tests.
Compared to v3, I have split patch #1 into 2 pieces (#1 and #2 here),
and fixed comments from Peter.
Patch #1 modifies softfloat by exporting floatXX_default_nan, i.e. moving all
these definitions from softfloat-specialize.h to softfloat.h
Patch #2 introduces a new utility function float32_set_sign() to help
return the right special values (-0, -infinity), as well as new
constants: float32_infinity, float64_half, float64_256 and
float64_512.
Patch #3 uses these newly exported values and uses the VRECPE
algorithm described in the ARM ARM.
Patch #4 uses these newly exported values and uses the VRSQRTE
algorithm described in the ARM ARM.
Thanks to Peter for his careful reviews.
Christophe Lyon (4):
softfloat: move all default NaN definitions to softfloat.h.
softfloat: add float32_set_sign(), float32_infinity, float64_half,
float64_256 and float64_512.
target-arm: fix support for VRECPE.
target-arm: fix support for VRSQRTE.
fpu/softfloat-specialize.h | 68 ---------------
fpu/softfloat.h | 78 +++++++++++++++++
target-arm/helper.c | 204 +++++++++++++++++++++++++++++++++++++++-----
3 files changed, 260 insertions(+), 90 deletions(-)
--
1.7.2.3