1998-11-23  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/fpu/bits/mathinline.h: Add optimizations for lrint
	and llrint.
This commit is contained in:
Ulrich Drepper 1998-11-23 12:54:51 +00:00
parent a42134a70b
commit 3312745968
3 changed files with 63 additions and 1 deletions

View File

@ -1,3 +1,8 @@
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

10
FAQ
View File

@ -126,6 +126,7 @@ please let me know.
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
@ -1275,6 +1276,15 @@ versions defined this but it was an error since it does not make much sense
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.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

View File

@ -565,6 +565,52 @@ __inline_mathcode3 (fma, __x, __y, __z, return (__x * __y) + __z)
__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
@ -572,12 +618,13 @@ __inline_mathop(rint, "frndint")
__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)