Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* ARM float/double conversion
@ 2001-12-05  6:54 Timothy Wall
  2001-12-05  8:05 ` Andrew Cagney
  0 siblings, 1 reply; 4+ messages in thread
From: Timothy Wall @ 2001-12-05  6:54 UTC (permalink / raw)
  To: gdb

In gdb/doublest.c, there is some conversion done for
floatformat_littlebyte_bigword (currently only used by ARM):

          longswaps = fmt->totalsize / FLOATFORMAT_CHAR_BIT;
          longswaps >>= 3;

          while (longswaps-- > 0)
            {
              /* This is ugly, but efficient */
              *swapout++ = swapin[4];
              *swapout++ = swapin[5];
              *swapout++ = swapin[6];
              *swapout++ = swapin[7];
              *swapout++ = swapin[0];
              *swapout++ = swapin[1];
              *swapout++ = swapin[2];
              *swapout++ = swapin[3];
              swapin += 8;
            }

What's odd is that fmt->totalsize can be either 64 or 96, based on the formats
defined in libiberty/floatformat.c.  For either case, longswaps will be 1, so
I don't understand why
this code was "generalized".  I assume that the extended double on the ARM has
just the
first two 32-bit words swapped.

I actually need to extend this code to do similar swaps for a 32-bit float,
and was going to
"generalize" to accommodate that (little-endian, bigword, word size is 16
bits).

T.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-12-05 17:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-12-05  6:54 ARM float/double conversion Timothy Wall
2001-12-05  8:05 ` Andrew Cagney
2001-12-05  8:16   ` Richard Earnshaw
2001-12-05  9:36     ` Andrew Cagney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox