This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Ping Re: soft-fp quad.h patch
- From: Jakub Jelinek <jakub at redhat dot com>
- To: "Joseph S. Myers" <joseph at codesourcery dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Mon, 19 Mar 2007 12:27:43 +0100
- Subject: Re: Ping Re: soft-fp quad.h patch
- References: <Pine.LNX.4.64.0606072150230.26638@digraph.polyomino.org.uk> <Pine.LNX.4.64.0703182052560.2857@digraph.polyomino.org.uk>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sun, Mar 18, 2007 at 08:56:15PM +0000, Joseph S. Myers wrote:
> Ping. Could someone review this patch for bug 2831
> <http://sourceware.org/ml/libc-alpha/2006-06/msg00011.html>? Jakub, you
> reviewed the last soft-fp patches to go in.
Is there any reason why you want unsigned long long FP_W_TYPE rather than
just unsigned long?
If yes, then your patch is certainly not sufficient:
grep -w long soft-fp/*.h
soft-fp/double.h: unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
soft-fp/double.h: unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
soft-fp/extended.h: unsigned long pad1 : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long pad2 : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
soft-fp/extended.h: unsigned long sign : 1;
soft-fp/extended.h: unsigned long exp : _FP_EXPBITS_E;
soft-fp/extended.h: unsigned long frac1 : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long frac1 : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long pad : (_FP_W_TYPE_SIZE - 1 - _FP_EXPBITS_E);
soft-fp/extended.h: unsigned long frac : _FP_W_TYPE_SIZE;
soft-fp/extended.h: unsigned long frac : _FP_W_TYPE_SIZE;
soft-fp/op-2.h: _e240 = (double)(long)(X##_f0 & 0xffffff); \
soft-fp/op-2.h: _j240 = (double)(long)(Y##_f0 & 0xffffff); \
soft-fp/op-2.h: _d240 = (double)(long)((X##_f0 >> 24) & 0xffffff); \
soft-fp/op-2.h: _i240 = (double)(long)((Y##_f0 >> 24) & 0xffffff); \
soft-fp/op-2.h: _c240 = (double)(long)(((X##_f1 << 16) & 0xffffff) | (X##_f0 >> 48)); \
soft-fp/op-2.h: _h240 = (double)(long)(((Y##_f1 << 16) & 0xffffff) | (Y##_f0 >> 48)); \
soft-fp/op-2.h: _b240 = (double)(long)((X##_f1 >> 8) & 0xffffff); \
soft-fp/op-2.h: _g240 = (double)(long)((Y##_f1 >> 8) & 0xffffff); \
soft-fp/op-2.h: _a240 = (double)(long)(X##_f1 >> 32); \
soft-fp/op-2.h: _f240 = (double)(long)(Y##_f1 >> 32); \
soft-fp/op-common.h: else if (sizeof (_FP_W_TYPE) == sizeof (unsigned long)) \
soft-fp/op-common.h: else if (sizeof (_FP_W_TYPE) == sizeof (unsigned long long)) \
soft-fp/quad.h: unsigned long frac3 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0)-(_FP_W_TYPE_SIZE * 3);
soft-fp/quad.h: unsigned long frac2 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac1 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac1 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac2 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac3 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0)-(_FP_W_TYPE_SIZE * 3);
soft-fp/quad.h: unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac0 : _FP_W_TYPE_SIZE;
soft-fp/quad.h: unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
>From this, op-common.h's FP_CLZ is ok, and so is op-2.h, but I believe either all unsigned long
occurrences in extended.h, quad.h, double.h, or at least those for _FP_W_TYPE_SIZE >= 64
should be _FP_W_TYPE, not just those in quad.h.
Jakub