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)