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 <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
Peter Maydell 2014-01-07 17:19:11 +00:00
parent fd728f2f94
commit 879d096b37
2 changed files with 36 additions and 18 deletions

View file

@ -59,21 +59,6 @@ these four paragraphs for those parts of this code that are retained.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/
#include "softfloat-specialize.h" #include "softfloat-specialize.h"
void set_float_rounding_mode(int val STATUS_PARAM)
{
STATUS(float_rounding_mode) = val;
}
void set_float_exception_flags(int val STATUS_PARAM)
{
STATUS(float_exception_flags) = val;
}
void set_floatx80_rounding_precision(int val STATUS_PARAM)
{
STATUS(floatx80_rounding_precision) = val;
}
/*---------------------------------------------------------------------------- /*----------------------------------------------------------------------------
| Returns the fraction bits of the half-precision floating-point value `a'. | Returns the fraction bits of the half-precision floating-point value `a'.
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/

View file

@ -180,12 +180,22 @@ typedef struct float_status {
flag default_nan_mode; flag default_nan_mode;
} float_status; } float_status;
void set_float_rounding_mode(int val STATUS_PARAM);
void set_float_exception_flags(int val STATUS_PARAM);
INLINE void set_float_detect_tininess(int val STATUS_PARAM) INLINE void set_float_detect_tininess(int val STATUS_PARAM)
{ {
STATUS(float_detect_tininess) = val; STATUS(float_detect_tininess) = val;
} }
INLINE void set_float_rounding_mode(int val STATUS_PARAM)
{
STATUS(float_rounding_mode) = val;
}
INLINE void set_float_exception_flags(int val STATUS_PARAM)
{
STATUS(float_exception_flags) = val;
}
INLINE void set_floatx80_rounding_precision(int val STATUS_PARAM)
{
STATUS(floatx80_rounding_precision) = val;
}
INLINE void set_flush_to_zero(flag val STATUS_PARAM) INLINE void set_flush_to_zero(flag val STATUS_PARAM)
{ {
STATUS(flush_to_zero) = val; STATUS(flush_to_zero) = val;
@ -198,11 +208,34 @@ INLINE void set_default_nan_mode(flag val STATUS_PARAM)
{ {
STATUS(default_nan_mode) = val; STATUS(default_nan_mode) = val;
} }
INLINE int get_float_detect_tininess(float_status *status)
{
return STATUS(float_detect_tininess);
}
INLINE int get_float_rounding_mode(float_status *status)
{
return STATUS(float_rounding_mode);
}
INLINE int get_float_exception_flags(float_status *status) INLINE int get_float_exception_flags(float_status *status)
{ {
return STATUS(float_exception_flags); return STATUS(float_exception_flags);
} }
void set_floatx80_rounding_precision(int val STATUS_PARAM); INLINE int get_floatx80_rounding_precision(float_status *status)
{
return STATUS(floatx80_rounding_precision);
}
INLINE flag get_flush_to_zero(float_status *status)
{
return STATUS(flush_to_zero);
}
INLINE flag get_flush_inputs_to_zero(float_status *status)
{
return STATUS(flush_inputs_to_zero);
}
INLINE flag get_default_nan_mode(float_status *status)
{
return STATUS(default_nan_mode);
}
/*---------------------------------------------------------------------------- /*----------------------------------------------------------------------------
| Routine to raise any or all of the software IEC/IEEE floating-point | Routine to raise any or all of the software IEC/IEEE floating-point