[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gcc
Subject:    TFmode support with and without INTEL_EXTENDED_IEEE_FORMAT
From:       Steve Ellcey <sje () cup ! hp ! com>
Date:       2002-02-28 20:40:31
[Download RAW message or body]

There was some discussion (more of just a comment actually) a couple of
weeks ago about having GCC support both "types" of TFmode in a single
compiler, where TFmode could be the current TFmode with
INTEL_EXTENDED_IEEE_FORMAT == 0 and something like a TXFmode would be
like TFmode is now with INTEL_EXTENDED_IEEE_FORMAT != 0.

I have been looking into this idea a little because the HP IA64 compiler
supports both of these (one as long double and one as __float80) and it
would be useful if GCC on HP IA64 could support them as well.

The first problem I ran into that I don't know how to deal with is in
machmode.def, currently all the modes of a particular class have different
sizes and this is used to differentiate between them.  We currently
have:

DEF_MACHMODE (SFmode, "SF", MODE_FLOAT, BITS_PER_UNIT*4, 4, 4, DFmode)
DEF_MACHMODE (DFmode, "DF", MODE_FLOAT, BITS_PER_UNIT*8, 8, 8, XFmode)
DEF_MACHMODE (XFmode, "XF", MODE_FLOAT, BITS_PER_UNIT*12, 12, 12, TFmode)
DEF_MACHMODE (TFmode, "TF", MODE_FLOAT, BITS_PER_UNIT*16, 16, 16, VOIDmode)

But if I add

DEF_MACHMODE (TXFmode, "TXF", MODE_FLOAT, BITS_PER_UNIT*16, 16, 16, TFmode)

(and modify the "next largest" type on XFmode to be TXFmode instead of
TFmode) then we have two types, TFmode and TXFmode with the same size
and I don't think GCC can handle that situation.  The tree node that is
set up for long_double_type_node for example will have a mode of
MODE_FLOAT and a precision of 128 regardless of whether is it supposed
to be TFmode or TXFmode and thus the two will be indistinguashable at
the tree level.

Can anyone think of a way to address this issue?

Steve Ellcey
sje@cup.hp.com
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic