ARM NEON将f32转换为s32,向右转均匀

时间:2014-09-23 20:15:54

标签: arm neon bankers-rounding

是否有任何函数可以控制vcvt_s32_f32内在的舍入模式?我想使用舍入而不是向负无穷大舍入。

感谢。

1 个答案:

答案 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术语,因此更确切地说这是圆形到最近,与偶数相关