math: Add ARM implementation for signbit, signbitf and signbitl
diff --git a/mingw-w64-crt/math/signbit.c b/mingw-w64-crt/math/signbit.c
index 3d4900e..5b9c8cc 100644
--- a/mingw-w64-crt/math/signbit.c
+++ b/mingw-w64-crt/math/signbit.c
@@ -16,12 +16,12 @@
 
 int __signbit (double x)
 {
-#ifdef __x86_64__
+#if defined(__x86_64__) || defined(_AMD64_) || defined(__arm__) || defined(_ARM_)
     __mingw_dbl_type_t hlp;
     
     hlp.x = x;
     return ((hlp.lh.high & 0x80000000) != 0);
-#else
+#elif defined(__i386__) || defined(_X86_)
   unsigned short sw;
   __asm__ __volatile__ ("fxam; fstsw %%ax;"
 	   : "=a" (sw)
diff --git a/mingw-w64-crt/math/signbitf.c b/mingw-w64-crt/math/signbitf.c
index 405baa1..3745862 100644
--- a/mingw-w64-crt/math/signbitf.c
+++ b/mingw-w64-crt/math/signbitf.c
@@ -13,11 +13,11 @@
 
 int __signbitf (float x)
 {
-#ifdef __x86_64__
+#if defined(__x86_64__) || defined(_AMD64_) || defined(__arm__) || defined(_ARM_)
     __mingw_flt_type_t hlp;
     hlp.x = x;
     return ((hlp.val & 0x80000000) != 0);
-#else
+#elif defined(__i386__) || defined(_X86_)
   unsigned short sw;
   __asm__ __volatile__ ("fxam; fstsw %%ax;"
 	   : "=a" (sw)
diff --git a/mingw-w64-crt/math/signbitl.c b/mingw-w64-crt/math/signbitl.c
index a7cb0f6..e0c29c7 100644
--- a/mingw-w64-crt/math/signbitl.c
+++ b/mingw-w64-crt/math/signbitl.c
@@ -25,11 +25,13 @@
 
 
 int __signbitl (long double x) {
-#ifdef __x86_64
+#if defined(__x86_64__) || defined(_AMD64_)
     __mingw_fp_types_t ld;
     ld.ld = &x;
     return ((ld.ldt->lh.sign_exponent & 0x8000) != 0);
-#else
+#elif defined(__arm__) || defined(_ARM_)
+    __signbit(x);
+#elif defined(__i386__) || defined(_X86_)
   unsigned short sw;
   __asm__ __volatile__ ("fxam; fstsw %%ax;"
 	   : "=a" (sw)