https://gcc.gnu.org/g:b45e2cfc445f796c27336cc983b4a15c5a4e4801
commit b45e2cfc445f796c27336cc983b4a15c5a4e4801 Author: Michael Meissner <[email protected]> Date: Sat Sep 26 16:49:52 2026 -0400 Make -mfloat16-gpr-convert default. 2026-09-26 Michael Meissner <[email protected]> gcc/ * config/rs6000/rs6000.cc (rs6000_debug_reg_global): Print -mfloat16 debug information. (rs6000_opt_masks): Remove -mfloat16-gpr-convert. (rs6000_opt_vars): Add -mfloat16-gpr-convert. * config/rs6000/rs6000.opt (-mfloat16-gpr-convert): Change from being a mask to being a target variable. Make -mfloat16-gpr-convert default to on. Diff: --- gcc/config/rs6000/rs6000.cc | 31 ++++++++++++++++++++++++++++++- gcc/config/rs6000/rs6000.opt | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index c1f75d4ac3aa..1aed909feab6 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -2636,6 +2636,33 @@ rs6000_debug_reg_global (void) if (TARGET_DIRECT_MOVE_128) fprintf (stderr, DEBUG_FMT_D, "VSX easy 64-bit mfvsrld element", (int)VECTOR_ELEMENT_MFVSRLD_64BIT); + + if (TARGET_FLOAT16) + { + fprintf (stderr, DEBUG_FMT_S, "_Float16", + (TARGET_FLOAT16_HW ? "hardware" : "software")); + fprintf (stderr, DEBUG_FMT_S, "__bf16", + (TARGET_BFLOAT16_HW ? "hardware" : "software")); + fprintf (stderr, DEBUG_FMT_S, "-mfloat16-gpr-convert", + (TARGET_FLOAT16_GPR_CONVERT ? "yes" : "no")); + +#if POWERPC_FLOAT16_DEFAULT + fprintf (stderr, DEBUG_FMT_S, "float16 configured", "enabled"); +#else + fprintf (stderr, DEBUG_FMT_S, "float16 configured", "disabled"); +#endif + +#if POWERPC_FLOAT16_DISABLE_WARNING + fprintf (stderr, DEBUG_FMT_S, "float16 call warnings", "disabled"); +#else + fprintf (stderr, DEBUG_FMT_S, "float16 call warnings", "enabled"); +#endif + } + else + { + fprintf (stderr, DEBUG_FMT_S, "_Float16", "disabled"); + fprintf (stderr, DEBUG_FMT_S, "__bf16", "disabled"); + } } @@ -25038,7 +25065,6 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = { "hard-dfp", OPTION_MASK_DFP, false, true }, { "htm", OPTION_MASK_HTM, false, true }, { "float16", OPTION_MASK_FLOAT16, false, true }, - { "float16-gpr-convert", OPTION_MASK_FLOAT16_GPR_CONVERT, false, true }, { "isel", OPTION_MASK_ISEL, false, true }, { "mfcrf", OPTION_MASK_MFCRF, false, true }, { "mfpgpr", 0, false, true }, @@ -25137,6 +25163,9 @@ static struct rs6000_opt_var const rs6000_opt_vars[] = { "speculate-indirect-jumps", offsetof (struct gcc_options, x_rs6000_speculate_indirect_jumps), offsetof (struct cl_target_option, x_rs6000_speculate_indirect_jumps), }, + { "float16-gpr-convert", + offsetof (struct gcc_options, x_TARGET_FLOAT16_GPR_CONVERT), + offsetof (struct cl_target_option, x_TARGET_FLOAT16_GPR_CONVERT), }, }; /* Inner function to handle attribute((target("..."))) and #pragma GCC target diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index 40a83a716f08..973051afc350 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -647,7 +647,7 @@ Target Mask(FLOAT16) Var(rs6000_isa_flags) Enable or disable 16-bit floating point. mfloat16-gpr-convert -Target Undocumented Mask(FLOAT16_GPR_CONVERT) Var(rs6000_isa_flags) +Target Undocumented Var(TARGET_FLOAT16_GPR_CONVERT) Init(1) Save Pass/return (do not pass/return) 16-it float conversions in GPR registers. ; Documented parameters
