2
Q
MMX符號擴展
A
回答
5
你可以做一個左移(PSLLD
),然後被算術右移(PSRAD
),例如使用內部函數:
v = _mm_srai_pi32(_mm_slli_pi32(v, 16), 16);
(這是假設你已經在每個32位字的低半的16位值。)
相關問題
- 1. C++符號擴展
- 2. 理解符號擴展
- 3. 符號擴展到16位
- 4. 逗號擴展
- 5. 如何擴展相對路徑而不擴展符號鏈接?
- 6. 邊緣擴展符號失敗
- 7. verilog算術(符號擴展)編輯
- 8. 符號在C中擴展int int
- 9. SymPy Taylor擴展功能符號
- 10. Markdown toc擴展更改`paragraph`¶符號
- 11. 兩個補碼符號擴展python?
- 12. pwd從python擴展符號鏈接
- 13. 在擴展類中找不到符號
- 14. Awk,gsub,&符號和意外擴展
- 15. C如何處理符號擴展?
- 16. TYPO3擴展和符號鏈接
- 17. 從括號擴展
- 18. Integer擴展號碼
- 19. 使用無符號long long的符號擴展
- 20. 添加2個不帶符號擴展名的號碼
- 21. 星號 - 擴展限制
- 22. 漫遊擴展與星號
- 23. SQL Server星號擴展
- 24. 在bash中擴展星號
- 25. 括號擴展和readline
- 26. 擴展比例尺BigDecimal號
- 27. Laravel 5:擴展型號
- 28. Clojure的反引號擴展
- 29. 星號撥號方案和擴展
- 30. 「$ @」擴展中的逗號逗號
+1如果他們不是在正確的位置,你可能首先需要'_mm_unpacklo_pi16(v,ZERO)'('PUNPCKLWD')。注意Paul R的答案是使用MSVC的編譯器內在函數,GCC有類似的東西(http://gcc.gnu.org/onlinedocs/gcc/X86-Built_002din-Functions.html)。 – user786653
謝謝 - 我已經編輯了這個問題,以澄清示例中內部函數的使用。請注意,MMX/SSE內在函數與MSVC,gcc,ICC等幾乎完全相同。 –
我在尋找的是做shl(mult(var1,var2),1)其中'mult'乘以var1和var2和'shl '轉移左乘法結果。結果必須飽和,即:mult(-32768,-32768)= 2147483647。我雖然關於製作mult(sing_extesion(var1),shl(sign_extension(var2))),但我剛剛發現不存在MMX mult()飽和版本。你知道任何其他方式來得到它嗎? – LooPer