mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-28 04:13:26 +08:00
fac3a8a6e4
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
669 B
C
19 lines
669 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_) || defined(__aarch64__) || defined(_ARM64_)
|
|
return __builtin_fabsl (x);
|
|
#endif /* defined(__x86_64__) || defined(_AMD64_) || defined(__i386__) || defined(_X86_) */
|
|
}
|