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

Reply via email to