Updated Solaris isinf support, by Juergen Keil and Ben Taylor.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 17 Apr 2007 21:57:02 +0000 (21:57 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Tue, 17 Apr 2007 21:57:02 +0000 (21:57 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2696 c046a42c-6fe2-441c-8c8c-71466251a162

fpu/softfloat-native.h

index 8a0d1ad3798d027a5115461761e7607023d434e0..49cff5d894a9ed34c3b8e2dbdb60aff47fc40d21 100644 (file)
 #define isunordered(x,y)        unordered(x, y)
 #endif
 
+#if defined(__sun__) && !defined(NEED_LIBSUNMATH)
+
+#ifndef isnan
+# define isnan(x) \
+    (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
+     : sizeof (x) == sizeof (double) ? isnan_d (x) \
+     : isnan_f (x))
+static inline int isnan_f  (float       x) { return x != x; }
+static inline int isnan_d  (double      x) { return x != x; }
+static inline int isnan_ld (long double x) { return x != x; }
+#endif
+
+#ifndef isinf
+# define isinf(x) \
+    (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
+     : sizeof (x) == sizeof (double) ? isinf_d (x) \
+     : isinf_f (x))
+static inline int isinf_f  (float       x) { return isnan (x - x); }
+static inline int isinf_d  (double      x) { return isnan (x - x); }
+static inline int isinf_ld (long double x) { return isnan (x - x); }
+#endif
+#endif
+
 typedef float float32;
 typedef double float64;
 #ifdef FLOATX80