【问题标题】:what does the last L in VMULL mean in the arm neon assembly languageVMULL中的最后一个L在arm neon汇编语言中是什么意思
【发布时间】:2013-06-28 21:09:05
【问题描述】:

我开始学习 arm asm。现在我想知道指令 vmull.u8 q7, d0, d4 中的最后一个“l”是什么意思?我发现这里解释的指令 VMUL{cond}Condition codes 解释了可用的不同条件,但由于 vmull 中的最后一个“l”不在列表中,我不明白它的意思。

【问题讨论】:

    标签: assembly arm neon


    【解决方案1】:

    “长”

    乘以两个定点数会得到双倍长度的“长”结果,因此需要双倍的寄存器宽度来存储结果。

    所以 s8 x s8 => s16 结果。

    这在技术上是任何定点乘法所必需的,以便以完美的精度存储结果,因为将两个“n”位数相乘需要(2 * n) - 1 位与VMULL 用于有符号数(2 * n) 用于无符号数。但有时在算术中,您只对较小的整数进行运算,而不关心高位,因此您可以使用更快且需要更少寄存器的VMUL。有时在信号处理中,如果您表示某种十进制格式(有时称为"Q" numbers),例如使用 16 位有符号数字(s16)的 Q15,那么您实际上不需要 lower 位, NEON 也通过VQDMLH 提供此功能。无论您需要什么,NEON 都能做到。

    【讨论】:

    • 实际上,对于无符号乘法,您需要所有 2 * n 位。最大可能的产品为原始宽度 (vaddw) 的另外两个添加留出了空间,但不是,例如,左移。
    【解决方案2】:

    可选条件码主要适用于 Thumb 模式。在 ARM 模式下,唯一有条件可执行的 NEON 指令是与 VFP 共享的指令。 (例如 VLDM)

    显然您正在阅读最新版本的 ARM NEON 指南 (5.03)

    由于一些未知的原因,它缺少所有那些对 IMO 非常重要的长、宽和窄变体。获取列出所有变体的早期版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2017-08-28
      • 2023-04-10
      • 1970-01-01
      相关资源
      最近更新 更多