| Submitter | Christophe LYON |
|---|---|
| Date | Feb. 14, 2011, 4:47 p.m. |
| Message ID | <4D595CB8.4020901@st.com> |
| Download | mbox | patch |
| Permalink | /patch/83137/ |
| State | New |
| Headers | show |
Comments
On 14 February 2011 16:47, Christophe Lyon <christophe.lyon@st.com> wrote: > > These two special values are needed to implement some helper functions, which return these values in some cases. I assume this is for vrecpe, right? I think it would be better to post this as part of that patchset; it's easier to see the rationale for adding the functions when you also have the code that's using them. > /*---------------------------------------------------------------------------- > +| Returns the default NaN. > +*----------------------------------------------------------------------------*/ > + > +float32 float32_nan(void) > +{ > + return float32_default_nan; > +} Maybe we should just expose float32_default_nan in softfloat.h somehow; that would match float32_zero, float32_one, etc (ie it would not be a function). > +#define float32_infinity make_float32(0x7f800000) No objection to this one. -- PMM
On 16.02.2011 12:53, Peter Maydell wrote: > On 14 February 2011 16:47, Christophe Lyon <christophe.lyon@st.com> wrote: >> >> These two special values are needed to implement some helper functions, which return these values in some cases. > > I assume this is for vrecpe, right? I think it would be better > to post this as part of that patchset; it's easier to see the > rationale for adding the functions when you also have the > code that's using them. Indeed. I'll post the bigger patch. >> /*---------------------------------------------------------------------------- >> +| Returns the default NaN. >> +*----------------------------------------------------------------------------*/ >> + >> +float32 float32_nan(void) >> +{ >> + return float32_default_nan; >> +} > > Maybe we should just expose float32_default_nan in > softfloat.h somehow; that would match float32_zero, > float32_one, etc (ie it would not be a function). > It was my initial intention, but it implies adding a #if defined(TARGET_XXX) block in softfloat.h, and I feared this was not desirable. Thanks.
Patch
diff --git a/fpu/softfloat-specialize.h b/fpu/softfloat-specialize.h index 2d025bf..d5d8c63 100644 --- a/fpu/softfloat-specialize.h +++ b/fpu/softfloat-specialize.h @@ -201,6 +201,15 @@ int float32_is_signaling_nan( float32 a_ ) } /*---------------------------------------------------------------------------- +| Returns the default NaN. +*----------------------------------------------------------------------------*/ + +float32 float32_nan(void) +{ + return float32_default_nan; +} + +/*---------------------------------------------------------------------------- | Returns a quiet NaN if the single-precision floating point value `a' is a | signaling NaN; otherwise returns `a'. *----------------------------------------------------------------------------*/ diff --git a/fpu/softfloat.h b/fpu/softfloat.h index e57ee1e..610f245 100644 --- a/fpu/softfloat.h +++ b/fpu/softfloat.h @@ -319,6 +319,7 @@ int float32_compare_quiet( float32, float32 STATUS_PARAM ); int float32_is_quiet_nan( float32 ); int float32_is_signaling_nan( float32 ); float32 float32_maybe_silence_nan( float32 ); +float32 float32_nan(void); float32 float32_scalbn( float32, int STATUS_PARAM ); INLINE float32 float32_abs(float32 a) @@ -365,6 +366,7 @@ INLINE int float32_is_zero_or_denormal(float32 a) #define float32_zero make_float32(0) #define float32_one make_float32(0x3f800000) #define float32_ln2 make_float32(0x3f317218) +#define float32_infinity make_float32(0x7f800000) /*---------------------------------------------------------------------------- | Software IEC/IEEE double-precision conversion routines.
These two special values are needed to implement some helper functions, which return these values in some cases. Signed-off-by: Christophe Lyon <christophe.lyon@st.com> --- fpu/softfloat-specialize.h | 9 +++++++++ fpu/softfloat.h | 2 ++ 2 files changed, 11 insertions(+), 0 deletions(-)