Date: Fri, 24 Dec 2004 06:40:23 GMT From: Dan Nelson <dnelson@allantgroup.com> To: freebsd-sparc64@FreeBSD.org Subject: Re: sparc64/73782: libc is missing the _Qp_cmp function Message-ID: <200412240640.iBO6eNgA071736@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR sparc64/73782; it has been noted by GNATS.
From: Dan Nelson <dnelson@allantgroup.com>
To: "R. Tyler Ballance" <tyler@tamu.edu>
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: sparc64/73782: libc is missing the _Qp_cmp function
Date: Fri, 24 Dec 2004 00:37:34 -0600
In the last episode (Dec 22), R. Tyler Ballance said:
> Isn't the functionality of the _Qp_cmp function from NetBSD done by
> _our Qp_f function (found on line 90 of fpu_qp.c)
Probably. It looks like _Qp_cmp does them all in one function, and can
also tell you whether two floads are unordered relative to each other.
If gcc can be told to never emit calls to _qp_cmp, maybe it won't be
needed.
Here's a testcase that at least on Solaris 9/gcc-3.4.2 generates a call
_to Qp_cmp. The C99 unordered() function from <math.h> is probably
what is generating the call in Pike.
main()
{
long double a, b;
return __builtin_isunordered(a,b);
}
> Along those lines, how come that file defines the macro _QP_CMP and
> then the function 'int _Qp_f(u_int *a, u_int *b)' from what I can
> tell by glancing over the code, it's got the functionalty of the
> _Qp_cmp function, why is it not named as such (especially if it's
> defined in the sparc standard, i'm looking for it in there now)
That's just a macro definition; it pastes the first argument of the
macro onto "_Qp_f", so _QP_CMP(eq,0,FCC_EQ) generates a function named
_Qp_feq.
--
Dan Nelson
dnelson@allantgroup.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200412240640.iBO6eNgA071736>
