mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-28 21:03:54 -06:00
softfloat: Add scaling float-to-int routines
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180814002653.12828-3-richard.henderson@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
2abdfe2440
commit
2f6c74be59
2 changed files with 379 additions and 97 deletions
|
@ -243,21 +243,34 @@ float128 uint64_to_float128(uint64_t, float_status *status);
|
|||
/*----------------------------------------------------------------------------
|
||||
| Software half-precision conversion routines.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
float16 float32_to_float16(float32, bool ieee, float_status *status);
|
||||
float32 float16_to_float32(float16, bool ieee, float_status *status);
|
||||
float16 float64_to_float16(float64 a, bool ieee, float_status *status);
|
||||
float64 float16_to_float64(float16 a, bool ieee, float_status *status);
|
||||
|
||||
int16_t float16_to_int16_scalbn(float16, int, int, float_status *status);
|
||||
int32_t float16_to_int32_scalbn(float16, int, int, float_status *status);
|
||||
int64_t float16_to_int64_scalbn(float16, int, int, float_status *status);
|
||||
|
||||
int16_t float16_to_int16(float16, float_status *status);
|
||||
uint16_t float16_to_uint16(float16 a, float_status *status);
|
||||
int16_t float16_to_int16_round_to_zero(float16, float_status *status);
|
||||
uint16_t float16_to_uint16_round_to_zero(float16 a, float_status *status);
|
||||
int32_t float16_to_int32(float16, float_status *status);
|
||||
uint32_t float16_to_uint32(float16 a, float_status *status);
|
||||
int32_t float16_to_int32_round_to_zero(float16, float_status *status);
|
||||
uint32_t float16_to_uint32_round_to_zero(float16 a, float_status *status);
|
||||
int64_t float16_to_int64(float16, float_status *status);
|
||||
uint64_t float16_to_uint64(float16 a, float_status *status);
|
||||
|
||||
int16_t float16_to_int16_round_to_zero(float16, float_status *status);
|
||||
int32_t float16_to_int32_round_to_zero(float16, float_status *status);
|
||||
int64_t float16_to_int64_round_to_zero(float16, float_status *status);
|
||||
|
||||
uint16_t float16_to_uint16_scalbn(float16 a, int, int, float_status *status);
|
||||
uint32_t float16_to_uint32_scalbn(float16 a, int, int, float_status *status);
|
||||
uint64_t float16_to_uint64_scalbn(float16 a, int, int, float_status *status);
|
||||
|
||||
uint16_t float16_to_uint16(float16 a, float_status *status);
|
||||
uint32_t float16_to_uint32(float16 a, float_status *status);
|
||||
uint64_t float16_to_uint64(float16 a, float_status *status);
|
||||
|
||||
uint16_t float16_to_uint16_round_to_zero(float16 a, float_status *status);
|
||||
uint32_t float16_to_uint32_round_to_zero(float16 a, float_status *status);
|
||||
uint64_t float16_to_uint64_round_to_zero(float16 a, float_status *status);
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
|
@ -347,18 +360,31 @@ float16 float16_default_nan(float_status *status);
|
|||
/*----------------------------------------------------------------------------
|
||||
| Software IEC/IEEE single-precision conversion routines.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int16_t float32_to_int16_scalbn(float32, int, int, float_status *status);
|
||||
int32_t float32_to_int32_scalbn(float32, int, int, float_status *status);
|
||||
int64_t float32_to_int64_scalbn(float32, int, int, float_status *status);
|
||||
|
||||
int16_t float32_to_int16(float32, float_status *status);
|
||||
uint16_t float32_to_uint16(float32, float_status *status);
|
||||
int16_t float32_to_int16_round_to_zero(float32, float_status *status);
|
||||
uint16_t float32_to_uint16_round_to_zero(float32, float_status *status);
|
||||
int32_t float32_to_int32(float32, float_status *status);
|
||||
int32_t float32_to_int32_round_to_zero(float32, float_status *status);
|
||||
uint32_t float32_to_uint32(float32, float_status *status);
|
||||
uint32_t float32_to_uint32_round_to_zero(float32, float_status *status);
|
||||
int64_t float32_to_int64(float32, float_status *status);
|
||||
uint64_t float32_to_uint64(float32, float_status *status);
|
||||
uint64_t float32_to_uint64_round_to_zero(float32, float_status *status);
|
||||
|
||||
int16_t float32_to_int16_round_to_zero(float32, float_status *status);
|
||||
int32_t float32_to_int32_round_to_zero(float32, float_status *status);
|
||||
int64_t float32_to_int64_round_to_zero(float32, float_status *status);
|
||||
|
||||
uint16_t float32_to_uint16_scalbn(float32, int, int, float_status *status);
|
||||
uint32_t float32_to_uint32_scalbn(float32, int, int, float_status *status);
|
||||
uint64_t float32_to_uint64_scalbn(float32, int, int, float_status *status);
|
||||
|
||||
uint16_t float32_to_uint16(float32, float_status *status);
|
||||
uint32_t float32_to_uint32(float32, float_status *status);
|
||||
uint64_t float32_to_uint64(float32, float_status *status);
|
||||
|
||||
uint16_t float32_to_uint16_round_to_zero(float32, float_status *status);
|
||||
uint32_t float32_to_uint32_round_to_zero(float32, float_status *status);
|
||||
uint64_t float32_to_uint64_round_to_zero(float32, float_status *status);
|
||||
|
||||
float64 float32_to_float64(float32, float_status *status);
|
||||
floatx80 float32_to_floatx80(float32, float_status *status);
|
||||
float128 float32_to_float128(float32, float_status *status);
|
||||
|
@ -476,18 +502,31 @@ float32 float32_default_nan(float_status *status);
|
|||
/*----------------------------------------------------------------------------
|
||||
| Software IEC/IEEE double-precision conversion routines.
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
int16_t float64_to_int16_scalbn(float64, int, int, float_status *status);
|
||||
int32_t float64_to_int32_scalbn(float64, int, int, float_status *status);
|
||||
int64_t float64_to_int64_scalbn(float64, int, int, float_status *status);
|
||||
|
||||
int16_t float64_to_int16(float64, float_status *status);
|
||||
uint16_t float64_to_uint16(float64, float_status *status);
|
||||
int16_t float64_to_int16_round_to_zero(float64, float_status *status);
|
||||
uint16_t float64_to_uint16_round_to_zero(float64, float_status *status);
|
||||
int32_t float64_to_int32(float64, float_status *status);
|
||||
int32_t float64_to_int32_round_to_zero(float64, float_status *status);
|
||||
uint32_t float64_to_uint32(float64, float_status *status);
|
||||
uint32_t float64_to_uint32_round_to_zero(float64, float_status *status);
|
||||
int64_t float64_to_int64(float64, float_status *status);
|
||||
|
||||
int16_t float64_to_int16_round_to_zero(float64, float_status *status);
|
||||
int32_t float64_to_int32_round_to_zero(float64, float_status *status);
|
||||
int64_t float64_to_int64_round_to_zero(float64, float_status *status);
|
||||
uint64_t float64_to_uint64(float64 a, float_status *status);
|
||||
uint64_t float64_to_uint64_round_to_zero(float64 a, float_status *status);
|
||||
|
||||
uint16_t float64_to_uint16_scalbn(float64, int, int, float_status *status);
|
||||
uint32_t float64_to_uint32_scalbn(float64, int, int, float_status *status);
|
||||
uint64_t float64_to_uint64_scalbn(float64, int, int, float_status *status);
|
||||
|
||||
uint16_t float64_to_uint16(float64, float_status *status);
|
||||
uint32_t float64_to_uint32(float64, float_status *status);
|
||||
uint64_t float64_to_uint64(float64, float_status *status);
|
||||
|
||||
uint16_t float64_to_uint16_round_to_zero(float64, float_status *status);
|
||||
uint32_t float64_to_uint32_round_to_zero(float64, float_status *status);
|
||||
uint64_t float64_to_uint64_round_to_zero(float64, float_status *status);
|
||||
|
||||
float32 float64_to_float32(float64, float_status *status);
|
||||
floatx80 float64_to_floatx80(float64, float_status *status);
|
||||
float128 float64_to_float128(float64, float_status *status);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue