Blame sysdeps/i386/fpu/e_fmodl.c
|
Packit |
6c4009 |
/*
|
|
Packit |
6c4009 |
* Written by J.T. Conklin <jtc@netbsd.org>.
|
|
Packit |
6c4009 |
* Public domain.
|
|
Packit |
6c4009 |
*
|
|
Packit |
6c4009 |
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
|
|
Packit |
6c4009 |
*/
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#include <math_private.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
long double
|
|
Packit |
6c4009 |
__ieee754_fmodl (long double x, long double y)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
long double res;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
asm ("1:\tfprem\n"
|
|
Packit |
6c4009 |
"fstsw %%ax\n"
|
|
Packit |
6c4009 |
"sahf\n"
|
|
Packit |
6c4009 |
"jp 1b\n"
|
|
Packit |
6c4009 |
"fstp %%st(1)"
|
|
Packit |
6c4009 |
: "=t" (res) : "0" (x), "u" (y) : "ax", "st(1)");
|
|
Packit |
6c4009 |
return res;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
strong_alias (__ieee754_fmodl, __fmodl_finite)
|