* Re: [rfc] Add some more floatformat types ....
[not found] <3B76164B.9060908@cygnus.com>
@ 2001-08-16 11:36 ` Andrew Cagney
2001-08-16 16:55 ` Mark Kettenis
2001-08-21 6:41 ` Fernando Nasser
1 sibling, 1 reply; 15+ messages in thread
From: Andrew Cagney @ 2001-08-16 11:36 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches, binutils
Attatched is a revised patch for:
> Hello,
>
> The attached adds the floatformats:
>
> floatformat_i387_ext80;
> floatformat_i387_ext96;
>
> Explicitly sized x86 float formats.
>
> Depending on where/how it is stored,
> an i386 extended could use 80 (10 bytes)
> or 96 (12 bytes).
>
> floatformat_m88110_harris_ext;
>
> This eliminates a build hack.
>
> Prior to this tweek, a compile time
> option was deciding the layout of the m88110
> floatformat. I think that was just wrong.
>
> floatformat_arm_ext_big;
> floatformat_arm_ext_littlebyte_bigword;
>
> Like i387_ext but with byte order.
>
> The arm can be big or little endian.
> arm-ext little-byte big-word
> is my interpretation of how the LE-arm
> lays an FP value out in memory.
> The lack of this has me puzzled, I'm
> suprised no one added it earlier :-/
>
> Given that these files are only used by opcodes and GDB, and that this change (ignoring the harris bit) has no effect, I'm planning in simply checking it in (via GCC) in a few days.
>
> Comments?
>
> Andrew
It also adds
floatformat_ia64_ext128
An 82bit IA64 floating point packed
into a 128 bit integer.
I'll check it in ``tomorrow''.
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-16 11:36 ` [rfc] Add some more floatformat types Andrew Cagney
@ 2001-08-16 16:55 ` Mark Kettenis
2001-08-16 20:10 ` Andrew Cagney
0 siblings, 1 reply; 15+ messages in thread
From: Mark Kettenis @ 2001-08-16 16:55 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches, binutils
Andrew Cagney <ac131313@cygnus.com> writes:
> > The attached adds the floatformats:
> >
> > floatformat_i387_ext80;
> > floatformat_i387_ext96;
> >
> > Explicitly sized x86 float formats.
> >
> > Depending on where/how it is stored,
> > an i386 extended could use 80 (10 bytes)
> > or 96 (12 bytes).
Andrew, I thought I (implicitly) raised some objections to this
change. See
http://sources.redhat.com/ml/gdb/2001-07/msg00401.html
To clarify things a bit: The ISA (that stands for Istruction Set
Architecture doesn't it) defines a single 80-bit extended floating
point format. On top of that floating point format most ABI's build a
a 96-bit extended floating point type (e.g. GCC's `long double'). I'd
like GDB to somehow maintain this concept, by *not* introducing the
floatformat_i387_ext80 and floatformat_i387_ext96 types you propose.
Instead we should make the distinction at the builtin_type_* level.
By making the 80-bit and 96-bit builtin_type_* variants share the same
underlying floatformat_* variable, we can easiliy check whether two
floating point formats on the ABI level share the same encoding on the
ISA level.
Something similar might hold for IA-64.
The other two fixes seem obvious to me.
Mark
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-16 16:55 ` Mark Kettenis
@ 2001-08-16 20:10 ` Andrew Cagney
2001-08-17 6:08 ` Mark Kettenis
0 siblings, 1 reply; 15+ messages in thread
From: Andrew Cagney @ 2001-08-16 20:10 UTC (permalink / raw)
To: Mark Kettenis; +Cc: gdb-patches
[I dropped binutils]
> Andrew Cagney <ac131313@cygnus.com> writes:
>
>
>> > The attached adds the floatformats:
>> >
>> > floatformat_i387_ext80;
>> > floatformat_i387_ext96;
>> >
>> > Explicitly sized x86 float formats.
>> >
>> > Depending on where/how it is stored,
>> > an i386 extended could use 80 (10 bytes)
>> > or 96 (12 bytes).
>
>
> Andrew, I thought I (implicitly) raised some objections to this
> change. See
>
> http://sources.redhat.com/ml/gdb/2001-07/msg00401.html
I am thinking of this as a separate but related patch.
Here I'm only trying to define all known ways that a floating point
value can be stored in memory.
> To clarify things a bit: The ISA (that stands for Istruction Set
> Architecture doesn't it) defines a single 80-bit extended floating
> point format. On top of that floating point format most ABI's build a
> a 96-bit extended floating point type (e.g. GCC's `long double'). I'd
> like GDB to somehow maintain this concept, by *not* introducing the
> floatformat_i387_ext80 and floatformat_i387_ext96 types you propose.
> Instead we should make the distinction at the builtin_type_* level.
> By making the 80-bit and 96-bit builtin_type_* variants share the same
> underlying floatformat_* variable, we can easiliy check whether two
> floating point formats on the ABI level share the same encoding on the
> ISA level.
I think floatformat is something that exactly describes how an ISA
stores a floating-point value in memory. Remember, GDB stores register
values in memory.
The IA-64, for instance, has an 82 bit floating-point register. That
register is always represented in memory as 128 bits. Consequently, my
proposal includes ia64_ext128 and not ia64_ext82.
Similarly, the ARM has an 80 bit floating point register. That value is
stored in memory as using 96 bits ordered as either big or
littlebyte-bigword endian. The extra 16 bits are squeezed into the
middle of that memory value. Hence, arm_ext_big and
arm_ext_littlebyte_bigword. (I should probably make those ext96_...?)
Looking at the i387, I'd tend to suspect that it has been assuming a few
too many things. How often, for instance does the code sequence:
/* clear the entire 96 bit buffer. */
memset (size of type);
/* now store the float in the first 80 bits. */
doublest_to_floatformat (i387_ext);
appear? I think this code just happening to work because i387 is a
little endian architecture. All other targets (especially big endian
ones) have instead used a float-format that exactly described the full
96 bits of memory (big endian ones have little choice in this matter :-).
Looking in more detail at the i387/i386. I think, eventually, the
following changes can be made:
register_virtual_type(fp) return a type that specifies i387_ext80. This
exactly describes the contents of the floating-point register buffer.
register_convert_to/from_virtual() use the floatformat conversions to
convert robustly convert between the registers i387_ext80 and the
requested float-format (typically i387_ext96)
floatformat for long-double on an i387 be set to i387_ext96.
For the short term, the floatformat code could also be tweeked to
recognize things like ext80 and ext96 as equivalent (provided things are
padded correctly). Someone might even get carried away and tweek it to
recognize ieee_double_big as byte swapped ieee_double_little ....
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-16 20:10 ` Andrew Cagney
@ 2001-08-17 6:08 ` Mark Kettenis
2001-08-17 9:13 ` Andrew Cagney
0 siblings, 1 reply; 15+ messages in thread
From: Mark Kettenis @ 2001-08-17 6:08 UTC (permalink / raw)
To: ac131313; +Cc: gdb-patches
Date: Thu, 16 Aug 2001 23:09:46 -0400
From: Andrew Cagney <ac131313@cygnus.com>
> Andrew Cagney <ac131313@cygnus.com> writes:
>
>
>> > The attached adds the floatformats:
>> >
>> > floatformat_i387_ext80;
>> > floatformat_i387_ext96;
>> >
>> > Explicitly sized x86 float formats.
>> >
>> > Depending on where/how it is stored,
>> > an i386 extended could use 80 (10 bytes)
>> > or 96 (12 bytes).
>
>
> Andrew, I thought I (implicitly) raised some objections to this
> change. See
>
> http://sources.redhat.com/ml/gdb/2001-07/msg00401.html
I am thinking of this as a separate but related patch.
Here I'm only trying to define all known ways that a floating point
value can be stored in memory.
That's fine, but I don't think we should introduce more types than we
absolutely need. And I think your patch does introduce too much new
types. I also think that when we cut down the number of
floating-point memory layouts we don't need the digits appended to them.
> To clarify things a bit: The ISA (that stands for Istruction Set
> Architecture doesn't it) defines a single 80-bit extended floating
> point format. On top of that floating point format most ABI's build a
> a 96-bit extended floating point type (e.g. GCC's `long double'). I'd
> like GDB to somehow maintain this concept, by *not* introducing the
> floatformat_i387_ext80 and floatformat_i387_ext96 types you propose.
> Instead we should make the distinction at the builtin_type_* level.
> By making the 80-bit and 96-bit builtin_type_* variants share the same
> underlying floatformat_* variable, we can easiliy check whether two
> floating point formats on the ABI level share the same encoding on the
> ISA level.
I think floatformat is something that exactly describes how an ISA
stores a floating-point value in memory. Remember, GDB stores register
values in memory.
Right!
The IA-64, for instance, has an 82 bit floating-point register. That
register is always represented in memory as 128 bits. Consequently, my
proposal includes ia64_ext128 and not ia64_ext82.
So we only need a single floatformat_ia64_ext. Why not keep the
floatformat_ia64_ext that we already have in ia64-tdep.c and move it
to ../libiberty/floatformat.c?
Similarly, the ARM has an 80 bit floating point register. That value is
stored in memory as using 96 bits ordered as either big or
littlebyte-bigword endian. The extra 16 bits are squeezed into the
middle of that memory value. Hence, arm_ext_big and
arm_ext_littlebyte_bigword. (I should probably make those ext96_...?)
So indeed we need those two different descriptions for the ARM.
Looking at the i387, I'd tend to suspect that it has been assuming a few
too many things. How often, for instance does the code sequence:
/* clear the entire 96 bit buffer. */
memset (size of type);
/* now store the float in the first 80 bits. */
doublest_to_floatformat (i387_ext);
appear? I think this code just happening to work because i387 is a
little endian architecture. All other targets (especially big endian
ones) have instead used a float-format that exactly described the full
96 bits of memory (big endian ones have little choice in this matter :-).
The i386/i387 ISA always stores values in memory as an 80-bit
quantity. All floating point instructions are defined to operate on
80-bit memory operands. As far as the ISA concerned there are no
96-bit or 128-bit floating point types. That's why I think we
shouldn't introduce the floatformat_i387_ext96 type you're proposing,
and just keep the floatformat_i387_ext we already have. I think
pretending that there are several different ways to store an extended
floating point number, would be wrong.
The confusion is caused by the dominant C ABI where `sizeof (long
double)' is 12. That's why we define TARGET_LONG_DOUBLE_BITS to 96.
That's what the coding fragment you see above is all about. It is
perfectly possible to create a compiler on the i386 where `sizeof
(long double)' would be 10. In fact there is a PASCAL compiler that
does exactly that. But this doesn't change the fact that the
underlying floating point layout is the same 80-bit format defined by
the ISA.
Looking in more detail at the i387/i386. I think, eventually, the
following changes can be made:
register_virtual_type(fp) return a type that specifies i387_ext80. This
exactly describes the contents of the floating-point register buffer.
I would simply introduce the builtin_type_i387_ext for the 80-bit
floating point type and keep builtin_type_long_double for the 96-bit
floating point type, both based on floatformat_i387_ext.
register_virtual_type would then indeed return builtin_type_i387_ext
for the floating-point registers.
register_convert_to/from_virtual() use the floatformat conversions to
convert robustly convert between the registers i387_ext80 and the
requested float-format (typically i387_ext96)
Yep.
floatformat for long-double on an i387 be set to i387_ext96.
I'd rather leave things as they are now.
For the short term, the floatformat code could also be tweeked to
recognize things like ext80 and ext96 as equivalent (provided things are
padded correctly). Someone might even get carried away and tweek it to
recognize ieee_double_big as byte swapped ieee_double_little ....
Hmm. The relevant IEEE standard leaves some things undfined, such as
details about denormals and NaNs, and I think that simply byte
swapping could lead to numbers that the host and/or target doesn't
understand.
Mark
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 6:08 ` Mark Kettenis
@ 2001-08-17 9:13 ` Andrew Cagney
2001-08-17 9:40 ` Kevin Buettner
2001-08-17 12:32 ` Mark Kettenis
0 siblings, 2 replies; 15+ messages in thread
From: Andrew Cagney @ 2001-08-17 9:13 UTC (permalink / raw)
To: Mark Kettenis, Kevin Buettner; +Cc: gdb-patches
> The i386/i387 ISA always stores values in memory as an 80-bit
> quantity. All floating point instructions are defined to operate on
> 80-bit memory operands. As far as the ISA concerned there are no
> 96-bit or 128-bit floating point types. That's why I think we
> shouldn't introduce the floatformat_i387_ext96 type you're proposing,
> and just keep the floatformat_i387_ext we already have. I think
> pretending that there are several different ways to store an extended
> floating point number, would be wrong.
>
> The confusion is caused by the dominant C ABI where `sizeof (long
> double)' is 12. That's why we define TARGET_LONG_DOUBLE_BITS to 96.
> That's what the coding fragment you see above is all about. It is
> perfectly possible to create a compiler on the i386 where `sizeof
> (long double)' would be 10. In fact there is a PASCAL compiler that
> does exactly that. But this doesn't change the fact that the
> underlying floating point layout is the same 80-bit format defined by
> the ISA.
Ah, ok, now I understand. So this means the original i386 did a 4:4:2
memory transfer when storing an extended float (long sigh)? The extra 2
bytes and the end of the `long double' always remaining undefined (long
double sigh)? I've been hacking sane hardware for too long.
I think I'll clarify the `struct type . length' to:
``Length of storage for a value of this type. This is length of the type
and not the length of the value that resides within the type. An
i386-ext floating-point value, for instance, only occupies 80 bits of
what is typically a 96 bit `long double'.''
I'll drop the i387_ext from the list of things to add to floatformat.h.
> I would simply introduce the builtin_type_i387_ext for the 80-bit
> floating point type and keep builtin_type_long_double for the 96-bit
> floating point type, both based on floatformat_i387_ext.
> register_virtual_type would then indeed return builtin_type_i387_ext
> for the floating-point registers.
Ok. The key thing here being that GDB gets two instead of one i387_ext
`struct type' (because the existing builtin_type_long_double can't
correctly describe an i387 register) which is really all I'm trying to
achieve.
--
> The IA-64, for instance, has an 82 bit floating-point register. That
> register is always represented in memory as 128 bits.
Consequently, my
> proposal includes ia64_ext128 and not ia64_ext82.
>
> So we only need a single floatformat_ia64_ext. Why not keep the
> floatformat_ia64_ext that we already have in ia64-tdep.c and move it
> to ../libiberty/floatformat.c?
Dam! You spotted my cunning plan :-) That is one of the next steps.
In the light of the exchange above, a double check on this one is in order.
Kevin, am I correct in saying that the ia64 reads/writes 16 bytes when
loading/storing an ia64_ext?
Mark, this meaning that the ia64_ext should have a size of 128 and not
82 as it currently does in ia64-tdep.c?
enjoy,
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 9:13 ` Andrew Cagney
@ 2001-08-17 9:40 ` Kevin Buettner
2001-08-17 10:12 ` Andrew Cagney
2001-08-17 12:32 ` Mark Kettenis
1 sibling, 1 reply; 15+ messages in thread
From: Kevin Buettner @ 2001-08-17 9:40 UTC (permalink / raw)
To: Andrew Cagney, Mark Kettenis, Kevin Buettner; +Cc: gdb-patches
On Aug 17, 12:12pm, Andrew Cagney wrote:
> > The IA-64, for instance, has an 82 bit floating-point register. That
> > register is always represented in memory as 128 bits.
> Consequently, my
> > proposal includes ia64_ext128 and not ia64_ext82.
> >
> > So we only need a single floatformat_ia64_ext. Why not keep the
> > floatformat_ia64_ext that we already have in ia64-tdep.c and move it
> > to ../libiberty/floatformat.c?
>
> Dam! You spotted my cunning plan :-) That is one of the next steps.
> In the light of the exchange above, a double check on this one is in order.
>
> Kevin, am I correct in saying that the ia64 reads/writes 16 bytes when
> loading/storing an ia64_ext?
Yes. But I'd rephrase it as... The IA-64 reads/writes 16 bytes when
loading/storing the 82-bit floating point register format.
The fly in the ointment is that the IA-64 also has a quad precision
real type whose width is 128 bits (1 bit sign, 15 bit exponent,
112 bit significand).
> Mark, this meaning that the ia64_ext should have a size of 128 and not
> 82 as it currently does in ia64-tdep.c?
In order to avoid confusion, I think it might be better for the name
to reflect the actual number of bits used in the memory container as
well as the width of the memory container. Maybe something along the
lines of ia64_reg82_mem128? Perhaps something similar could also be
done of x86?
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 9:40 ` Kevin Buettner
@ 2001-08-17 10:12 ` Andrew Cagney
2001-08-17 11:12 ` Kevin Buettner
0 siblings, 1 reply; 15+ messages in thread
From: Andrew Cagney @ 2001-08-17 10:12 UTC (permalink / raw)
To: Kevin Buettner; +Cc: Mark Kettenis, gdb-patches
>
> Yes. But I'd rephrase it as... The IA-64 reads/writes 16 bytes when
> loading/storing the 82-bit floating point register format.
Ok.
> The fly in the ointment is that the IA-64 also has a quad precision
> real type whose width is 128 bits (1 bit sign, 15 bit exponent,
> 112 bit significand).
Ulgh! So we now need two IA-64 floating point types, any suggestion for
a name? Does:
ia64_ext
ia64_quad
look ok (and please no one look at the VAX :-).
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 10:12 ` Andrew Cagney
@ 2001-08-17 11:12 ` Kevin Buettner
2001-08-17 12:19 ` Mark Kettenis
2001-08-17 12:30 ` Andrew Cagney
0 siblings, 2 replies; 15+ messages in thread
From: Kevin Buettner @ 2001-08-17 11:12 UTC (permalink / raw)
To: Andrew Cagney, Kevin Buettner; +Cc: Mark Kettenis, gdb-patches
On Aug 17, 1:12pm, Andrew Cagney wrote:
> > The fly in the ointment is that the IA-64 also has a quad precision
> > real type whose width is 128 bits (1 bit sign, 15 bit exponent,
> > 112 bit significand).
>
> Ulgh! So we now need two IA-64 floating point types, any suggestion for
> a name? Does:
>
> ia64_ext
> ia64_quad
>
> look ok (and please no one look at the VAX :-).
Well, actually, there are a total of seven data types that the IA-64
supports. (However, two of them are integer types.) From section 5.1
of the Intel IA-64 Architecture Software Developer's Manual; Volume 1:
IA-64 Application Architecture:
Six data types are supported directly: single, double,
double-extended real (IEEE real types); 64-bit signed integer,
64-bit unsigned integer, and the 82-bit floating point register
format. A "Parallel FP" format where a pair of IEEE single
precision values occupy a floating point registers significand is
also supported. A seventh data type, IEEE-style quad-precision,
is supported in software routines. A future architecture
extension may include additional support for the quad-precision
real type.
Anyway, my objection to using ``ia64_ext'' for the 82-bit register
type stems from the fact that this name would probably be more
appropriate for the 80-bit double-extended type. Especially since
this is the convention already used for x86. How 'bout this instead?
ia64_ext - 80-bit double-extended
ia64_reg - 82-bit fp register
ia64_quad - 128-bit quad-precision
Online documentation on the IA-64 floating point formats may be found at:
http://devresource.hp.com/devresource/Docs/Refs/IA64ISA/fp_program4.html
Roughly the same material may also be found in chapter 5 of the
following PDF file:
ftp://download.intel.com/design/IA-64/Downloads/24531702s.pdf
Kevin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 11:12 ` Kevin Buettner
@ 2001-08-17 12:19 ` Mark Kettenis
2001-08-17 12:34 ` Andrew Cagney
2001-08-17 12:30 ` Andrew Cagney
1 sibling, 1 reply; 15+ messages in thread
From: Mark Kettenis @ 2001-08-17 12:19 UTC (permalink / raw)
To: kevinb; +Cc: ac131313, kevinb, gdb-patches
Date: Fri, 17 Aug 2001 11:11:53 -0700
From: Kevin Buettner <kevinb@cygnus.com>
[snip]
Anyway, my objection to using ``ia64_ext'' for the 82-bit register
type stems from the fact that this name would probably be more
appropriate for the 80-bit double-extended type. Especially since
this is the convention already used for x86. How 'bout this instead?
ia64_ext - 80-bit double-extended
ia64_reg - 82-bit fp register
ia64_quad - 128-bit quad-precision
I was going to propose exactly the same :-). FYI Andrew, the ia64_ext
type is stored in 10 bytes of memory, the ia64_reg type is stored in
16 bytes of memory and ia64_quad is also stored in 16 bytes of memory.
It seems that ia64_ext would be identical to i387_ext, so we could
simply
#define floatformat_ia64_ext floatformat_i387_ext
in floatformat.h.
Mark
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 11:12 ` Kevin Buettner
2001-08-17 12:19 ` Mark Kettenis
@ 2001-08-17 12:30 ` Andrew Cagney
1 sibling, 0 replies; 15+ messages in thread
From: Andrew Cagney @ 2001-08-17 12:30 UTC (permalink / raw)
To: Kevin Buettner; +Cc: Mark Kettenis, gdb-patches
> ia64_ext - 80-bit double-extended
> ia64_reg - 82-bit fp register
> ia64_quad - 128-bit quad-precision
>
>
I'm not so sure. I think the first is identical to i387_ext so is
redundant. floatformat appears to have adopted the convention of using
ARCH_ext to specify the format of ARCH's FP-register when spilling to
memory.
Andrew
(dig dig, outch! IA64 defines big-endian i387_ext! Lets just ignore that
one for now :-)
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 9:13 ` Andrew Cagney
2001-08-17 9:40 ` Kevin Buettner
@ 2001-08-17 12:32 ` Mark Kettenis
1 sibling, 0 replies; 15+ messages in thread
From: Mark Kettenis @ 2001-08-17 12:32 UTC (permalink / raw)
To: ac131313; +Cc: kevinb, gdb-patches
Date: Fri, 17 Aug 2001 12:12:48 -0400
From: Andrew Cagney <ac131313@cygnus.com>
Ah, ok, now I understand. So this means the original i386 did a 4:4:2
memory transfer when storing an extended float (long sigh)? The extra 2
bytes and the end of the `long double' always remaining undefined (long
double sigh)? I've been hacking sane hardware for too long.
I think it shows here that the predecessor of the i386 was a 16-bit
processor.
I think I'll clarify the `struct type . length' to:
``Length of storage for a value of this type. This is length of the type
and not the length of the value that resides within the type. An
i386-ext floating-point value, for instance, only occupies 80 bits of
what is typically a 96 bit `long double'.''
Sounds good to me. The key point here is that `struct type . length'
should match the debug info about the type.
I'll drop the i387_ext from the list of things to add to floatformat.h.
I assume you mean that you'll leave it as it is now ;-).
> I would simply introduce the builtin_type_i387_ext for the 80-bit
> floating point type and keep builtin_type_long_double for the 96-bit
> floating point type, both based on floatformat_i387_ext.
> register_virtual_type would then indeed return builtin_type_i387_ext
> for the floating-point registers.
Ok. The key thing here being that GDB gets two instead of one i387_ext
`struct type' (because the existing builtin_type_long_double can't
correctly describe an i387 register) which is really all I'm trying to
achieve.
Yep.
--
> The IA-64, for instance, has an 82 bit floating-point register. That
> register is always represented in memory as 128 bits.
Consequently, my
> proposal includes ia64_ext128 and not ia64_ext82.
>
> So we only need a single floatformat_ia64_ext. Why not keep the
> floatformat_ia64_ext that we already have in ia64-tdep.c and move it
> to ../libiberty/floatformat.c?
Dam! You spotted my cunning plan :-) That is one of the next steps.
In the light of the exchange above, a double check on this one is in order.
Seems the ia64 stuff is even more braindamaged than the i386 stuff.
Mark, this meaning that the ia64_ext should have a size of 128 and not
82 as it currently does in ia64-tdep.c?
I think so. (But I also think we should rename it to ia64_reg as
Kevin proposes).
Mark
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 12:19 ` Mark Kettenis
@ 2001-08-17 12:34 ` Andrew Cagney
2001-08-17 12:51 ` Kevin Buettner
0 siblings, 1 reply; 15+ messages in thread
From: Andrew Cagney @ 2001-08-17 12:34 UTC (permalink / raw)
To: Mark Kettenis; +Cc: kevinb, gdb-patches
> Date: Fri, 17 Aug 2001 11:11:53 -0700
> From: Kevin Buettner <kevinb@cygnus.com>
>
> [snip]
>
> Anyway, my objection to using ``ia64_ext'' for the 82-bit register
> type stems from the fact that this name would probably be more
> appropriate for the 80-bit double-extended type. Especially since
> this is the convention already used for x86. How 'bout this instead?
>
> ia64_ext - 80-bit double-extended
> ia64_reg - 82-bit fp register
> ia64_quad - 128-bit quad-precision
>
> I was going to propose exactly the same [:-)] . FYI Andrew, the ia64_ext
> type is stored in 10 bytes of memory, the ia64_reg type is stored in
> 16 bytes of memory and ia64_quad is also stored in 16 bytes of memory.
To narrow down my reservation here ``reg'' makes me think of a register,
and part of the original was over floatformat describing how a register
is stored in memory and not what a register looks like.
Another would be ia64_spill.
> It seems that ia64_ext would be identical to i387_ext, so we could
> simply
>
> #define floatformat_ia64_ext floatformat_i387_ext
>
> in floatformat.h.
Or just use i387_ext, I don't think it needs re-defining.
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 12:34 ` Andrew Cagney
@ 2001-08-17 12:51 ` Kevin Buettner
2001-08-18 12:04 ` Andrew Cagney
0 siblings, 1 reply; 15+ messages in thread
From: Kevin Buettner @ 2001-08-17 12:51 UTC (permalink / raw)
To: Andrew Cagney, Mark Kettenis; +Cc: kevinb, gdb-patches
On Aug 17, 3:34pm, Andrew Cagney wrote:
> > ia64_reg - 82-bit fp register
[...]
> To narrow down my reservation here ``reg'' makes me think of a register,
> and part of the original was over floatformat describing how a register
> is stored in memory and not what a register looks like.
>
> Another would be ia64_spill.
ia64_spill is okay with me.
Kevin
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
2001-08-17 12:51 ` Kevin Buettner
@ 2001-08-18 12:04 ` Andrew Cagney
0 siblings, 0 replies; 15+ messages in thread
From: Andrew Cagney @ 2001-08-18 12:04 UTC (permalink / raw)
To: Kevin Buettner, Mark Kettenis; +Cc: gdb-patches
> On Aug 17, 3:34pm, Andrew Cagney wrote:
>
>
>> > ia64_reg - 82-bit fp register
>
> [...]
>
>> To narrow down my reservation here ``reg'' makes me think of a register,
>> and part of the original was over floatformat describing how a register
>> is stored in memory and not what a register looks like.
>>
>> Another would be ia64_spill.
>
>
> ia64_spill is okay with me.
>
> Kevin
I should probably also include the big endian case, the below adds:
m88110_harris_ext
arm_ext_big
arm_ext_littlebyte_bigword
ia64_spill_big
ia64_spill_little
ia64_quad_big
ia64_quad_little
No promises on the last two being correct - I think I read the manual
right :-)
Someone else can add i387_ext_big ....
Ok?
Andrew
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [rfc] Add some more floatformat types ....
[not found] <3B76164B.9060908@cygnus.com>
2001-08-16 11:36 ` [rfc] Add some more floatformat types Andrew Cagney
@ 2001-08-21 6:41 ` Fernando Nasser
1 sibling, 0 replies; 15+ messages in thread
From: Fernando Nasser @ 2001-08-21 6:41 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches, binutils
Andrew Cagney wrote:
>
> floatformat_arm_ext_big;
> floatformat_arm_ext_littlebyte_bigword;
>
> Like i387_ext but with byte order.
>
> The arm can be big or little endian.
> arm-ext little-byte big-word
> is my interpretation of how the LE-arm
> lays an FP value out in memory.
> The lack of this has me puzzled, I'm
> suprised no one added it earlier :-/
>
I don't have any objection.
--
Fernando Nasser
Red Hat - Toronto E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2001-08-21 6:41 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <3B76164B.9060908@cygnus.com>
2001-08-16 11:36 ` [rfc] Add some more floatformat types Andrew Cagney
2001-08-16 16:55 ` Mark Kettenis
2001-08-16 20:10 ` Andrew Cagney
2001-08-17 6:08 ` Mark Kettenis
2001-08-17 9:13 ` Andrew Cagney
2001-08-17 9:40 ` Kevin Buettner
2001-08-17 10:12 ` Andrew Cagney
2001-08-17 11:12 ` Kevin Buettner
2001-08-17 12:19 ` Mark Kettenis
2001-08-17 12:34 ` Andrew Cagney
2001-08-17 12:51 ` Kevin Buettner
2001-08-18 12:04 ` Andrew Cagney
2001-08-17 12:30 ` Andrew Cagney
2001-08-17 12:32 ` Mark Kettenis
2001-08-21 6:41 ` Fernando Nasser
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox