[Mesa-dev] [PATCH 1/3] mesa: Move C99 MSVC compatibility code from u_math.h to c99_compat.h.

Jose Fonseca jfonseca at vmware.com
Mon Feb 23 04:56:27 PST 2015


Series looks good to me.  It's a nice cleanup on its own right.

Reviewed-by: Jose Fonseca <jfonseca at vmware.com>

Jose

On 23/02/15 04:31, Matt Turner wrote:
> ---
> This series is attempting to make some progress towards moving u_math.h
> to src/util.
>
>   include/c99_compat.h                | 143 ++++++++++++++++++++++++++++++++++++
>   src/gallium/auxiliary/util/u_math.h | 143 ------------------------------------
>   2 files changed, 143 insertions(+), 143 deletions(-)
>
> diff --git a/include/c99_compat.h b/include/c99_compat.h
> index e5d0ae4..5852015 100644
> --- a/include/c99_compat.h
> +++ b/include/c99_compat.h
> @@ -138,4 +138,147 @@ test_c99_compat_h(const void * restrict a,
>   #endif
>
>
> +#if defined(_MSC_VER)
> +
> +#if _MSC_VER < 1400 && !defined(__cplusplus)
> +
> +static INLINE float cosf( float f )
> +{
> +   return (float) cos( (double) f );
> +}
> +
> +static INLINE float sinf( float f )
> +{
> +   return (float) sin( (double) f );
> +}
> +
> +static INLINE float ceilf( float f )
> +{
> +   return (float) ceil( (double) f );
> +}
> +
> +static INLINE float floorf( float f )
> +{
> +   return (float) floor( (double) f );
> +}
> +
> +static INLINE float powf( float f, float g )
> +{
> +   return (float) pow( (double) f, (double) g );
> +}
> +
> +static INLINE float sqrtf( float f )
> +{
> +   return (float) sqrt( (double) f );
> +}
> +
> +static INLINE float fabsf( float f )
> +{
> +   return (float) fabs( (double) f );
> +}
> +
> +static INLINE float logf( float f )
> +{
> +   return (float) log( (double) f );
> +}
> +
> +#else
> +/* Work-around an extra semi-colon in VS 2005 logf definition */
> +#ifdef logf
> +#undef logf
> +#define logf(x) ((float)log((double)(x)))
> +#endif /* logf */
> +
> +#if _MSC_VER < 1800
> +#define isfinite(x) _finite((double)(x))
> +#define isnan(x) _isnan((double)(x))
> +#endif /* _MSC_VER < 1800 */
> +#endif /* _MSC_VER < 1400 && !defined(__cplusplus) */
> +
> +#if _MSC_VER < 1800
> +static INLINE double log2( double x )
> +{
> +   const double invln2 = 1.442695041;
> +   return log( x ) * invln2;
> +}
> +
> +static INLINE double
> +round(double x)
> +{
> +   return x >= 0.0 ? floor(x + 0.5) : ceil(x - 0.5);
> +}
> +
> +static INLINE float
> +roundf(float x)
> +{
> +   return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
> +}
> +#endif
> +
> +#ifndef INFINITY
> +#define INFINITY (DBL_MAX + DBL_MAX)
> +#endif
> +
> +#ifndef NAN
> +#define NAN (INFINITY - INFINITY)
> +#endif
> +
> +#endif /* _MSC_VER */
> +
> +
> +#if __STDC_VERSION__ < 199901L && (!defined(__cplusplus) || defined(_MSC_VER))
> +static INLINE long int
> +lrint(double d)
> +{
> +   long int rounded = (long int)(d + 0.5);
> +
> +   if (d - floor(d) == 0.5) {
> +      if (rounded % 2 != 0)
> +         rounded += (d > 0) ? -1 : 1;
> +   }
> +
> +   return rounded;
> +}
> +
> +static INLINE long int
> +lrintf(float f)
> +{
> +   long int rounded = (long int)(f + 0.5f);
> +
> +   if (f - floorf(f) == 0.5f) {
> +      if (rounded % 2 != 0)
> +         rounded += (f > 0) ? -1 : 1;
> +   }
> +
> +   return rounded;
> +}
> +
> +static INLINE long long int
> +llrint(double d)
> +{
> +   long long int rounded = (long long int)(d + 0.5);
> +
> +   if (d - floor(d) == 0.5) {
> +      if (rounded % 2 != 0)
> +         rounded += (d > 0) ? -1 : 1;
> +   }
> +
> +   return rounded;
> +}
> +
> +static INLINE long long int
> +llrintf(float f)
> +{
> +   long long int rounded = (long long int)(f + 0.5f);
> +
> +   if (f - floorf(f) == 0.5f) {
> +      if (rounded % 2 != 0)
> +         rounded += (f > 0) ? -1 : 1;
> +   }
> +
> +   return rounded;
> +}
> +#endif /* C99 */
> +
> +
>   #endif /* _C99_COMPAT_H_ */
> diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h
> index d6e83f9..dd2ce01 100644
> --- a/src/gallium/auxiliary/util/u_math.h
> +++ b/src/gallium/auxiliary/util/u_math.h
> @@ -60,149 +60,6 @@ extern "C" {
>   #define M_SQRT2 1.41421356237309504880
>   #endif
>
> -
> -#if defined(_MSC_VER)
> -
> -#if _MSC_VER < 1400 && !defined(__cplusplus)
> -
> -static INLINE float cosf( float f )
> -{
> -   return (float) cos( (double) f );
> -}
> -
> -static INLINE float sinf( float f )
> -{
> -   return (float) sin( (double) f );
> -}
> -
> -static INLINE float ceilf( float f )
> -{
> -   return (float) ceil( (double) f );
> -}
> -
> -static INLINE float floorf( float f )
> -{
> -   return (float) floor( (double) f );
> -}
> -
> -static INLINE float powf( float f, float g )
> -{
> -   return (float) pow( (double) f, (double) g );
> -}
> -
> -static INLINE float sqrtf( float f )
> -{
> -   return (float) sqrt( (double) f );
> -}
> -
> -static INLINE float fabsf( float f )
> -{
> -   return (float) fabs( (double) f );
> -}
> -
> -static INLINE float logf( float f )
> -{
> -   return (float) log( (double) f );
> -}
> -
> -#else
> -/* Work-around an extra semi-colon in VS 2005 logf definition */
> -#ifdef logf
> -#undef logf
> -#define logf(x) ((float)log((double)(x)))
> -#endif /* logf */
> -
> -#if _MSC_VER < 1800
> -#define isfinite(x) _finite((double)(x))
> -#define isnan(x) _isnan((double)(x))
> -#endif /* _MSC_VER < 1800 */
> -#endif /* _MSC_VER < 1400 && !defined(__cplusplus) */
> -
> -#if _MSC_VER < 1800
> -static INLINE double log2( double x )
> -{
> -   const double invln2 = 1.442695041;
> -   return log( x ) * invln2;
> -}
> -
> -static INLINE double
> -round(double x)
> -{
> -   return x >= 0.0 ? floor(x + 0.5) : ceil(x - 0.5);
> -}
> -
> -static INLINE float
> -roundf(float x)
> -{
> -   return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f);
> -}
> -#endif
> -
> -#ifndef INFINITY
> -#define INFINITY (DBL_MAX + DBL_MAX)
> -#endif
> -
> -#ifndef NAN
> -#define NAN (INFINITY - INFINITY)
> -#endif
> -
> -#endif /* _MSC_VER */
> -
> -
> -#if __STDC_VERSION__ < 199901L && (!defined(__cplusplus) || defined(_MSC_VER))
> -static INLINE long int
> -lrint(double d)
> -{
> -   long int rounded = (long int)(d + 0.5);
> -
> -   if (d - floor(d) == 0.5) {
> -      if (rounded % 2 != 0)
> -         rounded += (d > 0) ? -1 : 1;
> -   }
> -
> -   return rounded;
> -}
> -
> -static INLINE long int
> -lrintf(float f)
> -{
> -   long int rounded = (long int)(f + 0.5f);
> -
> -   if (f - floorf(f) == 0.5f) {
> -      if (rounded % 2 != 0)
> -         rounded += (f > 0) ? -1 : 1;
> -   }
> -
> -   return rounded;
> -}
> -
> -static INLINE long long int
> -llrint(double d)
> -{
> -   long long int rounded = (long long int)(d + 0.5);
> -
> -   if (d - floor(d) == 0.5) {
> -      if (rounded % 2 != 0)
> -         rounded += (d > 0) ? -1 : 1;
> -   }
> -
> -   return rounded;
> -}
> -
> -static INLINE long long int
> -llrintf(float f)
> -{
> -   long long int rounded = (long long int)(f + 0.5f);
> -
> -   if (f - floorf(f) == 0.5f) {
> -      if (rounded % 2 != 0)
> -         rounded += (f > 0) ? -1 : 1;
> -   }
> -
> -   return rounded;
> -}
> -#endif /* C99 */
> -
>   #define POW2_TABLE_SIZE_LOG2 9
>   #define POW2_TABLE_SIZE (1 << POW2_TABLE_SIZE_LOG2)
>   #define POW2_TABLE_OFFSET (POW2_TABLE_SIZE/2)
>



More information about the mesa-dev mailing list