assembly - Intel 64/IA32 封装水平 ADD 用于四字?

标签 assembly x86 sse

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

最佳答案

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

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


完全模拟phaddq ,你只需要洗两次就可以得到你的 A BC D输入并给你 A CB D您可以添加向量以获得 A+B 和 C+D 元素。这就是 punpcklqdq punpckhqdq做。 (将quad解压为dq)

关于assembly - Intel 64/IA32 封装水平 ADD 用于四字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59326141/

相关文章:

c++ - 无效异常展开导致的崩溃?

linux - 如何将 C 运行时库与 'ld' 链接起来?

performance - EBP帧指针寄存器的用途是什么?

assembly - 返回地址寄存器如何在不将返回地址存储在堆栈上的处理器架构中工作?

c++ - 在 gdb 调试器中打印 __m128 数据类型的值

performance - SIMD/SSE 新手 : simple image filtering

c++ - SSE 的条件语句

assembly - 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

x86 - sfence 文档中的 "serializing operation"是什么意思?

linux - 发送 HTTP 请求并接收输出。 x86 Linux 汇编