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>