Janis Johnson <janis...@us.ibm.com> writes:

> On Wed, 2009-11-18 at 19:19 +0100, Rainer Orth wrote:
>> I've recently looked into what it takes to support decimal float on
>> additional platforms (like Solaris, IRIX, and Tru64 UNIX in my case).
>> I've found no documentation, and while I could figure out some things
>> myself, I'd like to get some advice before continuing down that road.
>> 
>> I found that --enable-decimal-float alone is not enough.  One at least
>> needs to add config/t-dfprules to config.gcc, too.  In addition, the
>> platform <target>_scalar_mode_supported_p function needs to be augmented
>> accordingly.  (I haven't tried this yet; it's just from code
>> inspection.)
>
> The target ABI needs to define how to handle the decimal32/64/128 data
> types.  The compiler backend needs to implement that ABI for argument
> passing and function results, and needs to define which registers to
> use for those types.

Thanks.  I've found the pertinent information in version 0.99 of the
AMD64 psABI, but haven't found where updates to version 4 of the Intel
386 psABI are kept.

Besides, it were helpful if there existed an overview of what it takes
to support decimal float for a new target in GCC once the psABI
specification is in place.

>> Even if this works, I now think this won't be enough and probably not
>> even remotely useful (if only to pass parts of the testsuite) without
>> libc support for the new *printf/*scanf formats, which certainly won't
>> be added on legacy platforms like IRIX and Tru64 UNIX, and even on
>> Solaris probably won't show up until DFP is fully standardized.
>
> Much of the support for decimal floating types is in libraries that
> are outside the scope of the GCC project.  This includes not just I/O
> but math functions and support for floating-point exceptions and
> rounding modes.  That support is provided by the libdfp project hosted
> in the EGLIBC repository.  libdfp currently supports only GNU/Linux
> targets, but that could be changed.

Understood, that's why I asked in the first place.  While it were
possible to get new functions from an additional library, extensions to
existing functions need to be done in the target libc.

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University

Reply via email to