Intel 64/ IA32 Packed Horizo​​ntal ADD for Quadwords?

Intel 64/ IA32 Packed Horizontal ADD for Quadwords?

我正在寻找类似 PHADDD 的指令,仅适用于四字。 PHADDQ不存在,有这样的指令吗?

phaddd 并不比 2 次随机播放 + 一次垂直添加快,因此只有当您使用 2 个单独的输入时才值得考虑。

如果您打算在两个输入相同的情况下使用它,只需使用 pshufd 复制+交换到另一个向量。 (或者如果你只想要一个标量 horizontal sum,甚至 movhlps 也值得考虑将高 64 位提取到另一个寄存器中。)


要完全模拟 phaddq,您只需要两次随机播放即可获取 A BC D 输入并为您提供 A CB D 向量可以添加以获取 A+B 和 C+D 元素。这就是 punpcklqdqpunpckhqdq 所做的。 (将 quad 解压缩为 dq)