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
fmaf(float x,float y,float z)5*c9945492SAndroid Build Coastguard Worker float fmaf(float x, float y, float z)
6*c9945492SAndroid Build Coastguard Worker {
7*c9945492SAndroid Build Coastguard Worker __asm__ ("vfmadd132ss %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
fmaf(float x,float y,float z)13*c9945492SAndroid Build Coastguard Worker float fmaf(float x, float y, float z)
14*c9945492SAndroid Build Coastguard Worker {
15*c9945492SAndroid Build Coastguard Worker __asm__ ("vfmaddss %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 "../fmaf.c"
22*c9945492SAndroid Build Coastguard Worker
23*c9945492SAndroid Build Coastguard Worker #endif
24