[Mesa-dev] Mesa (master): mesa: Move C99 MSVC compatibility code from u_math.h to c99_compat.h.
Ian Romanick
idr at freedesktop.org
Mon Feb 23 13:08:47 PST 2015
On 02/23/2015 12:24 PM, Brian Paul wrote:
> Looks like two things are needed.
>
> 1. replace INLINE with inline
>
> 2. #include math.h at the top of c99_copmat.h so that we get prototypes
> for floorf(), etc. to prevent a bunch of warnings where floorf() is
> called. This kind of feels wrong. Maybe there should be a c99_math.h
> wrapper for math.h.
I think that's basically what Eric's review feedback was for the
original patch.
> -Brian
>
>
> On 02/23/2015 01:00 PM, Brian Paul wrote:
>> This broke the MSVC build for me. I'll try to sort it out...
>>
>> -Brian
>>
>> On 02/23/2015 11:50 AM, Matt Turner wrote:
>>> Module: Mesa
>>> Branch: master
>>> Commit: 5a191f49ad084e728122fed83bd7511817e66831
>>> URL:
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__cgit.freedesktop.org_mesa_mesa_commit_-3Fid-3D5a191f49ad084e728122fed83bd7511817e66831&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=tR_ciG-9V28cwPkoyOQIn4nmnQFvPn_ubMTmrF4tZOo&s=xxgui1WFrwmb6HgxPPtS-Z_F1NrTAfJrPtCl6TSxFCM&e=
>>>
>>>
>>>
>>> Author: Matt Turner <mattst88 at gmail.com>
>>> Date: Fri Feb 20 18:32:05 2015 -0800
>>>
>>> mesa: Move C99 MSVC compatibility code from u_math.h to c99_compat.h.
>>>
>>> Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
>>>
>>> ---
>>>
>>> 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)
>>>
>>> _______________________________________________
>>> mesa-commit mailing list
>>> mesa-commit at lists.freedesktop.org
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Dcommit&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=tR_ciG-9V28cwPkoyOQIn4nmnQFvPn_ubMTmrF4tZOo&s=OMt6RSK33tDkOC7vN70WpLgRnK6DFgj95zHDOoeo4dM&e=
>>>
>>>
>>>
>>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
More information about the mesa-dev
mailing list