mesa: Drop USE_IEEE define.
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>
This commit is contained in:
@@ -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:
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
@@ -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!
|
||||
*/
|
||||
|
@@ -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; \
|
||||
@@ -65,10 +64,6 @@
|
||||
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
|
||||
|
||||
|
Reference in New Issue
Block a user