On 18 December 2013 20:19, Tom Musta <tommu...@gmail.com> wrote: > The float64_to_uint64_round_to_zero routine is incorrect. > > For example, the following test pattern: > > 46697351FF4AEC29 / 0x1.97351ff4aec29p+103 > > currently produces 8000000000000000 instead of FFFFFFFFFFFFFFFF. > > This patch re-implements the routine to temporarily force the > rounding mode and use the float64_to_uint64 routine. > > This contribution can be licensed under either the softfloat-2a or -2b > license. > > Signed-off-by: Tom Musta <tommu...@gmail.com>
Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> The other approach would be to make all the conversion functions explicitly take the rounding mode parameter (and in some ways that might be closer to the set of functionality IEE754-2008 describes), but this is a simple change and saving and restoring rounding mode is very cheap. thanks -- PMM