


操作順序如上圖,xmm0和xmm1相乘后,xmm0的值都是0,請教一下這是為什么
uj5u.com熱心網友回復:
你期待什么結果呢,mulps是并行選單精度浮點數,不是整數。整數應該用PMULDQ/VPMULDQuj5u.com熱心網友回復:
原來如此,感謝。我看了intel的手冊,PMULQD這條指令是SSE4.1的,結果按四字保存;想問一下有沒有低版本的指令,按雙字相乘和保存的,我覺得這個運算應該是挺常用的,但是找了好一會兒沒找到這種指令
uj5u.com熱心網友回復:
如果你要求SSE2的話,可以用PMULUDQ,但這個是無符號32位整數乘法,或者先把整數轉換為雙精度浮點(不要轉換為單精度,結果可能有誤差,除非你能接受),CVTDQ2PD,然后MULPD,再CVTSD2SI(這個一次只能轉換一個結果,需要移位在轉換另一個),不要用CVTPD2DQ,這個只能把結果轉換為32位整數,但是兩個32位整數的乘積可能是64位數轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257559.html
標籤:匯編語言
下一篇:請教一個爬蟲問題!!!!!!
