blob: 1656247770f778aba56e0620adbc3e8241a3e8ea (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
|
#include <math.h>
double fabs(double x)
{
double t;
__asm__ ("pcmpeqd %0, %0" : "=x"(t)); // t = ~0
__asm__ ("psrlq $1, %0" : "+x"(t)); // t >>= 1
__asm__ ("andps %1, %0" : "+x"(x) : "x"(t)); // x &= t
return x;
}
|