Right now the rs6000 backend of the GCC compiler is rather inconsistant in the
names used for the IBM extended double floating point.

For the basic operations it used __gcc_q<op>:

        __gcc_qadd
        __gcc_qsub
        __gcc_qmul
        __gcc_qdiv
        __gcc_qneg
        __gcc_qne
        __gcc_qgt
        __gcc_qlt
        __gcc_qle

In theory the conversions also use the __gcc_ format, but while it is set in
rs6000.c, the compiler ignores these names and uses:

        __dpd_extendddtf
        __dpd_extendsdtf
        __dpd_extendtftd
        __dpd_trunctdtf
        __dpd_trunctfdd
        __dpd_trunctfsd
        __fixtfdi
        __fixtfti
        __fixunstfdi
        __fixunstfti
        __floatditf
        __floattitf
        __floatunditf
        __floatuntitf
        __powitf2

This means if have a flag day and change all of long double to IEEE 128-bit, we
run the risk of the user inadvertently calling the wrong function.

As I see it, we have a choice to have something like multilibs where you select
which library to use, or we have to use alternate names for all of the IEEE
128-bit emulation functions.

-- 
Michael Meissner, IBM
IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA
email: meiss...@linux.vnet.ibm.com, phone: +1 (978) 899-4797

Reply via email to