aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Carlin <jordanmcarlin@gmail.com>2024-03-25 12:48:40 -0700
committerBill McSpadden <bill@riscv.org>2024-04-29 12:51:59 -0500
commitd7373930aa2c6a0334125ec6cdd7110fd31b8f86 (patch)
tree6d6e0d227b3c5c867b13136b51f4afec25b71ffb
parent0aae5bc7f57df4ebeddd16d7dd981bde511e2879 (diff)
downloadsail-riscv-d7373930aa2c6a0334125ec6cdd7110fd31b8f86.zip
sail-riscv-d7373930aa2c6a0334125ec6cdd7110fd31b8f86.tar.gz
sail-riscv-d7373930aa2c6a0334125ec6cdd7110fd31b8f86.tar.bz2
Correct fcvtmod.w.d flag generation logic
-rw-r--r--model/riscv_insts_zfa.sail4
1 files changed, 3 insertions, 1 deletions
diff --git a/model/riscv_insts_zfa.sail b/model/riscv_insts_zfa.sail
index 9f1e199..5f9f713 100644
--- a/model/riscv_insts_zfa.sail
+++ b/model/riscv_insts_zfa.sail
@@ -745,7 +745,9 @@ function fcvtmod_helper(x64) = {
else integer;
/* Raise FP exception flags, honoring the precedence of nV > nX */
- let flags : bits(5) = if (true_exp > 31) then nvFlag()
+ let max_integer = if sign == 0b1 then unsigned(0x80000000)
+ else unsigned(0x7fffffff);
+ let flags : bits(5) = if (true_exp > 31 | unsigned(integer) > max_integer) then nvFlag()
else if (fractional != zeros()) then nxFlag()
else zeros();