xref: /aosp_15_r20/external/musl/src/math/x86_64/fabs.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <math.h>
2*c9945492SAndroid Build Coastguard Worker 
fabs(double x)3*c9945492SAndroid Build Coastguard Worker double 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