mesa: Drop USE_IEEE define.
authorMatt Turner <mattst88@gmail.com>
Wed, 6 Aug 2014 23:13:26 +0000 (16:13 -0700)
committerMatt Turner <mattst88@gmail.com>
Thu, 7 Aug 2014 23:00:24 +0000 (16:00 -0700)
I think OpenVMS was the only platform that Mesa ran on that used a
non-IEEE representation for floats. We removed OpenVMS support a while
back, and this should alleviate the need to continue updating the
this-platform-uses-IEEE list.

The one bit of this patch that needs review is the IS_INF_OR_NAN,
because I'm not sure if MSVC supports isfinite.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=82268
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/compiler.h
src/mesa/main/imports.h
src/mesa/main/macros.h
src/mesa/program/prog_execute.c

index ae7d343dd362c610acdd96295cb327d24d88645b..35160223e5b37a0e0b71921ee5b93b870164ec7c 100644 (file)
@@ -265,25 +265,7 @@ static INLINE GLuint CPU_TO_LE32(GLuint x)
 #define FLT_MAX_EXP 128
 #endif
 
-
-/**
- * USE_IEEE: Determine if we're using IEEE floating point
- */
-#if defined(__i386__) || defined(__386__) || defined(__sparc__) || \
-    defined(__s390__) || defined(__s390x__) || defined(__powerpc__) || \
-    defined(__x86_64__) || \
-    defined(__m68k__) || \
-    defined(ia64) || defined(__ia64__) || \
-    defined(__hppa__) || defined(hpux) || \
-    defined(__mips) || defined(_MIPS_ARCH) || \
-    defined(__arm__) || defined(__aarch64__) || \
-    defined(__sh__) || defined(__m32r__) || \
-    (defined(__sun) && defined(_IEEE_754)) || \
-    defined(__alpha__)
-#define USE_IEEE
 #define IEEE_ONE 0x3f800000
-#endif
-
 
 /**
  * START/END_FAST_MATH macros:
index 023ef2e6399a779a084f5b1ba8d5c9bad74f24d5..59fd19c36475022238ba2637e72322c630b23bda 100644 (file)
@@ -164,7 +164,6 @@ INV_SQRTF(float x)
  ***/
 static inline GLfloat LOG2(GLfloat x)
 {
-#ifdef USE_IEEE
 #if 0
    /* This is pretty fast, but not accurate enough (only 2 fractional bits).
     * Based on code from http://www.stereopsis.com/log2.html
@@ -186,13 +185,6 @@ static inline GLfloat LOG2(GLfloat x)
    num.i += 127 << 23;
    num.f = ((-1.0f/3) * num.f + 2) * num.f - 2.0f/3;
    return num.f + log_2;
-#else
-   /*
-    * NOTE: log_base_2(x) = log(x) / log(2)
-    * NOTE: 1.442695 = 1/log(2).
-    */
-   return (GLfloat) (log(x) * 1.442695F);
-#endif
 }
 
 
@@ -200,14 +192,7 @@ static inline GLfloat LOG2(GLfloat x)
 /***
  *** IS_INF_OR_NAN: test if float is infinite or NaN
  ***/
-#ifdef USE_IEEE
-static inline int IS_INF_OR_NAN( float x )
-{
-   fi_type tmp;
-   tmp.f = x;
-   return !(int)((unsigned int)((tmp.i & 0x7fffffff)-0x7f800000) >> 31);
-}
-#elif defined(isfinite)
+#if defined(isfinite)
 #define IS_INF_OR_NAN(x)        (!isfinite(x))
 #elif defined(finite)
 #define IS_INF_OR_NAN(x)        (!finite(x))
@@ -321,7 +306,7 @@ static inline int IFLOOR(float f)
    __asm__ ("fstps %0" : "=m" (ai) : "t" (af) : "st");
    __asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
    return (ai - bi) >> 1;
-#elif defined(USE_IEEE)
+#else
    int ai, bi;
    double af, bf;
    fi_type u;
@@ -330,9 +315,6 @@ static inline int IFLOOR(float f)
    u.f = (float) af;  ai = u.i;
    u.f = (float) bf;  bi = u.i;
    return (ai - bi) >> 1;
-#else
-   int i = IROUND(f);
-   return (i > f) ? i - 1 : i;
 #endif
 }
 
@@ -356,7 +338,7 @@ static inline int ICEIL(float f)
    __asm__ ("fstps %0" : "=m" (ai) : "t" (af) : "st");
    __asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
    return (ai - bi + 1) >> 1;
-#elif defined(USE_IEEE)
+#else
    int ai, bi;
    double af, bf;
    fi_type u;
@@ -365,9 +347,6 @@ static inline int ICEIL(float f)
    u.f = (float) af; ai = u.i;
    u.f = (float) bf; bi = u.i;
    return (ai - bi + 1) >> 1;
-#else
-   int i = IROUND(f);
-   return (i < f) ? i + 1 : i;
 #endif
 }
 
index 954df3cc8d83264cb8271691cbd218b1ba8de46b..0ba658a9a4356989ae1ba182537c76d89823f2db 100644 (file)
@@ -140,7 +140,7 @@ extern GLfloat _mesa_ubyte_to_float_color_tab[256];
  *** UNCLAMPED_FLOAT_TO_UBYTE: clamp float to [0,1] and map to ubyte in [0,255]
  *** CLAMPED_FLOAT_TO_UBYTE: map float known to be in [0,1] to ubyte in [0,255]
  ***/
-#if defined(USE_IEEE) && !defined(DEBUG)
+#ifndef DEBUG
 /* This function/macro is sensitive to precision.  Test very carefully
  * if you change it!
  */
index 115525eba57370e8cbd38a0a26fd3961961ccf93..fcc9ed518ee0d3401c8015024bcc056da99fee74 100644 (file)
@@ -52,7 +52,6 @@
 /**
  * Set x to positive or negative infinity.
  */
-#if defined(USE_IEEE) || defined(_WIN32)
 #define SET_POS_INFINITY(x)                  \
    do {                                      \
          fi_type fi;                         \
          fi.i = 0xFF800000;                  \
          x = fi.f;                           \
    } while (0)
-#else
-#define SET_POS_INFINITY(x)  x = (GLfloat) HUGE_VAL
-#define SET_NEG_INFINITY(x)  x = (GLfloat) -HUGE_VAL
-#endif
 
 #define SET_FLOAT_BITS(x, bits) ((fi_type *) (void *) &(x))->i = bits