diff options
author | Jordan Carlin <jordanmcarlin@gmail.com> | 2024-03-25 12:48:40 -0700 |
---|---|---|
committer | Bill McSpadden <bill@riscv.org> | 2024-04-29 12:51:59 -0500 |
commit | d7373930aa2c6a0334125ec6cdd7110fd31b8f86 (patch) | |
tree | 6d6e0d227b3c5c867b13136b51f4afec25b71ffb | |
parent | 0aae5bc7f57df4ebeddd16d7dd981bde511e2879 (diff) | |
download | sail-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.sail | 4 |
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(); |