mirror of https://git.musl-libc.org/git/musl
committed by
Rich Felker
8 changed files with 38 additions and 44 deletions
@ -0,0 +1,10 @@ |
|||
#include <math.h> |
|||
|
|||
double fmod(double x, double y) |
|||
{ |
|||
unsigned short fpsr; |
|||
// fprem does not introduce excess precision into x
|
|||
do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); |
|||
while (fpsr & 0x400); |
|||
return x; |
|||
} |
|||
@ -1,11 +0,0 @@ |
|||
.global fmod |
|||
.type fmod,@function |
|||
fmod: |
|||
fldl 12(%esp) |
|||
fldl 4(%esp) |
|||
1: fprem |
|||
fnstsw %ax |
|||
sahf |
|||
jp 1b |
|||
fstp %st(1) |
|||
ret |
|||
@ -0,0 +1,10 @@ |
|||
#include <math.h> |
|||
|
|||
float fmodf(float x, float y) |
|||
{ |
|||
unsigned short fpsr; |
|||
// fprem does not introduce excess precision into x
|
|||
do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); |
|||
while (fpsr & 0x400); |
|||
return x; |
|||
} |
|||
@ -1,11 +0,0 @@ |
|||
.global fmodf |
|||
.type fmodf,@function |
|||
fmodf: |
|||
flds 8(%esp) |
|||
flds 4(%esp) |
|||
1: fprem |
|||
fnstsw %ax |
|||
sahf |
|||
jp 1b |
|||
fstp %st(1) |
|||
ret |
|||
@ -0,0 +1,9 @@ |
|||
#include <math.h> |
|||
|
|||
long double fmodl(long double x, long double y) |
|||
{ |
|||
unsigned short fpsr; |
|||
do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); |
|||
while (fpsr & 0x400); |
|||
return x; |
|||
} |
|||
@ -1,11 +0,0 @@ |
|||
.global fmodl |
|||
.type fmodl,@function |
|||
fmodl: |
|||
fldt 16(%esp) |
|||
fldt 4(%esp) |
|||
1: fprem |
|||
fnstsw %ax |
|||
sahf |
|||
jp 1b |
|||
fstp %st(1) |
|||
ret |
|||
@ -0,0 +1,9 @@ |
|||
#include <math.h> |
|||
|
|||
long double fmodl(long double x, long double y) |
|||
{ |
|||
unsigned short fpsr; |
|||
do __asm__ ("fprem; fnstsw %%ax" : "+t"(x), "=a"(fpsr) : "u"(y)); |
|||
while (fpsr & 0x400); |
|||
return x; |
|||
} |
|||
@ -1,11 +0,0 @@ |
|||
.global fmodl |
|||
.type fmodl,@function |
|||
fmodl: |
|||
fldt 24(%rsp) |
|||
fldt 8(%rsp) |
|||
1: fprem |
|||
fnstsw %ax |
|||
testb $4,%ah |
|||
jnz 1b |
|||
fstp %st(1) |
|||
ret |
|||
Loading…
Reference in new issue