+1998-11-23 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/i386/fpu/bits/mathinline.h: Add optimizations for lrint
+ and llrint.
+
1998-11-21 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/sysv/linux/netinet/ip_fw.h: Removed. There are too
3.14. The pow() inline function I get when including <math.h> is broken.
I get segmentation faults when I run the program.
3.15. The sys/sem.h file lacks the definition of `union semun'.
+3.16. Why has <netinet/ip_fw.h> disappeared?
4. Miscellaneous
when thinking about it. The standards describing the System V IPC functions
define it this way and therefore programs must be adopted.
+
+3.16. Why has <netinet/ip_fw.h> disappeared?
+
+{AJ} The corresponding Linux kernel data structures and constants are
+totally different in Linux 2.0 and Linux 2.1. This situation has to be
+taken care in user programs using the firewall structures and therefore
+those programs (ipfw is AFAIK the only one) should deal with this problem
+themselves.
+
\f
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__inline_mathop(rint, "frndint")
+#define __lrint_code \
+ long int __lrintres; \
+ __asm__ __volatile__ \
+ ("fistpl %0" \
+ : "=m" (__lrintres) : "t" (__x) : "st"); \
+ return __lrintres
+__MATH_INLINE long int
+lrintf (float __x)
+{
+ __lrint_code;
+}
+__MATH_INLINE long int
+lrint (double __x)
+{
+ __lrint_code;
+}
+__MATH_INLINE long int
+lrintl (long double __x)
+{
+ __lrint_code;
+}
+#undef __lrint_code
+
+#define __llrint_code \
+ long long int __llrintres; \
+ __asm__ __volatile__ \
+ ("fistpll %0" \
+ : "=m" (__llrintres) : "t" (__x) : "st"); \
+ return __llrintres
+__MATH_INLINE long long int
+llrintf (float __x)
+{
+ __llrint_code;
+}
+__MATH_INLINE long long int
+llrint (double __x)
+{
+ __llrint_code;
+}
+__MATH_INLINE long long int
+llrintl (long double __x)
+{
+ __llrint_code;
+}
+#undef __llrint_code
+
#endif
__inline_mathcode2 (drem, __x, __y, \
register double __value; \
+ register int __clobbered; \
__asm __volatile__ \
("1: fprem1\n\t" \
"fstsw %%ax\n\t" \
"sahf\n\t" \
"jp 1b" \
- : "=t" (__value) : "0" (__x), "u" (__y) : "ax", "cc"); \
+ : "=t" (__value), "=&a" (__clobbered) : "0" (__x), "u" (__y) : "cc"); \
return __value)