diff --git a/soft-fp/fmadf4.c b/soft-fp/fmadf4.c
deleted file mode 100644
index 313547d..0000000
--- a/soft-fp/fmadf4.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Implement fma using soft-fp.
-   Copyright (C) 2013-2017 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/>.  */
-
-#include <math.h>
-#include <libc-diag.h>
-#include <libm-alias-double.h>
-
-/* R_e is not set in cases where it is not used in packing, but the
-   compiler does not see that it is set in all cases where it is
-   used, resulting in warnings that it may be used uninitialized.
-   The location of the warning differs in different versions of GCC,
-   it may be where R is defined using a macro or it may be where the
-   macro is defined.  */
-DIAG_PUSH_NEEDS_COMMENT;
-DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-
-#include "soft-fp.h"
-#include "double.h"
-
-double
-__fma (double a, double b, double c)
-{
-  FP_DECL_EX;
-  FP_DECL_D (A);
-  FP_DECL_D (B);
-  FP_DECL_D (C);
-  FP_DECL_D (R);
-  double r;
-
-  FP_INIT_ROUNDMODE;
-  FP_UNPACK_D (A, a);
-  FP_UNPACK_D (B, b);
-  FP_UNPACK_D (C, c);
-  FP_FMA_D (R, A, B, C);
-  FP_PACK_D (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-DIAG_POP_NEEDS_COMMENT;
-
-#ifndef __fma
-libm_alias_double (__fma, fma)
-#endif
diff --git a/soft-fp/fmasf4.c b/soft-fp/fmasf4.c
deleted file mode 100644
index 295223d..0000000
--- a/soft-fp/fmasf4.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Implement fmaf using soft-fp.
-   Copyright (C) 2013-2017 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/>.  */
-
-#include <math.h>
-#include <libc-diag.h>
-#include <libm-alias-float.h>
-
-/* R_e is not set in cases where it is not used in packing, but the
-   compiler does not see that it is set in all cases where it is
-   used, resulting in warnings that it may be used uninitialized.
-   The location of the warning differs in different versions of GCC,
-   it may be where R is defined using a macro or it may be where the
-   macro is defined.  */
-DIAG_PUSH_NEEDS_COMMENT;
-DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-
-#include "soft-fp.h"
-#include "single.h"
-
-float
-__fmaf (float a, float b, float c)
-{
-  FP_DECL_EX;
-  FP_DECL_S (A);
-  FP_DECL_S (B);
-  FP_DECL_S (C);
-  FP_DECL_S (R);
-  float r;
-
-  FP_INIT_ROUNDMODE;
-  FP_UNPACK_S (A, a);
-  FP_UNPACK_S (B, b);
-  FP_UNPACK_S (C, c);
-  FP_FMA_S (R, A, B, C);
-  FP_PACK_S (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-DIAG_POP_NEEDS_COMMENT;
-
-#ifndef __fmaf
-libm_alias_float (__fma, fma)
-#endif
diff --git a/soft-fp/fmatf4.c b/soft-fp/fmatf4.c
deleted file mode 100644
index 79be52c..0000000
--- a/soft-fp/fmatf4.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Implement fmal using soft-fp.
-   Copyright (C) 2013-2017 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/>.  */
-
-#include <math.h>
-#include <libc-diag.h>
-#include <libm-alias-ldouble.h>
-
-/* R_e is not set in cases where it is not used in packing, but the
-   compiler does not see that it is set in all cases where it is
-   used, resulting in warnings that it may be used uninitialized.
-   The location of the warning differs in different versions of GCC,
-   it may be where R is defined using a macro or it may be where the
-   macro is defined.  */
-DIAG_PUSH_NEEDS_COMMENT;
-DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
-
-#include "soft-fp.h"
-#include "quad.h"
-
-long double
-__fmal (long double a, long double b, long double c)
-{
-  FP_DECL_EX;
-  FP_DECL_Q (A);
-  FP_DECL_Q (B);
-  FP_DECL_Q (C);
-  FP_DECL_Q (R);
-  long double r;
-
-  FP_INIT_ROUNDMODE;
-  FP_UNPACK_Q (A, a);
-  FP_UNPACK_Q (B, b);
-  FP_UNPACK_Q (C, c);
-  FP_FMA_Q (R, A, B, C);
-  FP_PACK_Q (r, R);
-  FP_HANDLE_EXCEPTIONS;
-
-  return r;
-}
-DIAG_POP_NEEDS_COMMENT;
-
-libm_alias_ldouble (__fma, fma)
diff --git a/sysdeps/arm/nofpu/Implies b/sysdeps/arm/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/arm/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/arm/preconfigure b/sysdeps/arm/preconfigure
index 33e9501..d803256 100644
--- a/sysdeps/arm/preconfigure
+++ b/sysdeps/arm/preconfigure
@@ -52,4 +52,5 @@ $as_echo "$as_me: WARNING: arm/preconfigure: Did not find ARM architecture type;
   esac
 
   machine=arm/$machine
+  with_fp_cond="!defined __SOFTFP__"
 esac
diff --git a/sysdeps/arm/preconfigure.ac b/sysdeps/arm/preconfigure.ac
index 20de5bc..43d0140 100644
--- a/sysdeps/arm/preconfigure.ac
+++ b/sysdeps/arm/preconfigure.ac
@@ -47,4 +47,5 @@ arm*)
   esac
 
   machine=arm/$machine
+  with_fp_cond="!defined __SOFTFP__"
 esac
diff --git a/sysdeps/arm/s_fma.c b/sysdeps/arm/s_fma.c
deleted file mode 100644
index dc4e27b..0000000
--- a/sysdeps/arm/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmadf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#endif
diff --git a/sysdeps/arm/s_fmaf.c b/sysdeps/arm/s_fmaf.c
deleted file mode 100644
index 550d8b8..0000000
--- a/sysdeps/arm/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SOFTFP__
-# include <soft-fp/fmasf4.c>
-#else
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#endif
diff --git a/sysdeps/ieee754/soft-fp/Makefile b/sysdeps/ieee754/soft-fp/Makefile
new file mode 100644
index 0000000..ada13e8
--- /dev/null
+++ b/sysdeps/ieee754/soft-fp/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),math)
+CPPFLAGS += -I../soft-fp
+endif
diff --git a/sysdeps/ieee754/soft-fp/s_fma.c b/sysdeps/ieee754/soft-fp/s_fma.c
new file mode 100644
index 0000000..313547d
--- /dev/null
+++ b/sysdeps/ieee754/soft-fp/s_fma.c
@@ -0,0 +1,68 @@
+/* Implement fma using soft-fp.
+   Copyright (C) 2013-2017 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/>.  */
+
+#include <math.h>
+#include <libc-diag.h>
+#include <libm-alias-double.h>
+
+/* R_e is not set in cases where it is not used in packing, but the
+   compiler does not see that it is set in all cases where it is
+   used, resulting in warnings that it may be used uninitialized.
+   The location of the warning differs in different versions of GCC,
+   it may be where R is defined using a macro or it may be where the
+   macro is defined.  */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+
+#include "soft-fp.h"
+#include "double.h"
+
+double
+__fma (double a, double b, double c)
+{
+  FP_DECL_EX;
+  FP_DECL_D (A);
+  FP_DECL_D (B);
+  FP_DECL_D (C);
+  FP_DECL_D (R);
+  double r;
+
+  FP_INIT_ROUNDMODE;
+  FP_UNPACK_D (A, a);
+  FP_UNPACK_D (B, b);
+  FP_UNPACK_D (C, c);
+  FP_FMA_D (R, A, B, C);
+  FP_PACK_D (r, R);
+  FP_HANDLE_EXCEPTIONS;
+
+  return r;
+}
+DIAG_POP_NEEDS_COMMENT;
+
+#ifndef __fma
+libm_alias_double (__fma, fma)
+#endif
diff --git a/sysdeps/ieee754/soft-fp/s_fmaf.c b/sysdeps/ieee754/soft-fp/s_fmaf.c
new file mode 100644
index 0000000..295223d
--- /dev/null
+++ b/sysdeps/ieee754/soft-fp/s_fmaf.c
@@ -0,0 +1,68 @@
+/* Implement fmaf using soft-fp.
+   Copyright (C) 2013-2017 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/>.  */
+
+#include <math.h>
+#include <libc-diag.h>
+#include <libm-alias-float.h>
+
+/* R_e is not set in cases where it is not used in packing, but the
+   compiler does not see that it is set in all cases where it is
+   used, resulting in warnings that it may be used uninitialized.
+   The location of the warning differs in different versions of GCC,
+   it may be where R is defined using a macro or it may be where the
+   macro is defined.  */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+
+#include "soft-fp.h"
+#include "single.h"
+
+float
+__fmaf (float a, float b, float c)
+{
+  FP_DECL_EX;
+  FP_DECL_S (A);
+  FP_DECL_S (B);
+  FP_DECL_S (C);
+  FP_DECL_S (R);
+  float r;
+
+  FP_INIT_ROUNDMODE;
+  FP_UNPACK_S (A, a);
+  FP_UNPACK_S (B, b);
+  FP_UNPACK_S (C, c);
+  FP_FMA_S (R, A, B, C);
+  FP_PACK_S (r, R);
+  FP_HANDLE_EXCEPTIONS;
+
+  return r;
+}
+DIAG_POP_NEEDS_COMMENT;
+
+#ifndef __fmaf
+libm_alias_float (__fma, fma)
+#endif
diff --git a/sysdeps/ieee754/soft-fp/s_fmal.c b/sysdeps/ieee754/soft-fp/s_fmal.c
new file mode 100644
index 0000000..79be52c
--- /dev/null
+++ b/sysdeps/ieee754/soft-fp/s_fmal.c
@@ -0,0 +1,66 @@
+/* Implement fmal using soft-fp.
+   Copyright (C) 2013-2017 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/>.  */
+
+#include <math.h>
+#include <libc-diag.h>
+#include <libm-alias-ldouble.h>
+
+/* R_e is not set in cases where it is not used in packing, but the
+   compiler does not see that it is set in all cases where it is
+   used, resulting in warnings that it may be used uninitialized.
+   The location of the warning differs in different versions of GCC,
+   it may be where R is defined using a macro or it may be where the
+   macro is defined.  */
+DIAG_PUSH_NEEDS_COMMENT;
+DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wmaybe-uninitialized");
+
+#include "soft-fp.h"
+#include "quad.h"
+
+long double
+__fmal (long double a, long double b, long double c)
+{
+  FP_DECL_EX;
+  FP_DECL_Q (A);
+  FP_DECL_Q (B);
+  FP_DECL_Q (C);
+  FP_DECL_Q (R);
+  long double r;
+
+  FP_INIT_ROUNDMODE;
+  FP_UNPACK_Q (A, a);
+  FP_UNPACK_Q (B, b);
+  FP_UNPACK_Q (C, c);
+  FP_FMA_Q (R, A, B, C);
+  FP_PACK_Q (r, R);
+  FP_HANDLE_EXCEPTIONS;
+
+  return r;
+}
+DIAG_POP_NEEDS_COMMENT;
+
+libm_alias_ldouble (__fma, fma)
diff --git a/sysdeps/m68k/coldfire/nofpu/Implies b/sysdeps/m68k/coldfire/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/m68k/coldfire/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/m68k/coldfire/nofpu/s_fma.c b/sysdeps/m68k/coldfire/nofpu/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/m68k/coldfire/nofpu/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/m68k/coldfire/nofpu/s_fmaf.c b/sysdeps/m68k/coldfire/nofpu/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/m68k/coldfire/nofpu/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/microblaze/Implies b/sysdeps/microblaze/Implies
index 73c766c..746b21a 100644
--- a/sysdeps/microblaze/Implies
+++ b/sysdeps/microblaze/Implies
@@ -1,4 +1,5 @@
 wordsize-32
 # MicroBlaze uses IEEE 754 floating point.
+ieee754/soft-fp
 ieee754/flt-32
 ieee754/dbl-64
diff --git a/sysdeps/microblaze/s_fma.c b/sysdeps/microblaze/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/microblaze/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/microblaze/s_fmaf.c b/sysdeps/microblaze/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/microblaze/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/mips/ieee754/s_fma.c b/sysdeps/mips/ieee754/s_fma.c
deleted file mode 100644
index 5741414..0000000
--- a/sysdeps/mips/ieee754/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __mips_hard_float
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#else
-# include <soft-fp/fmadf4.c>
-#endif
diff --git a/sysdeps/mips/ieee754/s_fmaf.c b/sysdeps/mips/ieee754/s_fmaf.c
deleted file mode 100644
index 30bcdae..0000000
--- a/sysdeps/mips/ieee754/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __mips_hard_float
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#else
-# include <soft-fp/fmasf4.c>
-#endif
diff --git a/sysdeps/mips/ieee754/s_fmal.c b/sysdeps/mips/ieee754/s_fmal.c
index 6b83e91..c523319 100644
--- a/sysdeps/mips/ieee754/s_fmal.c
+++ b/sysdeps/mips/ieee754/s_fmal.c
@@ -4,4 +4,4 @@
 # error "long double fma being compiled for o32 ABI"
 #endif
 
-#include <soft-fp/fmatf4.c>
+#include <sysdeps/ieee754/soft-fp/s_fmal.c>
diff --git a/sysdeps/mips/mips32/nofpu/Implies b/sysdeps/mips/mips32/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips32/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/mips/mips64/n32/fpu/s_fma.c b/sysdeps/mips/mips64/n32/fpu/s_fma.c
new file mode 100644
index 0000000..b61fa64
--- /dev/null
+++ b/sysdeps/mips/mips64/n32/fpu/s_fma.c
@@ -0,0 +1 @@
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
diff --git a/sysdeps/mips/mips64/n32/nofpu/Implies b/sysdeps/mips/mips64/n32/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips64/n32/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/mips/mips64/n64/fpu/s_fma.c b/sysdeps/mips/mips64/n64/fpu/s_fma.c
new file mode 100644
index 0000000..b61fa64
--- /dev/null
+++ b/sysdeps/mips/mips64/n64/fpu/s_fma.c
@@ -0,0 +1 @@
+#include <sysdeps/ieee754/dbl-64/s_fma.c>
diff --git a/sysdeps/mips/mips64/n64/nofpu/Implies b/sysdeps/mips/mips64/n64/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/mips/mips64/n64/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/nios2/Implies b/sysdeps/nios2/Implies
index 387a0ca..7d69983 100644
--- a/sysdeps/nios2/Implies
+++ b/sysdeps/nios2/Implies
@@ -1,3 +1,4 @@
 wordsize-32
+ieee754/soft-fp
 ieee754/dbl-64
 ieee754/flt-32
diff --git a/sysdeps/nios2/s_fma.c b/sysdeps/nios2/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/nios2/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/nios2/s_fmaf.c b/sysdeps/nios2/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/nios2/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
diff --git a/sysdeps/sh/nofpu/Implies b/sysdeps/sh/nofpu/Implies
new file mode 100644
index 0000000..abcbadb
--- /dev/null
+++ b/sysdeps/sh/nofpu/Implies
@@ -0,0 +1 @@
+ieee754/soft-fp
diff --git a/sysdeps/sh/s_fma.c b/sysdeps/sh/s_fma.c
deleted file mode 100644
index d92438d..0000000
--- a/sysdeps/sh/s_fma.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SH_FPU_ANY__
-# include <sysdeps/ieee754/dbl-64/s_fma.c>
-#else
-# include <soft-fp/fmadf4.c>
-#endif
diff --git a/sysdeps/sh/s_fmaf.c b/sysdeps/sh/s_fmaf.c
deleted file mode 100644
index 3b811ae..0000000
--- a/sysdeps/sh/s_fmaf.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifdef __SH_FPU_ANY__
-# include <sysdeps/ieee754/dbl-64/s_fmaf.c>
-#else
-# include <soft-fp/fmasf4.c>
-#endif
diff --git a/sysdeps/tile/Implies b/sysdeps/tile/Implies
index 5b29b26..1cbc053 100644
--- a/sysdeps/tile/Implies
+++ b/sysdeps/tile/Implies
@@ -1,2 +1,3 @@
+ieee754/soft-fp
 ieee754/dbl-64
 ieee754/flt-32
diff --git a/sysdeps/tile/s_fma.c b/sysdeps/tile/s_fma.c
deleted file mode 100644
index d9613fa..0000000
--- a/sysdeps/tile/s_fma.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmadf4.c>
diff --git a/sysdeps/tile/s_fmaf.c b/sysdeps/tile/s_fmaf.c
deleted file mode 100644
index aa5c9b2..0000000
--- a/sysdeps/tile/s_fmaf.c
+++ /dev/null
@@ -1 +0,0 @@
-#include <soft-fp/fmasf4.c>
