mirror of https://git.musl-libc.org/git/musl
Browse Source
These are only available on hard float target and sqrt is not available in the base ISA, so further check is used.master
committed by
Rich Felker
6 changed files with 90 additions and 0 deletions
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#ifdef _SOFT_FLOAT |
||||
|
|
||||
|
#include "../fabs.c" |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
double fabs(double x) |
||||
|
{ |
||||
|
__asm__ ("fabs %0, %1" : "=d"(x) : "d"(x)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#ifdef _SOFT_FLOAT |
||||
|
|
||||
|
#include "../fabsf.c" |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
float fabsf(float x) |
||||
|
{ |
||||
|
__asm__ ("fabs %0, %1" : "=f"(x) : "f"(x)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#ifdef _SOFT_FLOAT |
||||
|
|
||||
|
#include "../fma.c" |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
double fma(double x, double y, double z) |
||||
|
{ |
||||
|
__asm__("fmadd %0, %1, %2, %3" : "=d"(x) : "d"(x), "d"(y), "d"(z)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#ifdef _SOFT_FLOAT |
||||
|
|
||||
|
#include "../fmaf.c" |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
float fmaf(float x, float y, float z) |
||||
|
{ |
||||
|
__asm__("fmadds %0, %1, %2, %3" : "=f"(x) : "f"(x), "f"(y), "f"(z)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#if !defined _SOFT_FLOAT && defined _ARCH_PPCSQ |
||||
|
|
||||
|
double sqrt(double x) |
||||
|
{ |
||||
|
__asm__ ("fsqrt %0, %1\n" : "=d" (x) : "d" (x)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
#include "../sqrt.c" |
||||
|
|
||||
|
#endif |
||||
@ -0,0 +1,15 @@ |
|||||
|
#include <math.h> |
||||
|
|
||||
|
#if !defined _SOFT_FLOAT && defined _ARCH_PPCSQ |
||||
|
|
||||
|
float sqrtf(float x) |
||||
|
{ |
||||
|
__asm__ ("fsqrts %0, %1\n" : "=f" (x) : "f" (x)); |
||||
|
return x; |
||||
|
} |
||||
|
|
||||
|
#else |
||||
|
|
||||
|
#include "../sqrtf.c" |
||||
|
|
||||
|
#endif |
||||
Loading…
Reference in new issue