diff options
| author | Robert Norton | 2016-05-10 10:51:56 +0100 |
|---|---|---|
| committer | Robert Norton | 2016-05-10 10:51:56 +0100 |
| commit | 1877e8051dd9865f98df810550014537cf42a744 (patch) | |
| tree | 4914eb1abddd28256a49792a559e790f1e91c1a2 | |
| parent | 1436e658046c21e6f4435289c20a69174aee13de (diff) | |
calculate signed modulus using quot as ocaml and mips disagree about what the result should be (specifically for x mod y, x<0 & y<0).
| -rw-r--r-- | mips/mips_insts.sail | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/mips/mips_insts.sail b/mips/mips_insts.sail index 8bb56245..853397fa 100644 --- a/mips/mips_insts.sail +++ b/mips/mips_insts.sail @@ -761,8 +761,8 @@ function clause execute (DIV(rs, rt)) = else let si = (signed((rsVal[31..0]))) in let ti = (signed((rtVal[31..0]))) in - let qi = (si quot_s ti) in - let ri = (si mod_s ti) in + let qi = (si quot ti) in + let ri = (si - (ti*qi)) in ((bit[32]) qi, (bit[32]) ri)) in { @@ -807,7 +807,7 @@ function clause execute (DDIV(rs, rt)) = then (undefined, undefined) else let qi = (rsVal quot_s rtVal) in - let ri = (rsVal mod_s rtVal) in + let ri = (rsVal - (qi * rtVal)) in ((bit[64]) qi, (bit[64]) ri)) in { LO := q; |
