https://gcc.gnu.org/g:30f5b0c16f283522b73289f477e867469008f49c

commit 30f5b0c16f283522b73289f477e867469008f49c
Author: Michael Meissner <[email protected]>
Date:   Wed Oct 7 02:41:44 2026 -0400

    Revert changes

Diff:
---
 gcc/config/rs6000/float16.md                 |   8 +-
 gcc/config/rs6000/rs6000-call.cc             |  23 +--
 gcc/config/rs6000/rs6000.cc                  | 131 ----------------
 gcc/config/rs6000/rs6000.opt                 |   4 -
 libgcc/config/rs6000/convert-16bit-fp-extend | 220 --------------------------
 libgcc/config/rs6000/convert-16bit-fp-fix    | 210 -------------------------
 libgcc/config/rs6000/convert-16bit-fp-float  | 216 --------------------------
 libgcc/config/rs6000/convert-16bit-fp-trunc  | 221 ---------------------------
 libgcc/config/rs6000/ppc-eqbf2.c             |  83 ----------
 libgcc/config/rs6000/ppc-eqhf2.c             |  83 ----------
 libgcc/config/rs6000/ppc-fixbfbitint.c       | 128 ----------------
 libgcc/config/rs6000/ppc-fixhfbitint.c       | 127 ---------------
 libgcc/config/rs6000/ppc-floatbitintbf.c     | 102 -------------
 libgcc/config/rs6000/ppc-floatbitinthf.c     | 102 -------------
 libgcc/config/rs6000/ppc-truncbfhf2.c        | 130 ----------------
 libgcc/config/rs6000/ppc-trunchfbf2.c        |  96 ------------
 libgcc/config/rs6000/sfp-machine.h           | 111 +++-----------
 libgcc/config/rs6000/t-float16               | 202 +++---------------------
 18 files changed, 53 insertions(+), 2144 deletions(-)

diff --git a/gcc/config/rs6000/float16.md b/gcc/config/rs6000/float16.md
index 87f468ab8ab2..3fae46ee6828 100644
--- a/gcc/config/rs6000/float16.md
+++ b/gcc/config/rs6000/float16.md
@@ -774,9 +774,9 @@
 ;; types might not have valid RTX expanders.  We use DFmode as the
 ;; intermediate conversion destination.
 
-(define_expand "extend<FP16:mode><FP16_FLOAT_CONVERT:mode>2"
+(define_expand "extend<FP16_HW:mode><FP16_FLOAT_CONVERT:mode>2"
   [(use (match_operand:FP16_FLOAT_CONVERT 0 "vsx_register_operand"))
-   (use (match_operand:FP16 1 "vsx_register_operand"))]
+   (use (match_operand:FP16_HW 1 "vsx_register_operand"))]
   "can_create_pseudo_p ()"
 {
   rtx df_tmp = gen_reg_rtx (DFmode);
@@ -786,8 +786,8 @@
   DONE;
 })
 
-(define_expand "trunc<FP16_FLOAT_CONVERT:mode><FP16:mode>2"
-  [(use (match_operand:FP16 0 "vsx_register_operand"))
+(define_expand "trunc<FP16_FLOAT_CONVERT:mode><FP16_HW:mode>2"
+  [(use (match_operand:FP16_HW 0 "vsx_register_operand"))
    (use (match_operand:FP16_FLOAT_CONVERT 1 "vsx_register_operand"))]
   "can_create_pseudo_p ()"
 {
diff --git a/gcc/config/rs6000/rs6000-call.cc b/gcc/config/rs6000/rs6000-call.cc
index e970f63f2f08..790f86218870 100644
--- a/gcc/config/rs6000/rs6000-call.cc
+++ b/gcc/config/rs6000/rs6000-call.cc
@@ -81,17 +81,10 @@
 #define TARGET_NO_PROTOTYPE 0
 #endif
 
-/* Whether we pass 16-bit floating point values in GPRs for library
-   calls.  */
-#define FP16_USE_GPR(MODE, LIBCALL)                                    \
-  (FP16_SCALAR_MODE_P (MODE) && TARGET_FLOAT16_GPR_CONVERT && LIBCALL)
-
-/* Nonzero if we can use a floating-point register to pass this arg.  16-bit
-   floating point arguments to library functions are passed as ints.  */
-#define USE_FP_FOR_ARG_P(CUM,MODE)                                     \
-  (SCALAR_FLOAT_MODE_NOT_VECTOR_P (MODE)                               \
-   && !FP16_USE_GPR (MODE, (CUM)->libcall)                             \
-   && (CUM)->fregno <= FP_ARG_MAX_REG                                  \
+/* Nonzero if we can use a floating-point register to pass this arg.  */
+#define USE_FP_FOR_ARG_P(CUM,MODE)             \
+  (SCALAR_FLOAT_MODE_NOT_VECTOR_P (MODE)               \
+   && (CUM)->fregno <= FP_ARG_MAX_REG          \
    && TARGET_HARD_FLOAT)
 
 /* Nonzero if we can use an AltiVec register to pass this arg.  */
@@ -597,7 +590,7 @@ call_ABI_of_interest (tree fndecl)
 
 void
 init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
-                     rtx libname, int incoming,
+                     rtx libname ATTRIBUTE_UNUSED, int incoming,
                      int libcall, int n_named_args,
                      tree fndecl,
                      machine_mode return_mode ATTRIBUTE_UNUSED)
@@ -660,12 +653,6 @@ init_cumulative_args (CUMULATIVE_ARGS *cum, tree fntype,
       if (cum->call_cookie & CALL_LONG)
        fprintf (stderr, " longcall,");
 
-      if (libname)
-       fprintf (stderr, " name=%s,", XSTR (libname, 0));
-
-      if (libcall)
-       fprintf (stderr, " libcall,");
-
       fprintf (stderr, " proto = %d, nargs = %d\n",
               cum->prototype, cum->nargs_prototype);
     }
diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc
index 86a5da884fa4..6ccd766e5c9b 100644
--- a/gcc/config/rs6000/rs6000.cc
+++ b/gcc/config/rs6000/rs6000.cc
@@ -2636,33 +2636,6 @@ 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");
-    }
 }
 
 
@@ -11864,101 +11837,6 @@ init_float128_ieee (machine_mode mode)
     }
 }
 
-/* For 16-bit floating point, mark the identifier of the conversion functions
-   so they pass/register the HFmode and BFmode in a GPR register rather than a
-   floating point register.  Thus if HFmode/BFmode are converted to DFmode for
-   passing and returning values, we can do the conversion on machines that
-   don't have the conversions.  */
-
-static void
-init_float16 (void)
-{
-  char fname[80];
-
-  /* Map mode to a string.  */
-  struct mode_string  {
-    const enum machine_mode mode;
-    const char *const name;
-  };
-
-  const static struct mode_string fp16_modes[] = {
-    { E_BFmode, "bf" },
-    { E_HFmode, "hf" },
-  };
-
-  const static struct mode_string fp_modes[] = {
-    { E_SFmode, "sf" },
-    { E_DFmode, "df" },
-  };
-
-  const static struct mode_string int_modes[] = {
-    { E_SImode, "si" },
-    { E_DImode, "di" },
-    { E_TImode, "ti" },
-  };
-
-  for (size_t i = 0; i < ARRAY_SIZE (fp16_modes); i++)
-    {
-      enum machine_mode fp16_mode = fp16_modes[i].mode;
-      const char *fp16_name = fp16_modes[i].name;
-
-      /* Conversions between {SFmode,DFmode} <=> {BFmode,HFmode}.  */
-      for (size_t j = 0; j < ARRAY_SIZE (fp_modes); j++)
-       {
-         enum machine_mode fp_mode = fp_modes[j].mode;
-         const char *fp_name = fp_modes[j].name;
-
-         sprintf (fname, "__extend%s%s2_gpr", fp16_name, fp_name);
-         set_conv_libfunc (sext_optab, fp_mode, fp16_mode, fname);
-
-         sprintf (fname, "__trunc%s%s2_gpr", fp_name, fp16_name);
-         set_conv_libfunc (trunc_optab, fp16_mode, fp_mode, fname);
-       }
-
-      /* Conversions between {SImode,DImode} <=> {BFmode,HFmode}.  */
-      for (size_t j = 0; j < ARRAY_SIZE (int_modes); j++)
-       {
-         enum machine_mode int_mode = int_modes[j].mode;
-         const char *int_name = int_modes[j].name;
-
-         if (int_mode == SImode || TARGET_POWERPC64)
-           {
-             sprintf (fname, "__float%s%s_gpr", int_name, fp16_name);
-             set_conv_libfunc (sfloat_optab, fp16_mode, int_mode, fname);
-
-             sprintf (fname, "__floatun%s%s_gpr", int_name, fp16_name);
-             set_conv_libfunc (ufloat_optab, fp16_mode, int_mode, fname);
-
-             sprintf (fname, "__fix%s%s_gpr", fp16_name, int_name);
-             set_conv_libfunc (sfix_optab, int_mode, fp16_mode, fname);
-
-             sprintf (fname, "__fixuns%s%s_gpr", fp16_name, int_name);
-             set_conv_libfunc (ufix_optab, int_mode, fp16_mode, fname);
-           }
-       }
-
-      /* Conversions between the two 16-bit floating point formats.  */
-      for (size_t j = 0; j < ARRAY_SIZE (fp16_modes); j++)
-       {
-         enum machine_mode fp16_mode2 = fp16_modes[j].mode;
-         const char *fp16_name2 = fp16_modes[j].name;
-
-         if (fp16_mode != fp16_mode2)
-           {
-             sprintf (fname, "__trunc%s%s2_gpr", fp16_name, fp16_name2);
-             set_conv_libfunc (trunc_optab, fp16_mode2, fp16_mode, fname);
-           }
-       }
-
-      /* Bitint support.  */
-      sprintf (fname, "__floatbitint%s_gpr", fp16_name);
-      set_optab_libfunc (bitinttofp_optab, fp16_mode, fname);
-
-      sprintf (fname, "__fix%sbitint_gpr", fp16_name);
-      set_optab_libfunc (bitintfromfp_optab, fp16_mode, fname);
-    }
-}
-
 static void
 rs6000_init_libfuncs (void)
 {
@@ -11979,10 +11857,6 @@ rs6000_init_libfuncs (void)
       else
        init_float128_ieee (TFmode);
     }
-
-  /* 16-bit float support functions.  */
-  if (TARGET_FLOAT16 && TARGET_FLOAT16_GPR_CONVERT)
-    init_float16 ();
 }
 
 /* Emit a potentially record-form instruction, setting DST from SRC.
@@ -24576,8 +24450,6 @@ rs6000_libcall_value (machine_mode mode)
   if (DECIMAL_FLOAT_MODE_P (mode) && TARGET_HARD_FLOAT)
     /* _Decimal128 must use an even/odd register pair.  */
     regno = (mode == TDmode) ? FP_ARG_RETURN + 1 : FP_ARG_RETURN;
-  else if (FP16_SCALAR_MODE_P (mode) && TARGET_FLOAT16_GPR_CONVERT)
-    regno = GP_ARG_RETURN;
   else if (SCALAR_FLOAT_MODE_NOT_VECTOR_P (mode) && TARGET_HARD_FLOAT)
     regno = FP_ARG_RETURN;
   /* VSX is a superset of Altivec and adds V2DImode/V2DFmode.  Since the same
@@ -25170,9 +25042,6 @@ 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 973051afc350..28f679ff69c7 100644
--- a/gcc/config/rs6000/rs6000.opt
+++ b/gcc/config/rs6000/rs6000.opt
@@ -646,10 +646,6 @@ mfloat16
 Target Mask(FLOAT16) Var(rs6000_isa_flags)
 Enable or disable 16-bit floating point.
 
-mfloat16-gpr-convert
-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
 
 -param=rs6000-vect-unroll-limit=
diff --git a/libgcc/config/rs6000/convert-16bit-fp-extend 
b/libgcc/config/rs6000/convert-16bit-fp-extend
deleted file mode 100755
index 157fe3f48a68..000000000000
--- a/libgcc/config/rs6000/convert-16bit-fp-extend
+++ /dev/null
@@ -1,220 +0,0 @@
-#! /usr/bin/perl -w
-# Convert a libgcc/soft-fp fix<fp><int> fuunction for the PowerPC
-
-# Copyright (C) 2020-2026 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-# The PowerPC 16-bit floating point support is considering requiring
-# 16-bit floating point arguments to the 32/64-bit scalar format in
-# registers and similarly returning the 16-bit floating point return to
-# a 32/64-bit scalar value.  However, this presents a problem in that
-# if a machine doesn't have instructions to do a conversion in
-# hardware, you can't call the soft-fp conversion function using the
-# native calling sequence.
-#
-# This perl script converts a extend<fp1><fp2>.c to do the conversion
-# to BFtype (Google brain 16-bit float) or HFtype (IEEE 754 _Float16).
-# It produces 2 functions, one that has the normal name and takes the
-# normal arguments, and the other that adds a _gpr suffix and changes
-# the 16-bit floating point to unsigned short.
-#
-# A typical extend* conversion file looks like:
-#
-# <copyright message>
-#
-# #define FP_NO_EXACT_UNDERFLOW
-# #include "soft-fp.h"
-# #include "single.h"
-# #include "double.h"
-#
-# DFtype
-# __extendsfdf2 (SFtype a)
-# {
-#   FP_DECL_EX;
-#   FP_DECL_S (A);
-#   FP_DECL_D (R);
-#   DFtype r;
-#
-#   FP_INIT_EXCEPTIONS;
-#   FP_UNPACK_RAW_S (A, a);
-# #if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
-#   FP_EXTEND (D, S, 2, 1, R, A);
-# #else
-#   FP_EXTEND (D, S, 1, 1, R, A);
-# #endif
-#   FP_PACK_RAW_D (r, R);
-#   FP_HANDLE_EXCEPTIONS;
-#
-#   return r;
-# }
-
-use warnings;
-use strict;
-use Getopt::Std;
-
-use vars qw($opt_t);
-
-$opt_t = undef;
-
-&getopts ("t:") || die "Useage $0 [-t type] <input >output\n";
-
-die "$0: No -t option.\n"                      if (! defined ($opt_t));
-
-my ($input_lc, $output_lc);
-
-if ($opt_t =~ /extend([bh])f([sd])f2/) {
-       ($input_lc, $output_lc) = ($1, $2);
-
-} else {
-       die "$0: Invalid -t ${opt_t}\n";
-}
-
-my $input_uc   = uc ($input_lc);
-my $input_uc_F = "${input_uc}F";
-my $input_lc_f = "${input_lc}f";
-my $input_type = "${input_uc}Ftype";
-
-my $output_uc  = uc ($output_lc);
-my $output_uc_F        = "${output_uc}F";
-my $output_lc_f        = "${output_lc}f";
-my $output_type        = "${output_uc}Ftype";
-
-my %include_file = ("bf" => "#include \"brain.h\"",
-                   "hf" => "#include \"half.h\"",
-                   "sf" => "#include \"single.h\"",
-                   "df" => "#include \"double.h\"");
-
-# Scan the input and put out the copyright message
-
-my $line;
-my $input = $ARGV[0];
-
-while ($line = <>) {
-       chomp $line;
-
-       last                    if ($line =~ /^[#](include|define)/);
-       print $line, "\n";
-}
-
-if ($input) {
-       print "/* Automatically converted from $input.  */\n";
-       print "\n";
-}
-
-# Change the include file from the floating point type to either half.h
-# or brain.h.
-
-die "$0: No include files\n"   if (! defined ($line));
-
-my $include_found = 0;
-
-do {
-       if ($line =~ /^#include ["](brain|half|single|double|quad)[.]h["]$/) {
-               if (!$include_found) {
-                       print $include_file{$input_lc_f}, "\n";
-                       print $include_file{$output_lc_f}, "\n";
-                       $include_found = 1;
-               }
-
-       } else {
-               print $line, "\n";
-       }
-
-       $line = <>;
-
-} while (defined ($line) && $line =~ /^(\s*$|[#](include|define))/);
-
-# Scoop up the rest of the file, convert the input and function to
-# operate on HFtype or BFtype.
-
-die "$0: No main source\n"     if (! defined ($line));
-
-my @func = ();
-my $FP   = "BDHSTQ";
-
-do {
-       chomp $line;
-
-       # Return type
-       if ($line =~ /^[${FP}]Ftype$/) {
-               $line = $output_type;
-
-       # Function line
-       } elsif ($line =~ /^__extend/) {
-               $line = "__extend${input_lc_f}${output_lc_f}2 (${input_type} 
a)";
-
-       # Declaration line of the input type
-       } elsif ($line =~ /^(\s*FP_DECL_)[${FP}] [(]A[)];/) {
-               $line = "${1}${input_uc} (A);";
-
-       # Declaration line of the output type
-       } elsif ($line =~ /^(\s*FP_DECL_)[${FP}] [(]R[)];/) {
-               $line = "${1}${output_uc} (R);";
-
-       # Declaration of the actual result
-       } elsif ($line =~ /^(\s*)[${FP}]Ftype r;/) {
-               $line = "${1}${output_type} r;";
-
-       } else {
-               # Unpack input type
-               $line =~ s/FP_UNPACK_RAW_[${FP}]/FP_UNPACK_RAW_${input_uc}/;
-
-               # Pack output type
-               $line =~ s/FP_PACK_RAW_[${FP}]/FP_PACK_RAW_${output_uc}/;
-
-               # Extend line
-               $line =~ s/FP_EXTEND [(][${FP}], [${FP}],/FP_EXTEND 
(${output_uc}, ${input_uc},/;
-       }
-
-       push (@func, $line);
-       $line = <>;
-
-} while (defined ($line));
-
-# Print out the normal conversion function
-
-print "/* ${input_type} passed in FPR registers.  */\n";
-
-foreach $line (@func) {
-       print $line, "\n";
-}
-
-# Print out the conversion function that uses GPRs
-
-print "\n";
-print "/* ${input_type} passed in GPR registers.  */\n";
-
-foreach $line (@func) {
-       if ($line =~ /^__extend/) {
-               $line = "__extend${input_lc_f}${output_lc_f}2_gpr (unsigned 
short us)";
-       }
-
-       print $line, "\n";
-
-
-       if ($line =~ /^(\s*)[${FP}]Ftype r;/) {
-               print "${1}union ushort_${input_lc_f} u;\n";
-               print "${1}${input_type} a;\n";
-               print "\n";
-               print "${1}u.us = us;\n";
-               print "${1}a = u.${input_lc_f};\n";
-       }
-}
-
-# Done
-exit 0;
diff --git a/libgcc/config/rs6000/convert-16bit-fp-fix 
b/libgcc/config/rs6000/convert-16bit-fp-fix
deleted file mode 100755
index 5878b0d3c50b..000000000000
--- a/libgcc/config/rs6000/convert-16bit-fp-fix
+++ /dev/null
@@ -1,210 +0,0 @@
-#! /usr/bin/perl -w
-# Convert a libgcc/soft-fp fix<fp><int> fuunction for the PowerPC
-
-# Copyright (C) 2020-2026 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-# The PowerPC 16-bit floating point support is considering requiring
-# 16-bit floating point arguments to the 32/64-bit scalar format in
-# registers and similarly returning the 16-bit floating point return to
-# a 32/64-bit scalar value.  However, this presents a problem in that
-# if a machine doesn't have instructions to do a conversion in
-# hardware, you can't call the soft-fp conversion function using the
-# native calling sequence.
-#
-# This perl script converts a fix<fp><int>.c. or fixuns<fp><int>.c file
-# to do the conversion to BFtype (Google brain 16-bit float) or HFtype
-# (IEEE 754 _Float16).  It produces 2 functions, one that has the
-# normal name and takes the normal arguments, and the other that adds a
-# _gpr suffix and changes the 16-bit floating point to unsigned short.
-#
-# A typical fix* conversion file looks like:
-#
-# <copyright message>
-#
-# #include "soft-fp.h"
-# #include "single.h"
-#
-# DItype
-# __fixsfdi (SFtype a)
-# {
-#   FP_DECL_EX;
-#   FP_DECL_S (A);
-#   UDItype r;
-#
-#   FP_INIT_EXCEPTIONS;
-#   FP_UNPACK_RAW_S (A, a);
-#   FP_TO_INT_S (r, A, DI_BITS, 1);
-#   FP_HANDLE_EXCEPTIONS;
-#
-#   return r;
-# }
-
-use warnings;
-use strict;
-use Getopt::Std;
-
-use vars qw($opt_t);
-
-$opt_t = undef;
-
-&getopts ("t:") || die "Useage $0 [-t type] <input >output\n";
-
-die "$0: No -t option.\n"                      if (! defined ($opt_t));
-
-my ($input_lc,
-    $output_lc,
-    $uns_lc,
-    $uns_uc_U,
-    $uns_sign);
-
-if ($opt_t =~ /fix(|uns)([bh])f([sdt])i/) {
-       if (defined ($1) && $1 ne "") {
-               ($uns_lc, $uns_uc_U, $uns_sign) = ("uns", "U", 0);
-
-       } else {
-               ($uns_lc, $uns_uc_U, $uns_sign) = ("", "", 1);
-       }
-
-       ($input_lc, $output_lc) = ($2, $3);
-
-} else {
-       die "$0: Invalid -t ${opt_t}\n";
-}
-
-my $input_uc   = uc ($input_lc);
-my $input_uc_F = "${input_uc}F";
-my $input_lc_f = "${input_lc}f";
-my $input_type = "${input_uc}Ftype";
-
-my $output_uc  = uc ($output_lc);
-my $output_uc_I        = "${output_uc}I";
-my $output_lc_i        = "${output_lc}i";
-my $output_type        = "${uns_uc_U}${output_uc}Itype";
-
-my %include_file = ("bf" => "#include \"brain.h\"",
-                   "hf" => "#include \"half.h\"",
-                   "sf" => "#include \"single.h\"",
-                   "df" => "#include \"double.h\"");
-
-# Scan the input and put out the copyright message
-
-my $line;
-my $input = $ARGV[0];
-
-while ($line = <>) {
-       chomp $line;
-
-       last                    if ($line =~ /^[#](include|define)/);
-       print $line, "\n";
-}
-
-if ($input) {
-       print "/* Automatically converted from $input.  */\n";
-       print "\n";
-}
-
-# Change the include file from the floating point type to either half.h
-# or brain.h.
-
-die "$0: No include files\n"   if (! defined ($line));
-
-do {
-       if ($line =~ /^[#]include 
[\"](single|double|extended|half|quad|brain)[.]h[\"]$/) {
-               print $include_file{$input_lc_f}, "\n";
-
-       } else {
-               print $line, "\n";
-       }
-
-       $line = <>;
-
-} while (defined ($line) && $line =~ /^[#](include|define)/);
-
-# Scoop up the rest of the file, convert the input and function to
-# operate on HFtype or BFtype.
-
-die "$0: No main source\n"     if (! defined ($line));
-
-my @func = ();
-my $FP   = "BDHST";
-my $INT  = "QHSDT";
-
-do {
-       chomp $line;
-
-       # Function line
-       if ($line =~ /^__fix/) {
-               $line = "__fix${uns_lc}${input_lc_f}${output_lc_i} 
(${input_type} a)";
-
-       # Return type for function
-       } elsif ($line =~ /^(U)?[${INT}]Itype$/) {
-               $line = $output_type;
-
-       # Return value
-       } elsif ($line =~ /^(\s*)(U)?[${INT}]Itype r;/) {
-               $line = "${1}${output_type} r;";
-
-       # Conversion to int
-       } elsif ($line =~ /^(\s*)FP_TO_INT_[${FP}] [(]r, A, [${INT}]I_BITS, 
[01][)];/) {
-               $line = "${1}FP_TO_INT_${input_uc} (r, A, ${output_uc_I}_BITS, 
${uns_sign});";
-
-       } else {
-               $line =~ s/_(DECL|RAW|INT)_[${FP}]/_${1}_${input_uc}/;
-       }
-
-       push (@func, $line);
-       $line = <>;
-
-} while (defined ($line));
-
-# Print out the normal conversion function
-
-print "\n";
-print "/* ${input_type} passed in FPR registers.  */\n";
-
-foreach $line (@func) {
-       print $line, "\n";
-}
-
-# Print out the special GPR function.
-
-print "\n";
-print "/* ${input_type} passed in GPR registers.  */\n";
-
-foreach $line (@func) {
-
-       # Function header
-       if ($line =~ /^__(fix|fixuns)([bh]f)([sdt]i)/) {
-               $line = "__${1}${2}${3}_gpr (unsigned short us)";
-       }
-
-       print $line, "\n";
-
-       # Add conversion from unsigned short
-       if ($line =~ /^(\s*)U?[${INT}]Itype r;/) {
-               print "${1}${input_type} a;\n";
-               print "${1}union ushort_${input_lc_f} u;\n";
-               print "\n";
-               print "${1}u.us = us;\n";
-               print "${1}a = u.${input_lc_f};\n";
-       }
-}
-
-# Done
-exit 0;
diff --git a/libgcc/config/rs6000/convert-16bit-fp-float 
b/libgcc/config/rs6000/convert-16bit-fp-float
deleted file mode 100755
index 232c498bb22a..000000000000
--- a/libgcc/config/rs6000/convert-16bit-fp-float
+++ /dev/null
@@ -1,216 +0,0 @@
-#! /usr/bin/perl -w
-# Convert a libgcc/soft-fp fix<fp><int> fuunction for the PowerPC
-
-# Copyright (C) 2020-2026 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-# The PowerPC 16-bit floating point support is considering requiring
-# 16-bit floating point arguments to the 32/64-bit scalar format in
-# registers and similarly returning the 16-bit floating point return to
-# a 32/64-bit scalar value.  However, this presents a problem in that
-# if a machine doesn't have instructions to do a conversion in
-# hardware, you can't call the soft-fp conversion function using the
-# native calling sequence.
-#
-# This perl script converts a float<int><fp>.c. or floatun<int><fp>.c
-# file to do the conversion to BFtype (Google brain 16-bit float) or
-# HFtype (IEEE 754 _Float16).  It produces 2 functions, one that has
-# the normal name and takes the normal arguments, and the other that
-# adds a _gpr suffix and changes the 16-bit floating point to unsigned
-# short.
-#
-# A typical fix* conversion file looks like:
-#
-# <copyright message>
-#
-# DFtype
-# __floatdidf (DItype i)
-# {
-#   FP_DECL_EX;
-#   FP_DECL_D (A);
-#   DFtype a;
-#
-#   FP_INIT_ROUNDMODE;
-#   FP_FROM_INT_D (A, i, DI_BITS, UDItype);
-#   FP_PACK_RAW_D (a, A);
-#   FP_HANDLE_EXCEPTIONS;
-#
-#   return a;
-# }
-
-use warnings;
-use strict;
-use Getopt::Std;
-
-use vars qw($opt_t);
-
-$opt_t = undef;
-
-&getopts ("t:") || die "Useage $0 [-t type] <input >output\n";
-
-die "$0: No -t option.\n"                      if (! defined ($opt_t));
-
-my ($input_lc,
-    $output_lc,
-    $uns_lc,
-    $uns_uc_U);
-
-if ($opt_t =~ /float(|un)([sdt])i([bh])f/) {
-       if (defined ($1) && $1 ne "") {
-               ($uns_lc, $uns_uc_U) = ("un", "U");
-
-       } else {
-               ($uns_lc, $uns_uc_U) = ("", "");
-       }
-
-       ($input_lc, $output_lc) = ($2, $3);
-
-} else {
-       die "$0: Invalid -t ${opt_t}\n";
-}
-
-my $input_uc   = uc ($input_lc);
-my $input_uc_I = "${input_uc}I";
-my $input_lc_i = "${input_lc}i";
-my $input_type = "${uns_uc_U}${input_uc}Itype";
-
-my $output_uc  = uc ($output_lc);
-my $output_uc_F        = "${output_uc}F";
-my $output_lc_f        = "${output_lc}f";
-my $output_type        = "${output_uc}Ftype";
-
-my %include_file = ("bf" => "#include \"brain.h\"",
-                   "hf" => "#include \"half.h\"",
-                   "sf" => "#include \"single.h\"",
-                   "df" => "#include \"double.h\"");
-
-# Scan the input and put out the copyright message
-
-my $line;
-my $input = $ARGV[0];
-
-while ($line = <>) {
-       chomp $line;
-
-       last                    if ($line =~ /^[#](include|define)/);
-       print $line, "\n";
-}
-
-if ($input) {
-       print "/* Automatically converted from $input.  */\n";
-       print "\n";
-}
-
-# Change the include file from the floating point type to either half.h
-# or brain.h.
-
-die "$0: No include files\n"   if (! defined ($line));
-
-do {
-       if ($line =~ /^[#]include 
[\"](single|double|extended|half|quad|brain)[.]h[\"]$/) {
-               print $include_file{$output_lc_f}, "\n";
-
-       } else {
-               print $line, "\n";
-       }
-
-       $line = <>;
-
-} while (defined ($line) && $line =~ /^[#](include|define)/);
-
-# Scoop up the rest of the file, convert the function to
-# return a HFtype or BFtype type.
-
-die "$0: No main source\n"     if (! defined ($line));
-
-my @func = ();
-my $FP   = "BDHST";
-my $fp   = lc ($FP);
-my $INT  = "QHSDT";
-my $int  = lc ($INT);
-
-do {
-       chomp $line;
-
-       # Function return
-       if ($line =~ /^[${FP}]Ftype$/) {
-               $line = $output_type;
-
-       # Function line
-       } elsif ($line =~ /^__float/) {
-               $line = "__float${uns_lc}${input_lc_i}${output_lc_f} 
(${input_type} i)";
-
-       # Return variable declaration
-       } elsif ($line =~ /^(\s*)[${FP}]Ftype a;/) {
-               $line = "${1}${output_type} a;";
-
-       # Int input
-       } elsif ($line =~ /FROM_INT_[${INT}]/) {
-               $line =~ s/FROM_INT_[${INT}]/FROM_INT_${output_uc}/;
-               $line =~ s/[${INT}]I_BITS/${input_uc_I}_BITS/;
-               $line =~ s/(U)?[${INT}]Itype/${input_type}/;
-       }
-
-       $line =~ s/_(DECL|RAW)_[${FP}]/_${1}_${output_uc}/;
-
-       push (@func, $line);
-       $line = <>;
-
-} while (defined ($line));
-
-# Print out the normal conversion function
-
-print "\n";
-print "/* ${output_type} returned in FPR registers.  */\n";
-
-foreach $line (@func) {
-       print $line, "\n";
-}
-
-# Print out the special GPR function.
-
-print "\n";
-print "/* ${output_type} returned in GPR registers.  */\n";
-
-foreach $line (@func) {
-
-       # Function return
-       if ($line eq $output_type) {
-               $line = "unsigned short";
-
-       # Function header
-       } elsif ($line =~ /^__(float|floatun)([sdt]i)([bh]f) (.*)$/) {
-               $line = "__${1}${2}${3}_gpr ${4}";
-
-       # Return value
-       } elsif ($line =~ /^(\s*)return a;/) {
-               print "${1}u.${output_lc_f} = a;\n";
-               $line = "${1}return u.us;";
-       }
-
-       print $line, "\n";
-
-       # Add declartion of union
-       if ($line =~ /^(\s*)[${FP}]Ftype a;/) {
-               print "  union ushort_${output_lc_f} u;\n";
-       }
-
-}
-
-# Done
-exit 0;
diff --git a/libgcc/config/rs6000/convert-16bit-fp-trunc 
b/libgcc/config/rs6000/convert-16bit-fp-trunc
deleted file mode 100755
index 99695cd3c5fc..000000000000
--- a/libgcc/config/rs6000/convert-16bit-fp-trunc
+++ /dev/null
@@ -1,221 +0,0 @@
-#! /usr/bin/perl -w
-# Convert a libgcc/soft-fp fix<fp><int> fuunction for the PowerPC
-
-# Copyright (C) 2020-2026 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-# The PowerPC 16-bit floating point support is considering requiring
-# 16-bit floating point arguments to the 32/64-bit scalar format in
-# registers and similarly returning the 16-bit floating point return to
-# a 32/64-bit scalar value.  However, this presents a problem in that
-# if a machine doesn't have instructions to do a conversion in
-# hardware, you can't call the soft-fp conversion function using the
-# native calling sequence.
-#
-# This perl script converts a trunc<fp1><fp2>.c to do the conversion
-# from BFtype (Google brain 16-bit float) or HFtype (IEEE 754 _Float16).
-# It produces 2 functions, one that has the normal name and takes the
-# normal arguments, and the other that adds a _gpr suffix and changes
-# the 16-bit floating point to unsigned short.
-#
-# A typical trunc* conversion file looks like:
-#
-# <copyright message>
-#
-# #include "soft-fp.h"
-# #include "half.h"
-# #include "double.h"
-#
-# HFtype
-# __truncdfhf2 (DFtype a)
-# {
-#   FP_DECL_EX;
-#   FP_DECL_D (A);
-#   FP_DECL_H (R);
-#   HFtype r;
-#
-#   FP_INIT_ROUNDMODE;
-#   FP_UNPACK_SEMIRAW_D (A, a);
-# #if _FP_W_TYPE_SIZE < _FP_FRACBITS_D
-#   FP_TRUNC (H, D, 1, 2, R, A);
-# #else
-#   FP_TRUNC (H, D, 1, 1, R, A);
-# #endif
-#   FP_PACK_SEMIRAW_H (r, R);
-#   FP_HANDLE_EXCEPTIONS;
-#
-#   return r;
-# }
-
-use warnings;
-use strict;
-use Getopt::Std;
-
-use vars qw($opt_t);
-
-$opt_t = undef;
-
-&getopts ("t:") || die "Useage $0 [-t type] <input >output\n";
-
-die "$0: No -t option.\n"                      if (! defined ($opt_t));
-
-my ($input_lc, $output_lc);
-
-if ($opt_t =~ /trunc([sd])f([bh])f2/) {
-       ($input_lc, $output_lc) = ($1, $2);
-
-} else {
-       die "$0: Invalid -t ${opt_t}\n";
-}
-
-my $input_uc   = uc ($input_lc);
-my $input_uc_F = "${input_uc}F";
-my $input_lc_f = "${input_lc}f";
-my $input_type = "${input_uc}Ftype";
-
-my $output_uc  = uc ($output_lc);
-my $output_uc_F        = "${output_uc}F";
-my $output_lc_f        = "${output_lc}f";
-my $output_type        = "${output_uc}Ftype";
-
-my %include_file = ("bf" => "#include \"brain.h\"",
-                   "hf" => "#include \"half.h\"",
-                   "sf" => "#include \"single.h\"",
-                   "df" => "#include \"double.h\"");
-
-# Scan the input and put out the copyright message
-
-my $line;
-my $input = $ARGV[0];
-
-while ($line = <>) {
-       chomp $line;
-
-       last                    if ($line =~ /^[#](include|define)/);
-       print $line, "\n";
-}
-
-if ($input) {
-       print "/* Automatically converted from $input.  */\n";
-       print "\n";
-}
-
-# Change the include file from the floating point type to either half.h
-# or brain.h.
-
-die "$0: No include files\n"   if (! defined ($line));
-
-my $include_found = 0;
-
-do {
-       if ($line =~ /^#include ["](brain|half|single|double|quad)[.]h["]$/) {
-               if (!$include_found) {
-                       print $include_file{$input_lc_f}, "\n";
-                       print $include_file{$output_lc_f}, "\n";
-                       $include_found = 1;
-               }
-
-       } else {
-               print $line, "\n";
-       }
-
-       $line = <>;
-
-} while (defined ($line) && $line =~ /^(\s*$|[#](include|define))/);
-
-# Scoop up the rest of the file, convert the input and function to
-# operate on HFtype or BFtype.
-
-die "$0: No main source\n"     if (! defined ($line));
-
-my @func = ();
-my $FP   = "BDHSTQ";
-
-do {
-       chomp $line;
-
-       # Return type
-       if ($line =~ /^[${FP}]Ftype$/) {
-               $line = $output_type;
-
-       # Function line
-       } elsif ($line =~ /^__trunc/) {
-               $line = "__trunc${input_lc_f}${output_lc_f}2 (${input_type} a)";
-
-       # Declaration line of the input type
-       } elsif ($line =~ /^(\s*FP_DECL_)[${FP}] [(]A[)];/) {
-               $line = "${1}${input_uc} (A);";
-
-       # Declaration line of the output type
-       } elsif ($line =~ /^(\s*FP_DECL_)[${FP}] [(]R[)];/) {
-               $line = "${1}${output_uc} (R);";
-
-       # Declaration of the actual result
-       } elsif ($line =~ /^(\s*)[${FP}]Ftype r;/) {
-               $line = "${1}${output_type} r;";
-
-       } else {
-               # Unpack input type
-               $line =~ 
s/FP_UNPACK_(SEMI)?RAW_[${FP}]/FP_UNPACK_${1}RAW_${input_uc}/;
-
-               # Pack output type
-               $line =~ 
s/FP_PACK_(SEMI)?RAW_[${FP}]/FP_PACK_${1}RAW_${output_uc}/;
-
-               # Trunc line
-               $line =~ s/FP_TRUNC [(][${FP}], [${FP}],/FP_TRUNC 
(${output_uc}, ${input_uc},/;
-       }
-
-       push (@func, $line);
-       $line = <>;
-
-} while (defined ($line));
-
-# Print out the normal conversion function
-
-print "/* ${output_type} returned in FPR registers.  */\n";
-
-foreach $line (@func) {
-       print $line, "\n";
-}
-
-# Print out the conversion function that uses GPRs
-
-print "\n";
-print "/* ${output_type} returned in GPR registers.  */\n";
-
-foreach $line (@func) {
-       if ($line =~ /^[${FP}]Ftype$/) {
-               $line = "unsigned short";
-
-       } elsif ($line =~ /^__trunc/) {
-               $line = "__trunc${input_lc_f}${output_lc_f}2_gpr (${input_type} 
a)";
-
-       } elsif ($line =~ /^(\s*)return r;/) {
-               print "${1}u.${output_lc_f} = r;\n";
-               $line = "${1}return u.us;";
-       }
-
-       print $line, "\n";
-
-       if ($line =~ /^(\s*)[${FP}]Ftype r;/) {
-               print "${1}union ushort_${output_lc_f} u;\n";
-       }
-}
-
-# Done
-exit 0;
diff --git a/libgcc/config/rs6000/ppc-eqbf2.c b/libgcc/config/rs6000/ppc-eqbf2.c
deleted file mode 100644
index a43b6b673282..000000000000
--- a/libgcc/config/rs6000/ppc-eqbf2.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Software floating-point emulation.
-   Return 0 iff a == b, 1 otherwise
-   Copyright (C) 2021-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file into
-   combinations with other programs, and to distribute those
-   combinations without any restriction coming from the use of this
-   file.  (The Lesser General Public License restrictions do apply in
-   other respects; for example, they cover modification of the file,
-   and distribution when not linked into a combine executable.)
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.
-
-   This is a clone of softfp/eqhf2.c.
-
-   We provide 2 conversions, one that returns the BFtype in a floating point
-   register and the other returns it in a general purpose register that is used
-   when BFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "brain.h"
-
-/* When BFtype is passed in FPR registers.  */
-CMPtype
-__eqbf2 (BFtype a, BFtype b)
-{
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  FP_DECL_B (B);
-  CMPtype r;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_B (A, a);
-  FP_UNPACK_RAW_B (B, b);
-  FP_CMP_EQ_B (r, A, B, 1);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-strong_alias (__eqbf2, __nebf2);
-
-/* When BFtype is passed in GPR registers.  */
-CMPtype
-__eqbf2_gpr (unsigned short us_a, unsigned short us_b)
-{
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  FP_DECL_B (B);
-  CMPtype r;
-  union ushort_bf u_a, u_b;
-  BFtype a, b;
-
-  u_a.us = us_a;
-  u_b.us = us_b;
-  a = u_a.bf;
-  b = u_b.bf;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_B (A, a);
-  FP_UNPACK_RAW_B (B, b);
-  FP_CMP_EQ_B (r, A, B, 1);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-strong_alias (__eqbf2_gpr, __nebf2_gpr);
diff --git a/libgcc/config/rs6000/ppc-eqhf2.c b/libgcc/config/rs6000/ppc-eqhf2.c
deleted file mode 100644
index e6c8dabf5b1c..000000000000
--- a/libgcc/config/rs6000/ppc-eqhf2.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Software floating-point emulation.
-   Return 0 iff a == b, 1 otherwise
-   Copyright (C) 2021-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file into
-   combinations with other programs, and to distribute those
-   combinations without any restriction coming from the use of this
-   file.  (The Lesser General Public License restrictions do apply in
-   other respects; for example, they cover modification of the file,
-   and distribution when not linked into a combine executable.)
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.
-
-   This is a clone of softfp/eqhf2.c.
-
-   We provide 2 conversions, one that returns the BFtype in a floating point
-   register and the other returns it in a general purpose register that is used
-   when BFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "half.h"
-
-/* When HFtype is passed in FPR registers.  */
-CMPtype
-__eqhf2 (HFtype a, HFtype b)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_H (B);
-  CMPtype r;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_H (A, a);
-  FP_UNPACK_RAW_H (B, b);
-  FP_CMP_EQ_H (r, A, B, 1);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-strong_alias (__eqhf2, __nehf2);
-
-/* When HFtype is passed in GPR registers.  */
-CMPtype
-__eqhf2_gpr (unsigned short us_a, unsigned short us_b)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_H (B);
-  CMPtype r;
-  union ushort_hf u_a, u_b;
-  HFtype a, b;
-
-  u_a.us = us_a;
-  u_b.us = us_b;
-  a = u_a.hf;
-  b = u_b.hf;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_H (A, a);
-  FP_UNPACK_RAW_H (B, b);
-  FP_CMP_EQ_H (r, A, B, 1);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-strong_alias (__eqhf2_gpr, __nehf2_gpr);
diff --git a/libgcc/config/rs6000/ppc-fixbfbitint.c 
b/libgcc/config/rs6000/ppc-fixbfbitint.c
deleted file mode 100644
index 3271912dc260..000000000000
--- a/libgcc/config/rs6000/ppc-fixbfbitint.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Software floating-point emulation.
-   Convert IEEE single to signed or unsigned _BitInt.
-
-   Copyright (C) 2023 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.
-
-This is a clone of softfp/fixsfbit.c
-
-We provide 2 conversions, one that passes the BFtype in a floating point
-register and the other returns it in a general purpose register that is used
-when BFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "brain.h"
-#include "bitint.h"
-
-#ifdef __BITINT_MAXWIDTH__
-/* Silence declaration without prototype warning.  */
-extern void __fixbfbitint     (UBILtype *, SItype, BFtype);
-extern void __fixbfbitint_gpr (UBILtype *, SItype, unsigned short);
-
-/* BFtype is passed in FPR registers.  */
-void
-__fixbfbitint (UBILtype *r, SItype rprec, BFtype a)
-{
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  USItype arprec = rprec < 0 ? -rprec : rprec;
-  USItype rn = ((USItype) arprec + BIL_TYPE_SIZE - 1) / BIL_TYPE_SIZE;
-  USItype rv;
-  USItype rsize = arprec > SI_BITS ? SI_BITS : arprec;
-  USItype rsigned = rprec < 0;
-  USItype ovf = 0;
-  USItype shift = 0;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_B (A, a);
-  if (arprec > SI_BITS)
-    {
-      if (A_e < _FP_EXPBIAS_B || (A_s && !rsigned))
-       ovf = 1;
-      else if (A_e >= (_FP_EXPMAX_B < _FP_EXPBIAS_B + arprec
-                      ? _FP_EXPMAX_B
-                      : _FP_EXPBIAS_B + arprec - rsigned))
-       {
-         ovf = 1;
-         if (A_s
-             && A_e == _FP_EXPBIAS_B + arprec - 1
-             && A_e < _FP_EXPMAX_B)
-           A_e -= arprec - SI_BITS;
-       }
-      else if (A_e >= _FP_EXPBIAS_B + SI_BITS - rsigned)
-       {
-         shift = A_e - (_FP_EXPBIAS_B + SI_BITS - rsigned - 1);
-         A_e -= shift;
-       }
-    }
-  FP_TO_INT_B (rv, A, rsize, rsigned);
-  FP_HANDLE_EXCEPTIONS;
-  FP_TO_BITINT (r, rn, arprec, shift, rv, rsize, rsigned, ovf, SI);
-}
-
-/* BFtype is passed in GPR registers.  */
-void
-__fixbfbitint_gpr (UBILtype *r, SItype rprec, unsigned short us)
-{
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  USItype arprec = rprec < 0 ? -rprec : rprec;
-  USItype rn = ((USItype) arprec + BIL_TYPE_SIZE - 1) / BIL_TYPE_SIZE;
-  USItype rv;
-  USItype rsize = arprec > SI_BITS ? SI_BITS : arprec;
-  USItype rsigned = rprec < 0;
-  USItype ovf = 0;
-  USItype shift = 0;
-  BFtype a;
-  union ushort_bf u;
-
-  u.us = us;
-  a = u.bf;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_B (A, a);
-  if (arprec > SI_BITS)
-    {
-      if (A_e < _FP_EXPBIAS_B || (A_s && !rsigned))
-       ovf = 1;
-      else if (A_e >= (_FP_EXPMAX_B < _FP_EXPBIAS_B + arprec
-                      ? _FP_EXPMAX_B
-                      : _FP_EXPBIAS_B + arprec - rsigned))
-       {
-         ovf = 1;
-         if (A_s
-             && A_e == _FP_EXPBIAS_B + arprec - 1
-             && A_e < _FP_EXPMAX_B)
-           A_e -= arprec - SI_BITS;
-       }
-      else if (A_e >= _FP_EXPBIAS_B + SI_BITS - rsigned)
-       {
-         shift = A_e - (_FP_EXPBIAS_B + SI_BITS - rsigned - 1);
-         A_e -= shift;
-       }
-    }
-  FP_TO_INT_B (rv, A, rsize, rsigned);
-  FP_HANDLE_EXCEPTIONS;
-  FP_TO_BITINT (r, rn, arprec, shift, rv, rsize, rsigned, ovf, SI);
-}
-#endif
diff --git a/libgcc/config/rs6000/ppc-fixhfbitint.c 
b/libgcc/config/rs6000/ppc-fixhfbitint.c
deleted file mode 100644
index bb1818ec0695..000000000000
--- a/libgcc/config/rs6000/ppc-fixhfbitint.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* Software floating-point emulation.
-   Convert IEEE single to signed or unsigned _BitInt.
-
-   Copyright (C) 2023 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.
-
-This is a clone of softfp/fixsfbit.c
-
-We provide 2 conversions, one that passes the HFtype in a floating point
-register and the other returns it in a general purpose register that is used
-when HFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "half.h"
-#include "bitint.h"
-
-#ifdef __BITINT_MAXWIDTH__
-extern void __fixhfbitint     (UBILtype *, SItype, HFtype);
-extern void __fixhfbitint_gpr (UBILtype *, SItype, unsigned short);
-
-/* HFtype is passed in FPR registers.  */
-void
-__fixhfbitint (UBILtype *r, SItype rprec, HFtype a)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  USItype arprec = rprec < 0 ? -rprec : rprec;
-  USItype rn = ((USItype) arprec + BIL_TYPE_SIZE - 1) / BIL_TYPE_SIZE;
-  USItype rv;
-  USItype rsize = arprec > SI_BITS ? SI_BITS : arprec;
-  USItype rsigned = rprec < 0;
-  USItype ovf = 0;
-  USItype shift = 0;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_H (A, a);
-  if (arprec > SI_BITS)
-    {
-      if (A_e < _FP_EXPBIAS_H || (A_s && !rsigned))
-       ovf = 1;
-      else if (A_e >= (_FP_EXPMAX_H < _FP_EXPBIAS_H + arprec
-                      ? _FP_EXPMAX_H
-                      : _FP_EXPBIAS_H + arprec - rsigned))
-       {
-         ovf = 1;
-         if (A_s
-             && A_e == _FP_EXPBIAS_H + arprec - 1
-             && A_e < _FP_EXPMAX_H)
-           A_e -= arprec - SI_BITS;
-       }
-      else if (A_e >= _FP_EXPBIAS_H + SI_BITS - rsigned)
-       {
-         shift = A_e - (_FP_EXPBIAS_H + SI_BITS - rsigned - 1);
-         A_e -= shift;
-       }
-    }
-  FP_TO_INT_H (rv, A, rsize, rsigned);
-  FP_HANDLE_EXCEPTIONS;
-  FP_TO_BITINT (r, rn, arprec, shift, rv, rsize, rsigned, ovf, SI);
-}
-
-/* HFtype is passed in GPR registers.  */
-void
-__fixhfbitint_gpr (UBILtype *r, SItype rprec, unsigned short us)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  USItype arprec = rprec < 0 ? -rprec : rprec;
-  USItype rn = ((USItype) arprec + BIL_TYPE_SIZE - 1) / BIL_TYPE_SIZE;
-  USItype rv;
-  USItype rsize = arprec > SI_BITS ? SI_BITS : arprec;
-  USItype rsigned = rprec < 0;
-  USItype ovf = 0;
-  USItype shift = 0;
-  HFtype a;
-  union ushort_hf u;
-
-  u.us = us;
-  a = u.hf;
-
-  FP_INIT_EXCEPTIONS;
-  FP_UNPACK_RAW_H (A, a);
-  if (arprec > SI_BITS)
-    {
-      if (A_e < _FP_EXPBIAS_H || (A_s && !rsigned))
-       ovf = 1;
-      else if (A_e >= (_FP_EXPMAX_H < _FP_EXPBIAS_H + arprec
-                      ? _FP_EXPMAX_H
-                      : _FP_EXPBIAS_H + arprec - rsigned))
-       {
-         ovf = 1;
-         if (A_s
-             && A_e == _FP_EXPBIAS_H + arprec - 1
-             && A_e < _FP_EXPMAX_H)
-           A_e -= arprec - SI_BITS;
-       }
-      else if (A_e >= _FP_EXPBIAS_H + SI_BITS - rsigned)
-       {
-         shift = A_e - (_FP_EXPBIAS_H + SI_BITS - rsigned - 1);
-         A_e -= shift;
-       }
-    }
-  FP_TO_INT_H (rv, A, rsize, rsigned);
-  FP_HANDLE_EXCEPTIONS;
-  FP_TO_BITINT (r, rn, arprec, shift, rv, rsize, rsigned, ovf, SI);
-}
-#endif
diff --git a/libgcc/config/rs6000/ppc-floatbitintbf.c 
b/libgcc/config/rs6000/ppc-floatbitintbf.c
deleted file mode 100644
index bc3be1ed8886..000000000000
--- a/libgcc/config/rs6000/ppc-floatbitintbf.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Software floating-point emulation.
-   Convert a _BitInt to bfloat16.
-
-   Copyright (C) 2023 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.
-
-This is a clone of softfp/floatbitintbf.c.
-
-We provide 2 conversions, one that returns the BFtype in a floating point
-register and the other returns it in a general purpose register that is used
-when BFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "brain.h"
-#include "bitint.h"
-
-#ifdef __BITINT_MAXWIDTH__
-
-/* Silence declaration without prototype warning.  */
-extern BFtype         __floatbitintbf     (const UBILtype *, SItype);
-extern unsigned short __floatbitintbf_gpr (const UBILtype *, SItype);
-
-/* BFtype returned in FPRs.  */
-BFtype
-__floatbitintbf (const UBILtype *i, SItype iprec)
-{
-  SItype iv;
-  USItype shift = 0;
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  BFtype a;
-
-  FP_FROM_BITINT (i, iprec, iv, shift, SI);
-  FP_INIT_ROUNDMODE;
-  FP_FROM_INT_B (A, iv, SI_BITS, USItype);
-  if (shift)
-    {
-      A_e += shift;
-      if (A_e >= _FP_EXPMAX_B)
-       {
-         /* Exponent too big; overflow to infinity.  */
-         _FP_OVERFLOW_SEMIRAW (B, 1, A);
-         _FP_PACK_SEMIRAW (B, 1, A);
-       }
-    }
-  FP_PACK_RAW_B (a, A);
-  FP_HANDLE_EXCEPTIONS;
-
-  return a;
-}
-
-/* BFtype returned in GPRs.  */
-unsigned short
-__floatbitintbf_gpr (const UBILtype *i, SItype iprec)
-{
-  SItype iv;
-  USItype shift = 0;
-  FP_DECL_EX;
-  FP_DECL_B (A);
-  BFtype a;
-  union ushort_bf u;
-
-  FP_FROM_BITINT (i, iprec, iv, shift, SI);
-  FP_INIT_ROUNDMODE;
-  FP_FROM_INT_B (A, iv, SI_BITS, USItype);
-  if (shift)
-    {
-      A_e += shift;
-      if (A_e >= _FP_EXPMAX_B)
-       {
-         /* Exponent too big; overflow to infinity.  */
-         _FP_OVERFLOW_SEMIRAW (B, 1, A);
-         _FP_PACK_SEMIRAW (B, 1, A);
-       }
-    }
-  FP_PACK_RAW_B (a, A);
-  FP_HANDLE_EXCEPTIONS;
-
-  u.bf = a;
-  return u.us;
-}
-#endif
diff --git a/libgcc/config/rs6000/ppc-floatbitinthf.c 
b/libgcc/config/rs6000/ppc-floatbitinthf.c
deleted file mode 100644
index f92376994fb6..000000000000
--- a/libgcc/config/rs6000/ppc-floatbitinthf.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Software floating-point emulation.
-   Convert a _BitInt to IEEE half.
-
-   Copyright (C) 2023 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-<http://www.gnu.org/licenses/>.
-
-This is a clone of softfp/floatbitinthf.c.
-
-We provide 2 conversions, one that returns the BFtype in a floating point
-register and the other returns it in a general purpose register that is used
-when BFtype must be converted to the 32/64-bit scalar type.  */
-
-#include "soft-fp.h"
-#include "half.h"
-#include "bitint.h"
-
-#ifdef __BITINT_MAXWIDTH__
-
-/* Silence declaration without prototype warning.  */
-extern HFtype         __floatbitinthf     (const UBILtype *, SItype);
-extern unsigned short __floatbitinthf_gpr (const UBILtype *, SItype);
-
-/* HFtype returned in FPRs.  */
-HFtype
-__floatbitinthf (const UBILtype *i, SItype iprec)
-{
-  SItype iv;
-  USItype shift = 0;
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  HFtype a;
-
-  FP_FROM_BITINT (i, iprec, iv, shift, SI);
-  FP_INIT_ROUNDMODE;
-  FP_FROM_INT_H (A, iv, SI_BITS, USItype);
-  if (shift)
-    {
-      A_e += shift;
-      if (A_e >= _FP_EXPMAX_H)
-       {
-         /* Exponent too big; overflow to infinity.  */
-         _FP_OVERFLOW_SEMIRAW (H, 1, A);
-         _FP_PACK_SEMIRAW (H, 1, A);
-       }
-    }
-  FP_PACK_RAW_H (a, A);
-  FP_HANDLE_EXCEPTIONS;
-
-  return a;
-}
-
-/* HFtype returned in FPRs.  */
-unsigned short
-__floatbitinthf_gpr (const UBILtype *i, SItype iprec)
-{
-  SItype iv;
-  USItype shift = 0;
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  HFtype a;
-  union ushort_hf u;
-
-  FP_FROM_BITINT (i, iprec, iv, shift, SI);
-  FP_INIT_ROUNDMODE;
-  FP_FROM_INT_H (A, iv, SI_BITS, USItype);
-  if (shift)
-    {
-      A_e += shift;
-      if (A_e >= _FP_EXPMAX_H)
-       {
-         /* Exponent too big; overflow to infinity.  */
-         _FP_OVERFLOW_SEMIRAW (H, 1, A);
-         _FP_PACK_SEMIRAW (H, 1, A);
-       }
-    }
-  FP_PACK_RAW_H (a, A);
-  FP_HANDLE_EXCEPTIONS;
-
-  u.hf = a;
-  return u.us;
-}
-#endif
diff --git a/libgcc/config/rs6000/ppc-truncbfhf2.c 
b/libgcc/config/rs6000/ppc-truncbfhf2.c
deleted file mode 100644
index ff660ad52e7d..000000000000
--- a/libgcc/config/rs6000/ppc-truncbfhf2.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Software floating-point emulation.
-   Truncate bfloat16 into IEEE half.
-   Copyright (C) 2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file into
-   combinations with other programs, and to distribute those
-   combinations without any restriction coming from the use of this
-   file.  (The Lesser General Public License restrictions do apply in
-   other respects; for example, they cover modification of the file,
-   and distribution when not linked into a combine executable.)
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.
-
-   This is a clone of soft-fp/truncbfhf2.c for the PowerPC.
-
-   We provide an alternative version of the conversion that retunrs the HFtype
-   value as unsigned short.  This is to allow the calling sequence where
-   arguments are converted to the 32/64-bit scalar format.  If we don't have
-   the hardware support, we can't use the standard __trunc function.  */
-
-#include "soft-fp.h"
-#include "half.h"
-#include "brain.h"
-#include "single.h"
-
-/* BFtype and HFtype are unordered, neither is a superset or subset
-   of each other.  Convert BFtype to SFtype (lossless) and then
-   truncate to HFtype.  */
-
-/* BFtype passed in FPR, HFtype returned in FPR.  */
-HFtype
-__truncbfhf2 (BFtype a)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_S (B);
-  FP_DECL_B (R);
-  SFtype b;
-  HFtype r;
-
-  FP_INIT_ROUNDMODE;
-  /* Optimize BFtype to SFtype conversion to simple left shift
-     by 16 if possible, we don't need to raise exceptions on sNaN
-     here as the SFtype to HFtype truncation should do that too.  */
-  if (sizeof (BFtype) == 2
-      && sizeof (unsigned short) == 2
-      && sizeof (SFtype) == 4
-      && sizeof (unsigned int) == 4)
-    {
-      union { BFtype a; unsigned short b; } u1;
-      union { SFtype a; unsigned int b; } u2;
-      u1.a = a;
-      u2.b = (u1.b << 8) << 8;
-      b = u2.a;
-    }
-  else
-    {
-      FP_UNPACK_RAW_B (A, a);
-      FP_EXTEND (S, B, 1, 1, B, A);
-      FP_PACK_RAW_S (b, B);
-    }
-  FP_UNPACK_SEMIRAW_S (B, b);
-  FP_TRUNC (H, S, 1, 1, R, B);
-  FP_PACK_SEMIRAW_H (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-/* BFtype passed in GPR, HFtype returned in GPR.  */
-unsigned short
-__truncbfhf2_gpr (unsigned short us)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_S (B);
-  FP_DECL_B (R);
-  SFtype b;
-  HFtype r;
-  BFtype a;
-  union ushort_bf ubf;
-  union ushort_hf uhf;
-
-  ubf.us = us;
-  a = ubf.bf;
-
-  FP_INIT_ROUNDMODE;
-  /* Optimize BFtype to SFtype conversion to simple left shift
-     by 16 if possible, we don't need to raise exceptions on sNaN
-     here as the SFtype to HFtype truncation should do that too.  */
-  if (sizeof (BFtype) == 2
-      && sizeof (unsigned short) == 2
-      && sizeof (SFtype) == 4
-      && sizeof (unsigned int) == 4)
-    {
-      union { BFtype a; unsigned short b; } u1;
-      union { SFtype a; unsigned int b; } u2;
-      u1.a = a;
-      u2.b = (u1.b << 8) << 8;
-      b = u2.a;
-    }
-  else
-    {
-      FP_UNPACK_RAW_B (A, a);
-      FP_EXTEND (S, B, 1, 1, B, A);
-      FP_PACK_RAW_S (b, B);
-    }
-  FP_UNPACK_SEMIRAW_S (B, b);
-  FP_TRUNC (H, S, 1, 1, R, B);
-  FP_PACK_SEMIRAW_H (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  uhf.hf = r;
-  return uhf.us;
-}
diff --git a/libgcc/config/rs6000/ppc-trunchfbf2.c 
b/libgcc/config/rs6000/ppc-trunchfbf2.c
deleted file mode 100644
index 747a90c996ef..000000000000
--- a/libgcc/config/rs6000/ppc-trunchfbf2.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Software floating-point emulation.
-   Truncate IEEE half into bfloat16.
-   Copyright (C) 2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   In addition to the permissions in the GNU Lesser General Public
-   License, the Free Software Foundation gives you unlimited
-   permission to link the compiled version of this file into
-   combinations with other programs, and to distribute those
-   combinations without any restriction coming from the use of this
-   file.  (The Lesser General Public License restrictions do apply in
-   other respects; for example, they cover modification of the file,
-   and distribution when not linked into a combine executable.)
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.
-
-   This is a clone of soft-fp/trunchfbf2.c for the PowerPC.
-
-   We provide an alternative version of the conversion that retunrs the HFtype
-   value as unsigned short.  This is to allow the calling sequence where
-   arguments are converted to the 32/64-bit scalar format.  If we don't have
-   the hardware support, we can't use the standard __trunc function  */
-
-#include "soft-fp.h"
-#include "brain.h"
-#include "half.h"
-#include "single.h"
-
-/* BFtype and HFtype are unordered, neither is a superset or subset
-   of each other.  Convert HFtype to SFtype (lossless) and then
-   truncate to BFtype.  */
-
-/* HFtype passed in FPR, BFtype returned in FPR.  */
-BFtype
-__trunchfbf2 (HFtype a)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_S (B);
-  FP_DECL_B (R);
-  SFtype b;
-  BFtype r;
-
-  FP_INIT_ROUNDMODE;
-  FP_UNPACK_RAW_H (A, a);
-  FP_EXTEND (S, H, 1, 1, B, A);
-  FP_PACK_RAW_S (b, B);
-  FP_UNPACK_SEMIRAW_S (B, b);
-  FP_TRUNC (B, S, 1, 1, R, B);
-  FP_PACK_SEMIRAW_B (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-
-/* HFtype passed in GPR, BFtype returned in GPR.  */
-unsigned short
-__trunchfbf2_gpr (unsigned short us)
-{
-  FP_DECL_EX;
-  FP_DECL_H (A);
-  FP_DECL_S (B);
-  FP_DECL_B (R);
-  SFtype b;
-  BFtype r;
-  HFtype a;
-  union ushort_bf ubf;
-  union ushort_hf uhf;
-
-  uhf.us = us;
-  a = uhf.hf;
-
-  FP_INIT_ROUNDMODE;
-  FP_UNPACK_RAW_H (A, a);
-  FP_EXTEND (S, H, 1, 1, B, A);
-  FP_PACK_RAW_S (b, B);
-  FP_UNPACK_SEMIRAW_S (B, b);
-  FP_TRUNC (B, S, 1, 1, R, B);
-  FP_PACK_SEMIRAW_B (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  ubf.bf = r;
-  return ubf.us;
-}
diff --git a/libgcc/config/rs6000/sfp-machine.h 
b/libgcc/config/rs6000/sfp-machine.h
index b37bf0903a87..b6dd03a710e3 100644
--- a/libgcc/config/rs6000/sfp-machine.h
+++ b/libgcc/config/rs6000/sfp-machine.h
@@ -170,105 +170,42 @@ void __sfp_handle_exceptions (int);
 /* Add prototypes for the HFmode and BFmode functions.  */
 typedef double DFtype2;
 typedef float SFtype2;
-typedef int HItype2 __attribute__ ((mode (HI)));
-typedef unsigned int UHItype2 __attribute__ ((mode (HI)));
-typedef int SItype2 __attribute__ ((mode (SI)));
-typedef unsigned int USItype2 __attribute__ ((mode (SI)));
 typedef int DItype2 __attribute__ ((mode (DI)));
 typedef unsigned int UDItype2 __attribute__ ((mode (DI)));
-typedef int TItype2 __attribute__ ((mode (TI)));
-typedef unsigned int UTItype2 __attribute__ ((mode (TI)));
-
-/* We have 2 different conversion functions.  One passes or returns the 16-bit
-   floating point type in a floating point register, and the other passes or
-   returns it in a general purpose register.  If 16-bit floating point is
-   normally converted to the 32/64-bit scalar represention, we need a function
-   that does not do this conversion.  */
-#define PASS_FP16(NAME, RET, FP16)                                     \
-extern RET NAME (FP16);                                                        
\
-extern RET NAME ## _gpr (UHItype2)
-
-#define PASS_FP16_2(NAME, RET, FP16_1, FP16_2)                         \
-extern RET NAME (FP16_1, FP16_2);                                      \
-extern RET NAME ## _gpr (UHItype2, UHItype2)
-
-#define RETURN_FP16(NAME, FP16, ARG)                                   \
-extern FP16 NAME (ARG);                                                        
\
-extern UHItype2 NAME ## _gpr (ARG)
-
-#define CONVERT_FP16(NAME, FP16_RET, FP16_ARG)                         \
-extern FP16_RET NAME (FP16_ARG);                                       \
-extern UHItype2 NAME ## _gpr (UHItype2)
+typedef int SItype2 __attribute__ ((mode (SI)));
+typedef unsigned int USItype2 __attribute__ ((mode (SI)));
 
 #ifdef __FLOAT16__
 typedef float HFtype2 __attribute__ ((mode (HF)));
 
-/* Move between HFtype and unsigned short.  */
-union ushort_hf {
-  unsigned short us;
-  HFtype2 hf;
-};
-
-PASS_FP16_2 (__eqhf2, CMPtype, HFtype2, HFtype2);
-
-PASS_FP16 (__extendhfsf2, SFtype2, HFtype2);
-PASS_FP16 (__extendhfdf2, DFtype2, HFtype2);
-
-PASS_FP16 (__fixhfsi, SItype2, HFtype2);
-PASS_FP16 (__fixhfdi, DItype2, HFtype2);
-PASS_FP16 (__fixhfti, TItype2, HFtype2);
-
-PASS_FP16 (__fixunshfsi, USItype2, HFtype2);
-PASS_FP16 (__fixunshfdi, UDItype2, HFtype2);
-PASS_FP16 (__fixunshfti, UTItype2, HFtype2);
-
-RETURN_FP16 (__floatsihf, HFtype2, SItype2);
-RETURN_FP16 (__floatdihf, HFtype2, DItype2);
-RETURN_FP16 (__floattihf, HFtype2, TItype2);
-
-RETURN_FP16 (__floatunsihf, HFtype2, USItype2);
-RETURN_FP16 (__floatundihf, HFtype2, UDItype2);
-RETURN_FP16 (__floatuntihf, HFtype2, UTItype2);
-
-RETURN_FP16 (__truncsfhf2, HFtype2, SFtype2);
-RETURN_FP16 (__truncdfhf2, HFtype2, DFtype2);
+extern CMPtype __eqhf2 (HFtype2, HFtype2);
+extern DFtype2 __extendhfdf2 (HFtype2);
+extern SFtype2 __extendhfsf2 (HFtype2);
+extern DItype2 __fixhfdi (HFtype2);
+extern SItype2 __fixhfsi (HFtype2);
+extern UDItype2 __fixunshfdi (HFtype2);
+extern USItype2 __fixunshfsi (HFtype2);
+extern HFtype2 __floatdihf (DItype2);
+extern HFtype2 __floatsihf (SItype2);
+extern HFtype2 __floatundihf (UDItype2);
+extern HFtype2 __floatunsihf (USItype2);
+extern HFtype2 __truncdfhf2 (DFtype2);
+extern HFtype2 __truncsfhf2 (SFtype2);
 #endif
 
 #ifdef __BFLOAT16__
 typedef float BFtype2 __attribute__ ((mode (BF)));
 
-/* Move between BFtype and unsigned short.  */
-union ushort_bf {
-  unsigned short us;
-  BFtype2 bf;
-};
-
-PASS_FP16_2 (__eqbf2, CMPtype, BFtype2, BFtype2);
-
-PASS_FP16 (__extendbfsf2, SFtype2, BFtype2);
-PASS_FP16 (__extendbfdf2, DFtype2, BFtype2);
-
-PASS_FP16 (__fixbfsi, SItype2, BFtype2);
-PASS_FP16 (__fixbfdi, DItype2, BFtype2);
-PASS_FP16 (__fixbfti, TItype2, BFtype2);
-
-PASS_FP16 (__fixunsbfsi, USItype2, BFtype2);
-PASS_FP16 (__fixunsbfdi, UDItype2, BFtype2);
-PASS_FP16 (__fixunsbfti, UTItype2, BFtype2);
-
-RETURN_FP16 (__floatsibf, BFtype2, SItype2);
-RETURN_FP16 (__floatdibf, BFtype2, DItype2);
-RETURN_FP16 (__floattibf, BFtype2, TItype2);
-
-RETURN_FP16 (__floatunsibf, BFtype2, USItype2);
-RETURN_FP16 (__floatundibf, BFtype2, UDItype2);
-RETURN_FP16 (__floatuntibf, BFtype2, UTItype2);
-
-RETURN_FP16 (__truncsfbf2, BFtype2, SFtype2);
-RETURN_FP16 (__truncdfbf2, BFtype2, DFtype2);
+extern SFtype2 __extendbfsf2 (BFtype2);
+extern BFtype2 __floatdibf (DItype2);
+extern BFtype2 __floatsibf (SItype2);
+extern BFtype2 __floatundibf (UDItype2);
+extern BFtype2 __floatunsibf (USItype2);
+extern BFtype2 __truncdfbf2 (DFtype2);
+extern BFtype2 __truncsfbf2 (SFtype2);
 #endif
 
 #if defined(__FLOAT16__) && defined(__BFLOAT16__)
-CONVERT_FP16 (__truncbfhf2, HFtype2, BFtype2);
-CONVERT_FP16 (__trunchfbf2, BFtype2, HFtype2);
+extern HFtype2 __truncbfhf2 (BFtype2);
+extern BFtype2 __trunchfbf2 (HFtype2);
 #endif
diff --git a/libgcc/config/rs6000/t-float16 b/libgcc/config/rs6000/t-float16
index 2e5c04e44a7c..f77df910b3ff 100644
--- a/libgcc/config/rs6000/t-float16
+++ b/libgcc/config/rs6000/t-float16
@@ -1,160 +1,42 @@
-PERL           := perl
+# _Float16 library support
 
-# _Float16 library support, source files in soft-ftp
-fp16_funcs     = ppc-eqhf2 ppc-floatbitinthf ppc-fixhfbitint
+fp16_funcs     = eqhf2 extendhfdf2 extendhfsf2 \
+                 fixhfsi  fixhfdi fixhfti fixunshfsi fixunshfdi fixunshfti \
+                 floatsihf floatdihf floattihf floatunsihf floatundihf 
floatuntihf \
+                 truncdfhf2 truncsfhf2
 
-fp16_src       = $(addprefix $(srcdir)/config/rs6000/,$(addsuffix 
.c,$(fp16_funcs)))
+fp16_src       = $(addprefix $(srcdir)/soft-fp/,$(addsuffix .c,$(fp16_funcs)))
 fp16_obj       = $(addsuffix $(objext),$(fp16_funcs))
 
 FP16_CFLAGS    = -mfloat16 -Wno-psabi \
-                 -I$(srcdir)/soft-fp \
-                 -I$(srcdir)/config/rs6000
+                 -I$(srcdir)/soft-fp -I$(srcdir)/config/rs6000
 
 $(fp16_obj)    : INTERNAL_CFLAGS += $(FP16_CFLAGS)
 
-# __bf16 library support, source files in config/rs6000
-bfp16_funcs    = ppc-eqbf2 ppc-floatbitintbf ppc-fixbfbitint
+# __bfloat16 library support
 
-bfp16_src      = $(addprefix $(srcdir)/config/rs6000/,$(addsuffix 
.c,$(bfp16_funcs)))
+bfp16_funcs    = extendbfsf2 floatdibf floatsibf floatundibf floatunsibf \
+                 truncdfbf2 truncsfbf2
+
+bfp16_src      = $(addprefix $(srcdir)/soft-fp/,$(addsuffix .c,$(bfp16_funcs)))
 bfp16_obj      = $(addsuffix $(objext),$(bfp16_funcs))
 
 $(bfp16_obj)   : INTERNAL_CFLAGS += $(FP16_CFLAGS)
 
-# Conversion between __bf16 and _Float16
-both_fp16_funcs         = ppc-truncbfhf2 ppc-trunchfbf2
-both_fp16_src   = $(addprefix $(srcdir)/config/rs6000/,$(addsuffix 
.c,$(both_fp16_funcs)))
+# Conversion between __bfloat16 and _Float16
+
+both_fp16_funcs         = truncbfhf2 trunchfbf2
+both_fp16_src   = $(addprefix $(srcdir)/soft-fp/,$(addsuffix 
.c,$(both_fp16_funcs)))
 both_fp16_obj   = $(addsuffix $(objext),$(both_fp16_funcs))
 
 $(both_fp16_obj) : INTERNAL_CFLAGS += $(FP16_CFLAGS)
 
-# Convert functions in soft-fp to powerpc, building 2 versions, one
-# with normal __bf16/_Float16 arguments, and the other where we
-# pass/return 16-bit floating point in gprs.
-
-float16_prefix         = ppc-
-float16_dep            = $(srcdir)/config/rs6000/t-float16
-
-# We don't have a full set of BFmode conversions in soft-fp, so modify the 
HFmode
-# conversions to do what we want for BFmode as well as HFmode.
-float16_fix_ti_orig    = $(srcdir)/soft-fp/fixhfti.c
-float16_fix_di_orig    = $(srcdir)/soft-fp/fixhfdi.c
-float16_fix_si_orig    = $(srcdir)/soft-fp/fixhfsi.c
-float16_fixuns_ti_orig = $(srcdir)/soft-fp/fixunshfti.c
-float16_fixuns_di_orig = $(srcdir)/soft-fp/fixunshfdi.c
-float16_fixuns_si_orig = $(srcdir)/soft-fp/fixunshfsi.c
-float16_extend_orig    = $(srcdir)/soft-fp/extendhfsf2.c
-float16_trunc_orig     = $(srcdir)/soft-fp/truncsfhf2.c
-
-float16_fix_script     = $(srcdir)/config/rs6000/convert-16bit-fp-fix
-float16_float_script   = $(srcdir)/config/rs6000/convert-16bit-fp-float
-float16_extend_script  = $(srcdir)/config/rs6000/convert-16bit-fp-extend
-float16_trunc_script   = $(srcdir)/config/rs6000/convert-16bit-fp-trunc
-
-float16_fix_ti_funcs   = fixhfti fixbfti
-float16_fix_di_funcs   = fixhfdi fixbfdi
-float16_fix_si_funcs   = fixhfsi fixbfsi
-float16_fixuns_ti_funcs        = fixunshfti fixunsbfti
-float16_fixuns_di_funcs        = fixunshfdi fixunsbfdi
-float16_fixuns_si_funcs        = fixunshfsi fixunsbfsi
-
-float16_fix_ti_src     = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fix_ti_funcs)))
-float16_fix_di_src     = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fix_di_funcs)))
-float16_fix_si_src     = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fix_si_funcs)))
-float16_fixuns_ti_src  = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fixuns_ti_funcs)))
-float16_fixuns_di_src  = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fixuns_di_funcs)))
-float16_fixuns_si_src  = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fixuns_si_funcs)))
-
-float16_fix_funcs      = $(float16_fix_ti_funcs) \
-                         $(float16_fix_di_funcs) \
-                         $(float16_fix_si_funcs) \
-                         $(float16_fixuns_ti_funcs) \
-                         $(float16_fixuns_di_funcs) \
-                         $(float16_fixuns_si_funcs)
-
-float16_fix_src                = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_fix_funcs)))
-float16_fix_dep                = $(float16_fix_orig) \
-                         $(float16_fix_script) \
-                         $(float16_dep)
-
-float16_float_sign_funcs = floattihf floatdihf floatsihf \
-                          floattibf floatdibf floatsibf
-
-float16_float_uns_funcs        = floatuntihf floatundihf floatunsihf \
-                         floatuntibf floatundibf floatunsibf
-
-float16_float_uns_obj  = $(addprefix $(float16_prefix),$(addsuffix 
$(objext),$(float16_float_uns_funcs)))
-
-float16_float_funcs    = $(float16_float_sign_funcs) \
-                         $(float16_float_uns_funcs)
-
-float16_float_src      = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_float_funcs)))
-float16_float_dep      = $(float16_float_script) \
-
-float16_extend_funcs   = extendhfsf2 extendhfdf2 extendbfsf2 extendbfdf2
-float16_extend_src     = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_extend_funcs)))
-float16_extend_dep     = $(float16_extend_orig) \
-                         $(float16_extend_script) \
-                         $(float16_dep)
-
-float16_trunc_funcs    = truncdfbf2 truncdfhf2 truncsfbf2 truncsfhf2
-float16_trunc_src      = $(addprefix $(float16_prefix),$(addsuffix 
.c,$(float16_trunc_funcs)))
-float16_trunc_dep      = $(float16_trunc_orig) \
-                         $(float16_trunc_script) \
-                         $(float16_dep)
-
-float16_all_funcs      = $(float16_fix_funcs) \
-                         $(float16_float_funcs) \
-                         $(float16_extend_funcs) \
-                         $(float16_trunc_funcs)
-
-float16_all_src                = $(float16_fix_src) \
-                         $(float16_float_src) \
-                         $(float16_extend_src) \
-                         $(float16_trunc_src)
-
-float16_all_obj                = $(addprefix $(float16_prefix),$(addsuffix 
$(objext),$(float16_all_funcs)))
-
-$(float16_all_obj)     : INTERNAL_CFLAGS += $(FP16_CFLAGS)
-
-# Turn off the unsigned comparison is always false warning in the
-# conversion from unsigned int to float
-$(float16_float_uns_obj) : INTERNAL_CFLAGS += -Wno-type-limits
-
-# Build the ppc-* sources
-$(float16_fix_ti_src) : $(float16_fix_ti_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fix_ti_orig) > $@
-
-$(float16_fix_di_src) : $(float16_fix_di_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fix_di_orig) > $@
-
-$(float16_fix_si_src) : $(float16_fix_si_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fix_si_orig) > $@
-
-$(float16_fixuns_ti_src) : $(float16_fixuns_ti_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fixuns_ti_orig) > $@
-
-$(float16_fixuns_di_src) : $(float16_fixuns_di_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fixuns_di_orig) > $@
-
-$(float16_fixuns_si_src) : $(float16_fixuns_si_orig) $(float16_fix_dep)
-       $(PERL) $(float16_fix_script) -t $@ $(float16_fixuns_si_orig) > $@
-
-$(float16_float_src) : $(subst $(float16_prefix),$(srcdir)/soft-fp/,$@) 
$(float16_float_dep)
-       $(PERL) $(float16_float_script) -t $@ $(subst 
$(float16_prefix),$(srcdir)/soft-fp/,$@) > $@
-
-$(float16_extend_src) : $(float16_extend_dep)
-       $(PERL) $(float16_extend_script) -t $@ $(float16_extend_orig) > $@
-
-$(float16_trunc_src) : $(float16_trunc_dep)
-       $(PERL) $(float16_trunc_script) -t $@ $(float16_trunc_orig) > $@
-
 # For now, only put it in the static library
-# LIB2ADD      += $(fp16_src) $(bfp16_src) $(both_fp16_src) $(float16_all_src)
+# LIB2ADD      += $(fp16_src) $(bfp16_src) $(both_fp16_src)
 
-LIB2ADD_ST     += $(fp16_src) $(bfp16_src) $(both_fp16_src) \
-                  $(float16_all_src)
+LIB2ADD_ST     += $(fp16_src) $(bfp16_src) $(both_fp16_src)
 
-.PHONY: test-float16 clean-float16 ppc-srcfiles
+.PHONY: test-float16 clean-float16
 
 test-float16:
        @echo "fp16_src:"; \
@@ -173,51 +55,7 @@ test-float16:
        for x in $(bfp16_obj); do echo "    $$x"; done; \
        echo; \
        echo "both_fp16_obj:"; \
-       for x in $(bfp16_obj); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_fix_funcs:"; \
-       for x in $(float16_fix_funcs); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_float_funcs:"; \
-       for x in $(float16_float_funcs); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_extend_funcs:"; \
-       for x in $(float16_extend_funcs); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_trunc_funcs:"; \
-       for x in $(float16_trunc_funcs); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_all_funcs:"; \
-       for x in $(float16_all_funcs); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_all_src:"; \
-       for x in $(float16_all_src); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_all_obj:"; \
-       for x in $(float16_all_obj); do echo "    $$x"; done; \
-       echo; \
-       echo "LIB2ADD_ST:"; \
-       for x in $(LIB2ADD_ST); do echo "    $$x"; done; \
-       echo; \
-       echo "float16_prefix         = $(float16_prefix)"; \
-       echo "float16_fix_ti_orig    = $(float16_fix_ti_orig)"; \
-       echo "float16_fix_di_orig    = $(float16_fix_di_orig)"; \
-       echo "float16_fix_si_orig    = $(float16_fix_si_orig)"; \
-       echo "float16_fixuns_ti_orig = $(float16_fixuns_ti_orig)"; \
-       echo "float16_fixuns_di_orig = $(float16_fixuns_di_orig)"; \
-       echo "float16_fixuns_si_orig = $(float16_fixuns_si_orig)"; \
-       echo "float16_extend_orig    = $(float16_extend_orig)"; \
-       echo "float16_trunc_orig     = $(float16_trunc_orig)"; \
-       echo; \
-       echo "float16_fix_script     = $(float16_fix_script)"; \
-       echo "float16_float_script   = $(float16_float_script)"; \
-       echo "float16_extend_script  = $(float16_extend_script)"; \
-       echo "float16_trunc_script   = $(float16_trunc_script)"; \
-       echo
+       for x in $(bfp16_obj); do echo "    $$x"; done;
 
 clean-float16:
        @$(MULTICLEAN) multi-clean DO=clean-float16
-       rm -f $(float16_all_src) ppc-srcfiles
-
-ppc-srcfiles: $(float16_all_src)
-       @touch ppc-srcfiles

Reply via email to