softfloat: Make the int-to-float functions take exact-width types

Currently the int-to-float functions take types which are specified
as "at least X bits wide", rather than "exactly X bits wide". This is
confusing and unhelpful since it means that the callers have to include
an explicit cast to [u]intXX_t to ensure the correct behaviour. Fix
them all to take the exactly-X-bits-wide types instead.

Note that this doesn't change behaviour at all since at the moment
we happen to define the 'int32' and 'uint32' types as exactly 32 bits
wide, and the 'int64' and 'uint64' types as exactly 64 bits wide.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
Peter Maydell 2014-01-07 17:17:49 +00:00
parent 8afbdabac2
commit c4850f9e1b
2 changed files with 26 additions and 26 deletions

View File

@ -1121,7 +1121,7 @@ static float128
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float32 int32_to_float32( int32 a STATUS_PARAM ) float32 int32_to_float32(int32_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
@ -1138,7 +1138,7 @@ float32 int32_to_float32( int32 a STATUS_PARAM )
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float64 int32_to_float64( int32 a STATUS_PARAM ) float64 int32_to_float64(int32_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint32 absA; uint32 absA;
@ -1161,7 +1161,7 @@ float64 int32_to_float64( int32 a STATUS_PARAM )
| Arithmetic. | Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
floatx80 int32_to_floatx80( int32 a STATUS_PARAM ) floatx80 int32_to_floatx80(int32_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint32 absA; uint32 absA;
@ -1183,7 +1183,7 @@ floatx80 int32_to_floatx80( int32 a STATUS_PARAM )
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float128 int32_to_float128( int32 a STATUS_PARAM ) float128 int32_to_float128(int32_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint32 absA; uint32 absA;
@ -1205,7 +1205,7 @@ float128 int32_to_float128( int32 a STATUS_PARAM )
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float32 int64_to_float32( int64 a STATUS_PARAM ) float32 int64_to_float32(int64_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint64 absA; uint64 absA;
@ -1231,7 +1231,7 @@ float32 int64_to_float32( int64 a STATUS_PARAM )
} }
float32 uint64_to_float32( uint64 a STATUS_PARAM ) float32 uint64_to_float32(uint64_t a STATUS_PARAM)
{ {
int8 shiftCount; int8 shiftCount;
@ -1258,7 +1258,7 @@ float32 uint64_to_float32( uint64 a STATUS_PARAM )
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float64 int64_to_float64( int64 a STATUS_PARAM ) float64 int64_to_float64(int64_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
@ -1271,7 +1271,7 @@ float64 int64_to_float64( int64 a STATUS_PARAM )
} }
float64 uint64_to_float64(uint64 a STATUS_PARAM) float64 uint64_to_float64(uint64_t a STATUS_PARAM)
{ {
int exp = 0x43C; int exp = 0x43C;
@ -1292,7 +1292,7 @@ float64 uint64_to_float64(uint64 a STATUS_PARAM)
| Arithmetic. | Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
floatx80 int64_to_floatx80( int64 a STATUS_PARAM ) floatx80 int64_to_floatx80(int64_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint64 absA; uint64 absA;
@ -1312,7 +1312,7 @@ floatx80 int64_to_floatx80( int64 a STATUS_PARAM )
| according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic. | according to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float128 int64_to_float128( int64 a STATUS_PARAM ) float128 int64_to_float128(int64_t a STATUS_PARAM)
{ {
flag zSign; flag zSign;
uint64 absA; uint64 absA;
@ -1339,7 +1339,7 @@ float128 int64_to_float128( int64 a STATUS_PARAM )
} }
float128 uint64_to_float128(uint64 a STATUS_PARAM) float128 uint64_to_float128(uint64_t a STATUS_PARAM)
{ {
if (a == 0) { if (a == 0) {
return float128_zero; return float128_zero;
@ -6445,12 +6445,12 @@ int float128_unordered_quiet( float128 a, float128 b STATUS_PARAM )
} }
/* misc functions */ /* misc functions */
float32 uint32_to_float32( uint32 a STATUS_PARAM ) float32 uint32_to_float32(uint32_t a STATUS_PARAM)
{ {
return int64_to_float32(a STATUS_VAR); return int64_to_float32(a STATUS_VAR);
} }
float64 uint32_to_float64( uint32 a STATUS_PARAM ) float64 uint32_to_float64(uint32_t a STATUS_PARAM)
{ {
return int64_to_float64(a STATUS_VAR); return int64_to_float64(a STATUS_VAR);
} }

View File

@ -225,19 +225,19 @@ enum {
/*---------------------------------------------------------------------------- /*----------------------------------------------------------------------------
| Software IEC/IEEE integer-to-floating-point conversion routines. | Software IEC/IEEE integer-to-floating-point conversion routines.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
float32 int32_to_float32( int32 STATUS_PARAM ); float32 int32_to_float32(int32_t STATUS_PARAM);
float64 int32_to_float64( int32 STATUS_PARAM ); float64 int32_to_float64(int32_t STATUS_PARAM);
float32 uint32_to_float32( uint32 STATUS_PARAM ); float32 uint32_to_float32(uint32_t STATUS_PARAM);
float64 uint32_to_float64( uint32 STATUS_PARAM ); float64 uint32_to_float64(uint32_t STATUS_PARAM);
floatx80 int32_to_floatx80( int32 STATUS_PARAM ); floatx80 int32_to_floatx80(int32_t STATUS_PARAM);
float128 int32_to_float128( int32 STATUS_PARAM ); float128 int32_to_float128(int32_t STATUS_PARAM);
float32 int64_to_float32( int64 STATUS_PARAM ); float32 int64_to_float32(int64_t STATUS_PARAM);
float32 uint64_to_float32( uint64 STATUS_PARAM ); float32 uint64_to_float32(uint64_t STATUS_PARAM);
float64 int64_to_float64( int64 STATUS_PARAM ); float64 int64_to_float64(int64_t STATUS_PARAM);
float64 uint64_to_float64( uint64 STATUS_PARAM ); float64 uint64_to_float64(uint64_t STATUS_PARAM);
floatx80 int64_to_floatx80( int64 STATUS_PARAM ); floatx80 int64_to_floatx80(int64_t STATUS_PARAM);
float128 int64_to_float128( int64 STATUS_PARAM ); float128 int64_to_float128(int64_t STATUS_PARAM);
float128 uint64_to_float128( uint64 STATUS_PARAM ); float128 uint64_to_float128(uint64_t STATUS_PARAM);
/* We provide the int16 versions for symmetry of API with float-to-int */ /* We provide the int16 versions for symmetry of API with float-to-int */
INLINE float32 int16_to_float32(int16_t v STATUS_PARAM) INLINE float32 int16_to_float32(int16_t v STATUS_PARAM)