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