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
|
#define FLT_MAX_EXP 128
|
||||||
#endif
|
#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
|
#define IEEE_ONE 0x3f800000
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* START/END_FAST_MATH macros:
|
* START/END_FAST_MATH macros:
|
||||||
|
@@ -164,7 +164,6 @@ INV_SQRTF(float x)
|
|||||||
***/
|
***/
|
||||||
static inline GLfloat LOG2(GLfloat x)
|
static inline GLfloat LOG2(GLfloat x)
|
||||||
{
|
{
|
||||||
#ifdef USE_IEEE
|
|
||||||
#if 0
|
#if 0
|
||||||
/* This is pretty fast, but not accurate enough (only 2 fractional bits).
|
/* This is pretty fast, but not accurate enough (only 2 fractional bits).
|
||||||
* Based on code from http://www.stereopsis.com/log2.html
|
* 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.i += 127 << 23;
|
||||||
num.f = ((-1.0f/3) * num.f + 2) * num.f - 2.0f/3;
|
num.f = ((-1.0f/3) * num.f + 2) * num.f - 2.0f/3;
|
||||||
return num.f + log_2;
|
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
|
*** IS_INF_OR_NAN: test if float is infinite or NaN
|
||||||
***/
|
***/
|
||||||
#ifdef USE_IEEE
|
#if defined(isfinite)
|
||||||
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)
|
|
||||||
#define IS_INF_OR_NAN(x) (!isfinite(x))
|
#define IS_INF_OR_NAN(x) (!isfinite(x))
|
||||||
#elif defined(finite)
|
#elif defined(finite)
|
||||||
#define IS_INF_OR_NAN(x) (!finite(x))
|
#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" (ai) : "t" (af) : "st");
|
||||||
__asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
|
__asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
|
||||||
return (ai - bi) >> 1;
|
return (ai - bi) >> 1;
|
||||||
#elif defined(USE_IEEE)
|
#else
|
||||||
int ai, bi;
|
int ai, bi;
|
||||||
double af, bf;
|
double af, bf;
|
||||||
fi_type u;
|
fi_type u;
|
||||||
@@ -330,9 +315,6 @@ static inline int IFLOOR(float f)
|
|||||||
u.f = (float) af; ai = u.i;
|
u.f = (float) af; ai = u.i;
|
||||||
u.f = (float) bf; bi = u.i;
|
u.f = (float) bf; bi = u.i;
|
||||||
return (ai - bi) >> 1;
|
return (ai - bi) >> 1;
|
||||||
#else
|
|
||||||
int i = IROUND(f);
|
|
||||||
return (i > f) ? i - 1 : i;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -356,7 +338,7 @@ static inline int ICEIL(float f)
|
|||||||
__asm__ ("fstps %0" : "=m" (ai) : "t" (af) : "st");
|
__asm__ ("fstps %0" : "=m" (ai) : "t" (af) : "st");
|
||||||
__asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
|
__asm__ ("fstps %0" : "=m" (bi) : "t" (bf) : "st");
|
||||||
return (ai - bi + 1) >> 1;
|
return (ai - bi + 1) >> 1;
|
||||||
#elif defined(USE_IEEE)
|
#else
|
||||||
int ai, bi;
|
int ai, bi;
|
||||||
double af, bf;
|
double af, bf;
|
||||||
fi_type u;
|
fi_type u;
|
||||||
@@ -365,9 +347,6 @@ static inline int ICEIL(float f)
|
|||||||
u.f = (float) af; ai = u.i;
|
u.f = (float) af; ai = u.i;
|
||||||
u.f = (float) bf; bi = u.i;
|
u.f = (float) bf; bi = u.i;
|
||||||
return (ai - bi + 1) >> 1;
|
return (ai - bi + 1) >> 1;
|
||||||
#else
|
|
||||||
int i = IROUND(f);
|
|
||||||
return (i < f) ? i + 1 : i;
|
|
||||||
#endif
|
#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]
|
*** 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]
|
*** 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
|
/* This function/macro is sensitive to precision. Test very carefully
|
||||||
* if you change it!
|
* if you change it!
|
||||||
*/
|
*/
|
||||||
|
@@ -52,7 +52,6 @@
|
|||||||
/**
|
/**
|
||||||
* Set x to positive or negative infinity.
|
* Set x to positive or negative infinity.
|
||||||
*/
|
*/
|
||||||
#if defined(USE_IEEE) || defined(_WIN32)
|
|
||||||
#define SET_POS_INFINITY(x) \
|
#define SET_POS_INFINITY(x) \
|
||||||
do { \
|
do { \
|
||||||
fi_type fi; \
|
fi_type fi; \
|
||||||
@@ -65,10 +64,6 @@
|
|||||||
fi.i = 0xFF800000; \
|
fi.i = 0xFF800000; \
|
||||||
x = fi.f; \
|
x = fi.f; \
|
||||||
} while (0)
|
} 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
|
#define SET_FLOAT_BITS(x, bits) ((fi_type *) (void *) &(x))->i = bits
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user