mesa: move IS_NEGATIVE() and DIFFERENT_SIGNS() to macros.h
authorBrian Paul <brianp@vmware.com>
Fri, 31 Aug 2012 14:33:31 +0000 (08:33 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 1 Sep 2012 13:41:26 +0000 (07:41 -0600)
src/mesa/main/imports.h
src/mesa/main/macros.h

index 65cdf4a52b2d2c8f143cf2317b0bde78821b7bd0..d851ee56a46595fe5694785e797326a7ac48b5c8 100644 (file)
@@ -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
index 5af9487cb07bd497baa4799aa31db3c12833a3af..7d0a375d138073e2689c3aa7bb8b6888a8ca90fc 100644 (file)
@@ -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 )