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