xref: /aosp_15_r20/external/musl/src/math/x86_64/fma.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include <math.h>
2*c9945492SAndroid Build Coastguard Worker 
3*c9945492SAndroid Build Coastguard Worker #if __FMA__
4*c9945492SAndroid Build Coastguard Worker 
fma(double x,double y,double z)5*c9945492SAndroid Build Coastguard Worker double fma(double x, double y, double z)
6*c9945492SAndroid Build Coastguard Worker {
7*c9945492SAndroid Build Coastguard Worker 	__asm__ ("vfmadd132sd %1, %2, %0" : "+x" (x) : "x" (y), "x" (z));
8*c9945492SAndroid Build Coastguard Worker 	return x;
9*c9945492SAndroid Build Coastguard Worker }
10*c9945492SAndroid Build Coastguard Worker 
11*c9945492SAndroid Build Coastguard Worker #elif __FMA4__
12*c9945492SAndroid Build Coastguard Worker 
fma(double x,double y,double z)13*c9945492SAndroid Build Coastguard Worker double fma(double x, double y, double z)
14*c9945492SAndroid Build Coastguard Worker {
15*c9945492SAndroid Build Coastguard Worker 	__asm__ ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
16*c9945492SAndroid Build Coastguard Worker 	return x;
17*c9945492SAndroid Build Coastguard Worker }
18*c9945492SAndroid Build Coastguard Worker 
19*c9945492SAndroid Build Coastguard Worker #else
20*c9945492SAndroid Build Coastguard Worker 
21*c9945492SAndroid Build Coastguard Worker #include "../fma.c"
22*c9945492SAndroid Build Coastguard Worker 
23*c9945492SAndroid Build Coastguard Worker #endif
24