diff options
author | Peter Gavin <pgavin@gmail.com> | 2017-12-09 05:57:25 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2017-12-12 23:41:43 +0900 |
commit | 07b95864f35f19636e2a95eaf3083a8b18ac7cda (patch) | |
tree | 5ebfa4d1d728e6625c033a9c8cf90f3e45468ded /sim/common/sim-fpu.h | |
parent | 638d913757609367eea219d00296a0a3d45010c2 (diff) | |
download | fsf-binutils-gdb-07b95864f35f19636e2a95eaf3083a8b18ac7cda.zip fsf-binutils-gdb-07b95864f35f19636e2a95eaf3083a8b18ac7cda.tar.gz fsf-binutils-gdb-07b95864f35f19636e2a95eaf3083a8b18ac7cda.tar.bz2 |
sim: cgen: add remainder functions (needed for OR1K lf.rem.[sd])
* sim/common/ChangeLog:
2017-12-12 Peter Gavin <pgavin@gmail.com>
Stafford Horne <shorne@gmail.com>
* cgen-accfp.c (remsf, remdf): New function.
(cgen_init_accurate_fpu): Add remsf and remdf.
* cgen-fpu.h (cgen_fp_ops): Add remsf, remdf, remxf and remtf.
* sim-fpu.c (sim_fpu_rem): New function.
* sim-fpu.h (sim_fpu_status_invalid_irx): New enum.
(sim_fpu_rem): New function.
(sim_fpu_print_status): Add case for sim_fpu_status_invalid_irx.
Diffstat (limited to 'sim/common/sim-fpu.h')
-rw-r--r-- | sim/common/sim-fpu.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/sim/common/sim-fpu.h b/sim/common/sim-fpu.h index d27d80a..adf3b19 100644 --- a/sim/common/sim-fpu.h +++ b/sim/common/sim-fpu.h @@ -146,11 +146,12 @@ typedef enum sim_fpu_status_invalid_div0 = 128, /* (X / 0) */ sim_fpu_status_invalid_cmp = 256, /* compare */ sim_fpu_status_invalid_sqrt = 512, - sim_fpu_status_rounded = 1024, - sim_fpu_status_inexact = 2048, - sim_fpu_status_overflow = 4096, - sim_fpu_status_underflow = 8192, - sim_fpu_status_denorm = 16384, + sim_fpu_status_invalid_irx = 1024, /* (inf % X) */ + sim_fpu_status_rounded = 2048, + sim_fpu_status_inexact = 4096, + sim_fpu_status_overflow = 8192, + sim_fpu_status_underflow = 16384, + sim_fpu_status_denorm = 32768, } sim_fpu_status; @@ -230,6 +231,8 @@ INLINE_SIM_FPU (int) sim_fpu_mul (sim_fpu *f, const sim_fpu *l, const sim_fpu *r); INLINE_SIM_FPU (int) sim_fpu_div (sim_fpu *f, const sim_fpu *l, const sim_fpu *r); +INLINE_SIM_FPU (int) sim_fpu_rem (sim_fpu *f, + const sim_fpu *l, const sim_fpu *r); INLINE_SIM_FPU (int) sim_fpu_max (sim_fpu *f, const sim_fpu *l, const sim_fpu *r); INLINE_SIM_FPU (int) sim_fpu_min (sim_fpu *f, |