diff options
author | Roland McGrath <roland@gnu.org> | 1995-02-18 01:27:10 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1995-02-18 01:27:10 +0000 |
commit | 28f540f45bbacd939bfd07f213bcad2bf730b1bf (patch) | |
tree | 15f07c4c43d635959c6afee96bde71fb1b3614ee /sysdeps/alpha/divrem.m4 | |
download | glibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.tar.gz glibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.tar.xz glibc-28f540f45bbacd939bfd07f213bcad2bf730b1bf.zip |
initial import
Diffstat (limited to 'sysdeps/alpha/divrem.m4')
-rw-r--r-- | sysdeps/alpha/divrem.m4 | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/sysdeps/alpha/divrem.m4 b/sysdeps/alpha/divrem.m4 new file mode 100644 index 0000000000..5942cf447f --- /dev/null +++ b/sysdeps/alpha/divrem.m4 @@ -0,0 +1,48 @@ +/* For each N divided by D, we do: + result = (double) N / (double) D + Then, for each N mod D, we do: + result = N - (D * divMODE (N, D)) + + FIXME: + The q and qu versions won't deal with operands > 50 bits. We also + don't check for divide by zero. */ + +#include "DEFS.h" +#if 0 +/* We do not handle div by zero yet. */ +#include <machine/pal.h> +#endif +#include <sysdep.h> + +define(path, `SYSDEP_DIR/macros.m4')dnl +include(path) + +FUNC__(OP) + /* First set up the dividend. */ + EXTEND(t10) + stq t10,0(sp) + ldt $f10,0(sp) + cvtqt $f10,$f10 + ADJQU($f10) + + /* Then set up the divisor. */ + EXTEND(t11) + stq t11,0(sp) + ldt $f1,0(sp) + cvtqt $f1,$f1 + ADJQU($f1) + + /* Do the division. */ + divt $f10,$f1,$f10 + cvttqc $f10,$f10 + + /* Put the result in t12. */ + stt $f10,0(sp) + ldq t12,0(sp) + FULLEXTEND(t12) + + DOREM + + lda sp,16(sp) + ret zero,(t9),1 + .end NAME__(OP) |