fabs.c raw

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