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