我正在为Quadwords寻找类似PHADDD的说明。PHADDQ不存在,是否有这样的指令?
[phaddd
的速度不超过2个混洗+垂直加法,因此只有在使用2个单独的输入时才值得考虑。
如果您打算将其与两个输入相同使用,则只需使用pshufd
将+复制并交换到另一个向量中即可。 (或者,如果只需要标量horizontal sum,甚至movhlps
都值得考虑将高64位提取到另一个寄存器中。)
要完全模拟phaddq
,您只需要两个混洗就可以获取A B
和C D
输入,并给您提供A C
和B D
向量,可以添加这些向量以获得A + B和C + D元素。这就是punpcklqdq
和punpcklqdq
所做的。 (将四边形解压缩为dq)