mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-18 20:39:33 +08:00
023ddc4128
On 32 bit x86, clang seems to miss loading input parameters based on asm constraints for inline assembly that uses the x87 floating registers, unless the snippet has got the volatile keyword. Signed-off-by: Martin Storsjö <martin@martin.st>
19 lines
625 B
C
19 lines
625 B
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
long double fabsl (long double x);
|
|
|
|
long double
|
|
fabsl (long double x)
|
|
{
|
|
#if defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_)
|
|
long double res = 0.0L;
|
|
asm volatile ("fabs;" : "=t" (res) : "0" (x));
|
|
return res;
|
|
#elif defined(__arm__) || defined(_ARM_)
|
|
return __builtin_fabsl (x);
|
|
#endif /* defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_) */
|
|
}
|