【发布时间】:2018-05-23 18:16:56
【问题描述】:
我正在尝试使用 ARMv7 NEON 矢量化来开发汇编代码。在某些时候,我需要将一个 32 位值(单字)从一个 NEON 向量复制到另一个向量,例如 mov dm[0], dn[1]。当我查看手册时,我找不到任何可以执行此逻辑的 mov 或 vmov 操作,因为它们需要在源或目标中有 ARM 寄存器 r。有什么想法或替代方案吗?
【问题讨论】:
-
@PaulR 他的意思是移动 32 位字而不是整个寄存器。
-
ARM NEON 在
vtbl/vtbx中有一个非常灵活的可变字节改组工具。 -
@EOF
vtbl具有非常长的延迟,并且它会占用一个寄存器。 IMO 不是一个非常明智的解决方案。 -
@Jake'Alquimista'LEE 是的,但正如我所说,这是一个一般洗牌。如果问题是“如何移动......”,那么
vtbl/vtbx是一个有效的答案。如果问题是“如何优化这个特定的洗牌”,它可能不会。 -
@EOF 这不是关于优化,而是关于可行性。你不应该简单地建议
vtbl而不告诉副作用。