Revert "util: Move the alternate fpclassify implementation to util"

This reverts commits d6eb572905 and
58e8468d11.

This is no longer necessary as we aren't using it in NIR anymore.  Also, it
broke the build on some strange systems so let's put it back in querymatrix
where it came from.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88852

Acked-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Jason Ekstrand
2015-01-28 12:42:47 -08:00
parent f0340ff625
commit 7ac79eea1a
2 changed files with 50 additions and 63 deletions

View File

@@ -24,8 +24,6 @@
#ifndef UTIL_MACROS_H
#define UTIL_MACROS_H
#include <math.h>
/* Compute the size of an array */
#ifndef ARRAY_SIZE
# define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
@@ -158,64 +156,4 @@ do { \
# endif
#endif
/* The fallbacks below don't work correctly in C++ and properly detecting
* FP_NORMAL in C++ is hard. Since we don't use fpclassify in any C++ code
* at the moment, we can just predicate this whole thing by not being in
* C++ and we shoudld be ok. If we ever want to use fpclassify in a C++
* file, we will have to revisit this.
*/
#ifndef __cplusplus
#ifdef FP_NORMAL
/* ISO C99 says that fpclassify is a macro. Assume that any implementation
* of fpclassify, whether it's in a C99 compiler or not, will be a macro.
*/
#elif defined(_MSC_VER)
/* Not required on VS2013 and above. */
/* Oddly, the fpclassify() function doesn't exist in such a form
* on MSVC. This is an implementation using slightly different
* lower-level Windows functions.
*/
#include <float.h>
static inline enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
fpclassify(double x)
{
switch(_fpclass(x)) {
case _FPCLASS_SNAN: /* signaling NaN */
case _FPCLASS_QNAN: /* quiet NaN */
return FP_NAN;
case _FPCLASS_NINF: /* negative infinity */
case _FPCLASS_PINF: /* positive infinity */
return FP_INFINITE;
case _FPCLASS_NN: /* negative normal */
case _FPCLASS_PN: /* positive normal */
return FP_NORMAL;
case _FPCLASS_ND: /* negative denormalized */
case _FPCLASS_PD: /* positive denormalized */
return FP_SUBNORMAL;
case _FPCLASS_NZ: /* negative zero */
case _FPCLASS_PZ: /* positive zero */
return FP_ZERO;
default:
/* Should never get here; but if we do, this will guarantee
* that the pattern is not treated like a number.
*/
return FP_NAN;
}
}
#else
static inline enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
fpclassify(double x)
{
/* XXX do something better someday */
return FP_NORMAL;
}
#endif
#endif /* __cplusplus */
#endif /* UTIL_MACROS_H */