带有溢出的 ARM Neon 浮点整数转换的行为

Posted

技术标签:

【中文标题】带有溢出的 ARM Neon 浮点整数转换的行为【英文标题】:Behavior of ARM Neon float-integer conversion with overflow 【发布时间】:2014-07-03 06:55:43 【问题描述】:

如何定义 ARM Neon 浮点到整数转换指令 vcvt.s32.f32vcvt.u32.f32 在发生溢出时的行为?您能否依赖我在特定处理器上观察到的行为,即结果已饱和?任何指向官方文档的链接都非常感谢。

【问题讨论】:

【参考方案1】:

ARM Architecture Reference Manual 是此类问题的所有答案的来源。在 A8.8.305 节中它说:

浮点到整数运算使用向零舍入模式。

并在词汇表中阐明:

向零 (RZ) 模式舍入 意味着将结果四舍五入到最接近的可表示数字,该数字的大小不大于未四舍五入的结果。

(与 IEEE 754 中“向零舍入”的含义相同。)

血淋淋的细节在FPToFixedFPUnpack 的伪代码中。

所以,简而言之:是的,结果保证是饱和的。

【讨论】:

以上是关于带有溢出的 ARM Neon 浮点整数转换的行为的主要内容,如果未能解决你的问题,请参考以下文章

ARM Neon iOS 浮点转换

使用 iPhone 的 SIMD 浮点单元将浮点数转换为整数

我可以在 x86 C 程序中模拟 ARM NEON 吗?

NEON 汇编代码,如何将 BYTE 转换为浮点数?

如何在ARM中进行浮点计算?

为啥他们仍然有单独的浮点单元,如果在 ARM 皮质处理器中有用于快速处理浮点的 Neon。 [关闭]