首页 > 解决方案 > NEON 内在函数中的“最大”与“最大数量”

问题描述

NEON内在函数描述中的“最大值”和“最大数量”有什么区别?例如(来自https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

float32x4_t vmaxq_f32 (float32x4_t a, float32x4_t b)

浮点最大值(向量)。该指令比较两个源 SIMD&FP 寄存器中的对应向量元素,将两个浮点值中的较大者放入一个向量中,并将该向量写入目标 SIMD&FP 寄存器。

float32x4_t vmaxnmq_f32 (float32x4_t a, float32x4_t b)

浮点最大数(向量)。该指令比较两个源 SIMD&FP 寄存器中的对应向量元素,将两个浮点值中较大的一个写入一个向量,并将该向量写入目标 SIMD&FP 寄存器。

只是对 NaN 的不同处理吗?

标签: armsimdarm64neon

解决方案


只是对 NaN 的不同处理吗?

是的。

Armv8 参考手册中的 FMAXNM 说。

根据 IEEE 754-2008 标准处理 NaN。如果一个向量元素是数字,另一个是安静的 NaN,则放在向量中的结果是数值,否则结果与 FMAX 相同。


推荐阅读