This patch should address the following IEEE problems with the libgcc emulator with exceptions, etc. Steve is working on patches to libdfp for Decimal conversions. When the PowerPC support for __builtin_cpu_is ("...") and __builtin_cpu_supports ("...") go in, we will add support using IFUNC to automatically switch between the software emulation functions in this patch, and functions that use the PowerPC ISA 3.0 instructions. This passes the bootstrap and regression tests (including the 2 test cases added as part of IEEE 128-bit patch #9). Is it ok to check into the trunk? [gcc] 2015-11-13 Michael Meissner * config/rs6000/rs6000.c (init_float128_ieee): Only initialize cmp_optab, not ucmp_optab. (rs6000_generate_compare): Use the standard comparison functions (eqkf2, gekf2, lekf2) for normal comparisons. Call __cmpukf2 for IEEE comparisons where NaN is handled specially. [libgcc] 2015-11-13 Michael Meissner Steve Munro Tulio Magno Quites Machado Filho * Makefile.in (EXTRA_CLEAN): New variable of additional files to clean. (FLAGS_TO_PASS): Add EXTRA_CLEAN. (clean): Delete EXTRA_CLEAN files. * configure.ac (powerpc*-*-linux*): If the compiler is capable of generating __float128 code, build the __float128 emulation libraries. * configure: Regenerate. * config/rs6000/sfp-exceptions.c: New files for IEEE 128-bit floating point support. * config/rs6000/floattikf.c: Likewise. * config/rs6000/libgcc/config/rs6000/extendkftf2.c: Likewise. * config/rs6000/libgcc/config/rs6000/trunctfkf2.c: Likewise. * config/rs6000/libgcc/config/rs6000/fixunskfti.c: Likewise. * config/rs6000/libgcc/config/rs6000/fixkfti.c: Likewise. * config/rs6000/libgcc/config/rs6000/cmpukf2.c: Likewise. * config/rs6000/libgcc/config/rs6000/floatuntikf.c: Likewise. * config/rs6000/libgcc/config/rs6000/quad-float128.h: Likewise. * config/rs6000/libgcc/config/rs6000/t-float128: Likewise. * config/rs6000/libgcc/config/rs6000/float128-sed: Likewise. * config/rs6000/sfp-machine.h (_FP_W_TYPE_SIZE): Update defintiions to use 64-bit types for 64-bit systems or 32-bit VSX systems with IEEE 128-bit floating point support. (_FP_W_TYPE): Likewise. (_FP_WS_TYPE): Likewise. (_FP_I_TYPE): Likewise. (TItype): Add defintions for IEEE 128-bit floating point support. (UTItype): Likewise. (TI_BITS): Likewise. (_FP_MUL_MEAT_Q): Use 64-bit types on 64-bit systems and for 32-bit VSX systems with IEEE 128-bit floating point. (_FP_DIV_MEAT_Q): Likewise. (_FP_NANFRAC_Q): Likewise. -- Michael Meissner, IBM IBM, M/S 2506R, 550 King Street, Littleton, MA 01460-6245, USA email: meissner@linux.vnet.ibm.com, phone: +1 (978) 899-4797