问题描述 投票:3回答:1
所以我的问题或者是出于我对fpu机制的理解,或者我正在使用的实现存在问题。

问题:当使用源操作数这样的值(rs1 = 0xBF800000,rs2 = 0x80542353,rs3 = 0x80800000)执行融合乘法加法指令时,结果是rd = 0x802BDCAD,这很好,但是它是非正态(微小)值,我非常确定应该设置fpu标志U(下溢)。由于某种原因,它不是。RISC-V文档指出,次标准值的处理符合关于四舍五入后验证微小性的ieee754-2008的规定,该标准指出,如果结果小于最小标准值(在这种情况下为2 ^ -126)(但不为0),则会发出下溢信号。结果显然是。

我是否缺少某些内容,并且标记是不必要的,或者可能存在实施问题?

assembly floating-point cpu-architecture ieee-754 riscv
1个回答
2
投票
IEEE-754并未说,使用舍入后的微小检测,如果结果小于最小正常值但不为零,将始终发出下溢信号。尽管IEEE-754 2008 7.5在其第一句话中以此开头,但其最后一段表示“此外,在默认情况下对下溢进行异常处理时,如果舍入的结果不精确,则应引发下溢标志并且不精确(请参见7.6)异常应提高。如果舍入的结果是正确的,则不会引发任何标志,也不会发出不精确的异常信号。…”

因此,如果未对下溢异常启用陷阱(将以默认方式处理下溢异常,在不中断程序执行的情况下提供通常的结果),则只要结果准确无误,就不会丢失任何信息结果很小,并且不会提高下溢标志。


0
投票

是的,就是这样。非常感谢!

© www.soinside.com 2019 - 2024. All rights reserved.