Statistics
| Branch: | Revision:

root / fpu @ 10f5bff6

Name Size
softfloat-macros.h 24.9 kB
softfloat-specialize.h 38.3 kB
softfloat.c 260.3 kB

Latest revisions

# Date Author Comment
3c85c37f 01/08/2014 09:07 pm Peter Maydell

softfloat: Fix factor 2 error for scalbn on denormal inputs

If the input to float*_scalbn() is denormal then it represents
a number 0.[mantissabits] * 2^(1-exponentbias) (and the actual
exponent field is all zeroes). This means that when we convert
it to our unpacked encoding the unpacked exponent must be one...

2f18bbf9 01/08/2014 09:07 pm Tom Musta

softfloat: Add float32_to_uint64()

This patch adds the float32_to_uint64() routine, which converts a
32-bit floating point number to an unsigned 64 bit number.

This contribution can be licensed under either the softfloat-2a or -2b
license.

Signed-off-by: Tom Musta <>...

0a87a310 01/08/2014 09:07 pm Tom Musta

softfloat: Fix float64_to_uint64_round_to_zero

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....

5e7f654f 01/08/2014 09:07 pm Tom Musta

softfloat: Fix float64_to_uint32

The float64_to_uint32 has several flaws:

- for numbers between 2**32 and 2**64, the inexact exception flag
may get incorrectly set. In this case, only the invalid flag
should be set.
test pattern: 425F81378DC0CD1F / 0x1.f81378dc0cd1fp+38...
fd728f2f 01/08/2014 09:07 pm Tom Musta

softfloat: Fix float64_to_uint32_round_to_zero

The float64_to_uint32_round_to_zero routine is incorrect.

For example, the following test pattern:

425F81378DC0CD1F / 0x1.f81378dc0cd1fp+38

will erroneously set the inexact flag.

This patch re-implements the routine to use the float64_to_uint64_round_to_zero...

879d096b 01/08/2014 09:07 pm Peter Maydell

softfloat: Provide complete set of accessors for fp state

Tidy up the get/set accessors for the fp state to add missing ones
and make them all inline in softfloat.h rather than some inline and
some not.

Signed-off-by: Peter Maydell <>...

c4a1c5e7 01/08/2014 09:07 pm Peter Maydell

softfloat: Factor out RoundAndPackFloat16 and NormalizeFloat16Subnormal

In preparation for adding conversions between float16 and float64,
factor out code currently done inline in the float16<=>float32
conversion functions into functions RoundAndPackFloat16 and...

14c9a07e 01/08/2014 09:07 pm Peter Maydell

softfloat: Add float16 <=> float64 conversion functions

Add the conversion functions float16_to_float64() and
float64_to_float16(), which will be needed for the ARM
A64 instruction set.

Signed-off-by: Peter Maydell <>
Reviewed-by: Richard Henderson <>

dc355b76 01/08/2014 09:07 pm Peter Maydell

softfloat: Refactor code handling various rounding modes

Refactor the code in various functions which calculates rounding
increments given the current rounding mode, so that instead of a
set of nested if statements we have a simple switch statement.
This will give us a clean place to add the case for the new...

f9288a76 01/08/2014 09:07 pm Peter Maydell

softfloat: Add support for ties-away rounding

IEEE754-2008 specifies a new rounding mode:

"roundTiesToAway: the floating-point number nearest to the infinitely
precise result shall be delivered; if the two nearest floating-point
numbers bracketing an unrepresentable infinitely precise result are...

View revisions

Also available in: Atom