https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103623
--- Comment #25 from Kewen Lin <linkw at gcc dot gnu.org> --- The key difference from the previous bif support is that: previously we checked TARGET_HARD_FLOAT but now we didn't. I think we still need to check it, as the document here https://gcc.gnu.org/onlinedocs/gcc/Basic-PowerPC-Built-in-Functions-Available-on-ISA-2_002e05.html, these bifs requires "-mhard-float" option. And all the alternatives of unpack<mode>_nodm and pack<mode> with mode iterator FMOVE128 will use constraint d which only takes effect with -mhard-float. Just a record for the guards in the previous support: /* 128-bit long double floating point builtins. */ #define BU_LDBL128_2(ENUM, NAME, ATTR, ICODE) \ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \ "__builtin_" NAME, /* NAME */ \ (RS6000_BTM_HARD_FLOAT /* MASK */ \ | RS6000_BTM_LDBL128), \ (RS6000_BTC_ ## ATTR /* ATTR */ \ | RS6000_BTC_BINARY), \ CODE_FOR_ ## ICODE) /* ICODE */ /* 128-bit __ibm128 floating point builtins (use -mfloat128 to indicate that __ibm128 is available). */ #define BU_IBM128_2(ENUM, NAME, ATTR, ICODE) \ RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \ "__builtin_" NAME, /* NAME */ \ (RS6000_BTM_HARD_FLOAT /* MASK */ \ | RS6000_BTM_FLOAT128), \ (RS6000_BTC_ ## ATTR /* ATTR */ \ | RS6000_BTC_BINARY), \ CODE_FOR_ ## ICODE) /* ICODE */