2013-01-07 38 views
1

我需要計算我在MMX寄存器中的4個整數的總和。例如,我有這樣的MMX寄存器: enter image description here 我要得到這樣的結果(我不介意,如果它在同一個寄存器或者如果它是在一個正常的): enter image description here是否有任何指令將所有字節添加到MMX寄存器中?

我想知道如果有執行該操作的指令。我在Windows中使用x86程序集。 我的第一個猜測是把4 1放在另一個MMX寄存器中,並調用PMADDWD,這樣我就會得到[X1 + X2] [X3 + X4],但我認爲這很髒。

在此先感謝。

+1

X1,X2,X3,X4真的是所有不同的寬度還是隻是圖表的問題? –

+0

對不起,我不是一個很好的抽屜。他們都是一樣的長度 – vguzmanp

+0

好吧 - 另一個問題,你真的是指MMX(64位SIMD)還是你在談論SSE(128位SIMD)? –

回答

2

PMADDWD實際上是一種非常好的總結方法 - 即使使用乘數1來「浪費」乘法運算,您也可以免費獲得擴展(拆包)操作,所以您會得到很多有價值的單一指令。

+0

好的,所以我明白,我正在尋找的指令不存在。另一件事,一旦我把它作爲[X1 + X2] [X3 + X4],有沒有辦法以dword的形式訪問高級部分?目前我正在將較低的一個移動到一個寄存器,然後用'psrlq mm2,32'向右移動 – vguzmanp

+0

對不起 - 我只真的使用SSE,而不是MMX - 如果你不能這樣做,你可能想發表另一個關於這個問題的問題找到合適的東西。 –

相關問題