These are only available on hard float target and sqrt is not available in the base ISA, so further check is used.
@@ -0,0 +1,15 @@
+#include <math.h>
+
+#ifdef _SOFT_FLOAT
+#include "../fabs.c"
+#else
+double fabs(double x)
+{
+ __asm__ ("fabs %0, %1" : "=d"(x) : "d"(x));
+ return x;
+}
+#endif
+#include "../fabsf.c"
+float fabsf(float x)
+ __asm__ ("fabs %0, %1" : "=f"(x) : "f"(x));
+#include "../fma.c"
+double fma(double x, double y, double z)
+ __asm__("fmadd %0, %1, %2, %3" : "=d"(x) : "d"(x), "d"(y), "d"(z));
+#include "../fmaf.c"
+float fmaf(float x, float y, float z)
+ __asm__("fmadds %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z));
+#if !defined _SOFT_FLOAT && defined _ARCH_PPCSQ
+double sqrt(double x)
+ __asm__ ("fsqrt %0, %1\n" : "=d" (x) : "d" (x));
+#include "../sqrt.c"
+float sqrtf(float x)
+ __asm__ ("fsqrts %0, %1\n" : "=f" (x) : "f" (x));
+#include "../sqrtf.c"