ARM 中的 VMNNM 指令
Posted
技术标签:
【中文标题】ARM 中的 VMNNM 指令【英文标题】:VMINNM instruction in ARM 【发布时间】:2018-06-22 10:32:51 【问题描述】:我想知道vminnm
的工作原理。由于伪代码有点不清楚,我无法理解该指令的确切功能。
vminnm.f32 d3, d5, d13
在哪里
d5 = 0xffd5432100000000
d13 = 0x7ff0056000000000
结果:
d3 = 0x7fc0000000000000
我们是如何得出这个结果的?
【问题讨论】:
根据文档infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802b/…,应该计算d3和d5的最小值,并在d13上返回结果。所以,这对我来说没有意义。 我也有同样的疑问。但是模拟器显示了这个结果,我确信模拟器是正确的。 你从哪里得到这个伪代码?您是否编译并检查了结果?你用的是哪个模拟器?它支持高级 SIMD 吗? 【参考方案1】:这是该指令的 ARM 参考手册中的定义。 (NaN 是 Not a Number,这意味着该值不是有效的浮点数。)
VMINNM
该指令确定浮点最小数。 它按照 IEEE754-2008 规范处理 NaN。它返回数字操作数,当 操作数是数字,另一个是安静的 NaN,但除此之外,结果与浮点 VMIN 相同。 该指令不是有条件的。
vminnm.f32 d3, d5, d13
在您的示例中,比较 d5 和 d13 中的值,比较结果存储在 d3 中。考虑到您正在处理向量,并且每个向量中有两个元素,每个元素都是 32 位浮点数。
值 0xffd5432100000000 是有效的 64 位双精度数,但不是两个 32 位浮点数,即 0xffd54321 是 不是数字 0x00000000 为 0,因此当您比较这些值时,您需要了解所比较值的宽度。 (可以查看浮点数的值here。)
【讨论】:
以上是关于ARM 中的 VMNNM 指令的主要内容,如果未能解决你的问题,请参考以下文章