sparc64/73782: libc is missing the _Qp_cmp function

Dan Nelson dnelson at allantgroup.com
Thu Dec 23 22:40:23 PST 2004


The following reply was made to PR sparc64/73782; it has been noted by GNATS.

From: Dan Nelson <dnelson at allantgroup.com>
To: "R. Tyler Ballance" <tyler at tamu.edu>
Cc: freebsd-gnats-submit at 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 at allantgroup.com


More information about the freebsd-sparc64 mailing list