Fround.h with rmm rounding mode mismatched with ImperasDV
Created by: coreyqh
When running fround.h tests with explicit rmm rounding, Imperas mismatches. It appears that Wally rounds correctly, just to the wrong value.
For example, Wally rounds 0xc872 (decimal -8.890625) to 0xc800 (decimal -8) while the reference rounds to 0xc880 (decimal -9).
$ wsim rv32gc tests/rv32/ZfaZfh/WALLY-COV-fround.h.elf --fcov
# Info (IDV) Instruction executed prior to mismatch '0x80000e54(rvtest_entry_point+e54): 4445ce53 fround.h f28,f11,rmm'
# Error (IDV) FPR register value mismatch (HartId:0, PC:0x80000e54 rvtest_entry_point+e54):
# Error (IDV) Mismatch 0> FPR f28
# Error (IDV) . dut:0xffffffffffffc800
# Error (IDV) . ref:0xffffffffffffc880
# Error (IDV) testbench.idv_trace2api.state_compare @ 22340: MISMATCH
The assembly file leading to mismatch is here WALLY-COV-fround.h.S.tar.gz