潮声隔雨深 · 2020年03月01日

将aarch32的NEON代码改写成aarch64的NEON代码后,浮点数的误差问题

我有一段运算浮点数的NEON代码,原来是aarch32的NEON。

现在要将代码移植到64bit平台上,所以我用aarch64的NEON将这段代码进行了重写。

这个重写只是把每条指令换成了aarch64对应的写法,原来的算法没有任何改变,

我认为算出的结果不应该有任何误差,但实际上有误差,请问这种情况正常吗?

1 个回答 得票排序 · 时间排序
一知半解 · 2020年03月01日

正常的。

对于浮点数标准IEEE754,aarch32和aarch64的NEON对double类型的支持是不一样的。比如AArch32对denormalized数(很小的浮点数)直接是算成0的(Flush to zero),但是aarch64不是(IEEE754标准也不是)。具体可以参考ARMv8的reference manual A1.5。

你的回答