SQRT.fmt exists on MIPS II+ (float), MIPS III+ (double). ABS.fmt exists on MIPS I+ but only cores with ABS2008 flag in FCSR implement the required behaviour.
@@ -0,0 +1,16 @@
+#if !defined(__mips_soft_float) && defined(__mips_abs2008)
+
+#include <math.h>
+double fabs(double x)
+{
+ double r;
+ __asm__("abs.d %0,%1" : "=f"(r) : "f"(x));
+ return r;
+}
+#else
+#include "../fabs.c"
+#endif
+float fabsf(float x)
+ float r;
+ __asm__("abs.s %0,%1" : "=f"(r) : "f"(x));
+#include "../fabsf.c"
+#if !defined(__mips_soft_float) && __mips >= 3
+double sqrt(double x)
+ __asm__("sqrt.d %0,%1" : "=f"(r) : "f"(x));
+#include "../sqrt.c"
+#if !defined(__mips_soft_float) && __mips >= 2
+float sqrtf(float x)
+ __asm__("sqrt.s %0,%1" : "=f"(r) : "f"(x));
+#include "../sqrtf.c"