是否有任何函数可以控制 vcvt_s32_f32 内在的舍入模式?我想对偶数使用舍入而不是向负无穷大舍入。
谢谢。
不,您不能更改舍入模式。
NEON 是为性能而非精度而设计的,因此与 VFP 相比受到限制。与 VFP 不同,它不是完整的 IEEE 754 实现,并且硬连线到某些设置 - 引用 ARM ARM:
- 非规范化数字被刷新为零
- 仅支持默认 NaN
- Round to Nearest *已选择舍入模式
- 为所有浮点异常选择未捕获的异常处理
浮点到整数转换的具体情况略有不同,VCVT
在这种情况下指令的行为(对于 VFP 和 NEON)是忽略选定的舍入模式并始终向零舍入。使用所选舍入模式的VCVTR
指令仅在 VFP 中可用。
ARMv8 架构引入了一大堆用于使用特定舍入模式的舍入和转换指令,但我怀疑这在这种特殊情况下并没有太大帮助。如果您想在 ARMv7 和更早版本的不同舍入模式下进行转换,则必须使用 VFP(如果可用)或一些位黑客来手动实现它。
* ARM ARM 使用 IEEE 754-1985 术语,所以更准确地说,这是四舍五入到最接近的,甚至