VMLA ARM 指令的语义

问题描述 投票:0回答:2

我是否正确地说,

VMLA.F32
指令完全相当于 F32 乘法(完成舍入步骤)后跟 F32 加法,包括 NaN 有效负载? (看起来是这样,但是文档有点简洁,我想确认一下。)

(以及 F64 的作必要修正

floating-point arm neon
2个回答
1
投票

我是否正确地说 VMLA.F32 指令完全相当于 F32 乘法(完成舍入步骤),然后是 F32 加法...

几乎所有实际目的都是如此。

包括 NaN 有效负载?

对于安静 NaN 是,但对于浮点异常否,包括发信号 NaN。对于 vmul.f32+vadd.f32,异常优先级由操作顺序指定,操作顺序由指令顺序指定。但对于 vmla.f32 和 vfma.f32 等多操作指令,则视情况而定。从: https://developer.arm.com/documentation/ddi0406/c/Application-Level-Architecture/Application-Level-Programmers--Model/Floating-point-data-types-and-arithmetic/Floating-point-exceptions? lang=en

某些浮点指令指定多个浮点运算,如指令的伪代码描述所示。在这种情况下,如果第二个异常的发生取决于第一个操作的结果,则一个操作上的异常将被视为比另一个操作上的异常更高的优先级。否则,无法预测哪个异常被视为更高优先级。

例如,VMLA.F32 指令指定浮点乘法,后跟浮点加法。加法可能会生成上溢、下溢和不精确异常,所有这些异常都依赖于加法的两个操作数,因此被视为比乘法中的任何异常都低的优先级。这同样适用于因添加相反符号的无穷大而导致的加法无效运算异常。加法还可能生成输入非正规异常,这是由于在清零模式下加数是非正规化数字引起的。由于输入非正规异常的发生不依赖于乘法的结果,所以无法预测加法的输入非正规异常和乘法的异常中哪一个被处理为更高优先级。这同样适用于因加数为信令 NaN 而导致的加法无效操作异常。


-4
投票

IEEE754
合规性意味着浮点单元支持 double、NaN、次正规数和融合乘法累加。

虽然

aarch64
霓虹灯符合
IEEE754
标准,但
aarch32
不符合:它缺少
double
,此外,
Cortex-a8
没有融合乘法。

© www.soinside.com 2019 - 2024. All rights reserved.