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