我需要计算MMX寄存器中4个整数的总和。例如,我有这个MMX寄存器: 我想得到这个结果(我不介意它是在同一个寄存器中还是在正常寄存器中):
我想知道是否有执行该操作的指令。我在windows中使用x86程序集。
我的第一个猜测是将4 1
放入另一个MMX寄存器并调用PMADDWD
,这样我最终得到[X1 + X2] [X3 + X4],但我认为这很脏。
提前致谢。
答案 0 :(得分:2)
PMADDWD
实际上是一种很好的求和方式 - 即使你通过使用1的被乘数来“浪费”乘法运算,你也可以免费得到扩展(解包)操作,所以你得到了单一指令中的很多价值。