This patch adds support for the IEEE 128-bit hardware instructions that are being added to the PowerPC ISA 3.0 (power9). With this patch, users on power7 and power8 will use the software emulation functions that are committed, but still need some enhancment. On ISA 3.0/power9, they would be able to use the direct instructions. I have built this patch with a bootstrap build on a power8 little endian system. There were no regressions in the test suite. Is this patch ok to install in the trunk? [gcc] 2015-11-08 Michael Meissner * config/rs6000/rs6000-protos.h (convert_float128_to_int): Add declaration. (convert_int_to_float128): Likewise. (rs6000_generate_compare): Add support for ISA 3.0 (power9) hardware support for IEEE 128-bit floating point. (rs6000_expand_float128_convert): Likewise. (convert_float128_to_int): Likewise. (convert_int_to_float128): Likewise. * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): New unspecs for ISA 3.0 hardware IEEE 128-bit floating point. (UNSPEC_IEEE128_MOVE): Likewise. (UNSPEC_IEEE128_CONVERT): Likewise. (FMA_F): Add support for IEEE 128-bit floating point hardware support. (Ff): Add support for DImode. (Fv): Likewise. (any_fix code iterator): New and updated iterators for IEEE 128-bit floating point hardware support. (any_float code iterator): Likewise. (s code attribute): Likewise. (su code attribute): Likewise. (az code attribute): Likewise. (neg2, FLOAT128 iterator): Add support for IEEE 128-bit floating point hardware support. (abs2, FLOAT128 iterator): Likewise. (add3, IEEE128 iterator): New insns for IEEE 128-bit floating point hardware. (sub3, IEEE128 iterator): Likewise. (mul3, IEEE128 iterator): Likewise. (div3, IEEE128 iterator): Likewise. (copysign3, IEEE128 iterator): Likewise. (sqrt2, IEEE128 iterator): Likewise. (neg2, IEEE128 iterator): Likewise. (abs2, IEEE128 iterator): Likewise. (nabs2, IEEE128 iterator): Likewise. (fma4_hw, IEEE128 iterator): Likewise. (fms4_hw, IEEE128 iterator): Likewise. (nfma4_hw, IEEE128 iterator): Likewise. (nfms4_hw, IEEE128 iterator): Likewise. (extend2_hw): Likewise. (truncdf2_hw, IEEE128 iterator): Likewise. (truncsf2_hw, IEEE128 iterator): Likewise. (fix_fixuns code attribute): Likewise. (float_floatuns code attribute): Likewise. (_si2_hw): Likewise. (_di2_hw): Likewise. (_si2_hw): Likewise. (_di2_hw): Likewise. (xscvqpwz_): Likewise. (xscvqpdz_): Likewise. (xscvdqp_df2_odd): Likewise. (cmp_h): Likewise. [gcc/testsuite] 2015-11-08 Michael Meissner * gcc.target/powerpc/float128-hw.c: New test for IEEE 128-bit hardware floating point support. -- 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