2013-05-16 50 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)(保存洗牌)。

相关问题