diff options
author | Brian Paul <[email protected]> | 2012-08-31 08:33:31 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-09-01 07:41:26 -0600 |
commit | c8a86f717f8e30204c615d06bcec159410ac06c5 (patch) | |
tree | 318b29b6b68d5b1cc8f4d69845e835adf04464fa /src | |
parent | a2cf265c8da51e9b7db363a98b0ee80c61b2f79e (diff) |
mesa: move IS_NEGATIVE() and DIFFERENT_SIGNS() to macros.h
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/main/imports.h | 29 | ||||
-rw-r--r-- | src/mesa/main/macros.h | 32 |
2 files changed, 32 insertions, 29 deletions
diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 65cdf4a52b2..d851ee56a46 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -225,35 +225,6 @@ static inline int IS_INF_OR_NAN( float x ) /*** - *** 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 *** FABSF: absolute value of float diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h index 5af9487cb07..7d0a375d138 100644 --- a/src/mesa/main/macros.h +++ b/src/mesa/main/macros.h @@ -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 ) |