mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-30 14:50:44 +02:00
mesa: move IS_NEGATIVE() and DIFFERENT_SIGNS() to macros.h
This commit is contained in:
parent
a2cf265c8d
commit
c8a86f717f
2 changed files with 32 additions and 29 deletions
|
|
@ -224,35 +224,6 @@ static inline int IS_INF_OR_NAN( float x )
|
|||
#endif
|
||||
|
||||
|
||||
/***
|
||||
*** IS_NEGATIVE: test if float is negative
|
||||
***/
|
||||
#if defined(USE_IEEE)
|
||||
static inline int GET_FLOAT_BITS( float x )
|
||||
{
|
||||
fi_type fi;
|
||||
fi.f = x;
|
||||
return fi.i;
|
||||
}
|
||||
#define IS_NEGATIVE(x) (GET_FLOAT_BITS(x) < 0)
|
||||
#else
|
||||
#define IS_NEGATIVE(x) (x < 0.0F)
|
||||
#endif
|
||||
|
||||
|
||||
/***
|
||||
*** DIFFERENT_SIGNS: test if two floats have opposite signs
|
||||
***/
|
||||
#if defined(USE_IEEE)
|
||||
#define DIFFERENT_SIGNS(x,y) ((GET_FLOAT_BITS(x) ^ GET_FLOAT_BITS(y)) & (1<<31))
|
||||
#else
|
||||
/* Could just use (x*y<0) except for the flatshading requirements.
|
||||
* Maybe there's a better way?
|
||||
*/
|
||||
#define DIFFERENT_SIGNS(x,y) ((x) * (y) <= 0.0F && (x) - (y) != 0.0F)
|
||||
#endif
|
||||
|
||||
|
||||
/***
|
||||
*** CEILF: ceiling of float
|
||||
*** FLOORF: floor of float
|
||||
|
|
|
|||
|
|
@ -689,6 +689,38 @@ NORMALIZE_3FV(GLfloat v[3])
|
|||
}
|
||||
|
||||
|
||||
/** Is float value negative? */
|
||||
static inline GLboolean
|
||||
IS_NEGATIVE(float x)
|
||||
{
|
||||
#if defined(USE_IEEE)
|
||||
fi_type fi;
|
||||
fi.f = x;
|
||||
return fi.i < 0;
|
||||
#else
|
||||
return x < 0.0F;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** Test two floats have opposite signs */
|
||||
static inline GLboolean
|
||||
DIFFERENT_SIGNS(GLfloat x, GLfloat y)
|
||||
{
|
||||
#if defined(USE_IEEE)
|
||||
fi_type xfi, yfi;
|
||||
xfi.f = x;
|
||||
yfi.f = y;
|
||||
return (xfi.i ^ yfi.i) & (1u << 31);
|
||||
#else
|
||||
/* Could just use (x*y<0) except for the flatshading requirements.
|
||||
* Maybe there's a better way?
|
||||
*/
|
||||
return ((x) * (y) <= 0.0F && (x) - (y) != 0.0F);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/** Compute ceiling of integer quotient of A divided by B. */
|
||||
#define CEILING( A, B ) ( (A) % (B) == 0 ? (A)/(B) : (A)/(B)+1 )
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue