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