You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When executing the fsqrt.d instruction on a double-precision floating-point value representing positive infinity (0x7ff0000000000000), the Overflow (OF) flag in the fflags register is erroneously set. According to the IEEE 754 standard and the RISC-V specification, the fsqrt.d operation should not lead to an overflow situation when the input is infinity. This also results in inconsistency with Spike's output
Expected Behavior:
The OF flag in the fflags register should remain clear (i.e., not set) after performing a square root operation on an infinite value, as the result is well-defined and should be positive infinity.
Actual Behavior:
The OF flag is set in the fflags register, indicating an overflow, which contradicts the expected behavior defined by the IEEE 754 standard and RISC-V floating-point operation guidelines.
Steps to Reproduce:
Load a double-precision floating-point register with the value 0x7ff0000000000000 (positive infinity).
Execute the fsqrt.d instruction on this register.
Check the fflags register; observe that the OF flag is incorrectly set.
Thank you very much for your detailed explanation.
The bug occurs in the commit version of cvfpu: 79e4531 (v0.8.1), and as you mentioned, I noticed that this version has not yet included "THMULTI."
Additionally, the issue was raised in April, and from checking the commit records, it seems that "THMULTI" was only introduced to cvfpu in May.
Furthermore, I have reviewed the bugs that have been reported previously and did not see this mentioned, which is why I raised an issue. I will verify whether adding "THMULTI" resolves the bug.
Bug Description
When executing the
fsqrt.d
instruction on a double-precision floating-point value representing positive infinity (0x7ff0000000000000), the Overflow (OF) flag in the fflags register is erroneously set. According to the IEEE 754 standard and the RISC-V specification, the fsqrt.d operation should not lead to an overflow situation when the input is infinity. This also results in inconsistency with Spike's outputExpected Behavior:
The
OF
flag in the fflags register should remain clear (i.e., not set) after performing a square root operation on an infinite value, as the result is well-defined and should be positive infinity.Actual Behavior:
The
OF
flag is set in the fflags register, indicating an overflow, which contradicts the expected behavior defined by the IEEE 754 standard and RISC-V floating-point operation guidelines.Steps to Reproduce:
0x7ff0000000000000
(positive infinity).fsqrt.d
instruction on this register.fflags
register; observe that theOF
flag is incorrectly set.EDIT: A PR has been submitted pulp-platform/fpu_div_sqrt_mvp#25
EDIT: And See: openhwgroup/cva6#2058
The text was updated successfully, but these errors were encountered: