2013-05-16 75 views

回答

0

pmuldq不幸的是,SSE4.1指令,但SSE2有pmuludq並使用「轉換無符號更高階產品簽名」算法(可在Hacker's Delight章節8.3中找到)高dword可以修復。低dword當然是正確的。

這是我在asm中的嘗試,我沒有測試過。

movdqa xmm2, xmm0 
psrad xmm0, 31 
movdqa xmm3, xmm1 
psrad xmm1, 31 
pand xmm2, xmm0 
pand xmm3, xmm1 
paddd xmm2, xmm3 
pmuludq xmm0, xmm1 
pshufd xmm2, xmm2, 0xB1 
psubd xmm0, xmm2 

除了乘號之外的雙字在開始時必須爲零。它看起來與Hacker的Delight有點不同,因爲我將算法的最後一位重新排列爲p = p - (t1 + t2)(保存洗牌)。

相關問題