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. TYPO3扩展和符号链接
- 5. Awk,gsub,&符号和意外扩展
- 6. SymPy Taylor扩展功能符号
- 7. pwd从python扩展符号链接
- 8. 两个补码符号扩展python?
- 9. verilog算术(符号扩展)编辑
- 10. Markdown toc扩展更改`paragraph`¶符号
- 11. 边缘扩展符号失败
- 12. 使用无符号long long的符号扩展
- 13. 添加2个不带符号扩展名的号码
- 14. Laravel 5:扩展型号
- 15. 扩展比例尺BigDecimal号
- 16. Clojure的反引号扩展
- 17. 括号扩展和readline
- 18. 在bash中扩展星号
- 19. 漫游扩展与星号
- 20. SQL Server星号扩展
- 21. 星号拨号方案和扩展
- 22. Java命令行参数,停止扩展通配符符号
- 23. 使用右移运算符掩蔽符号扩展>>
- 24. (A * B)/ 256和MMX
- 25. Java通配符扩展
- 26. 显示扩展ASCII字符
- 27. ZPL II扩展字符
- 28. Vim和ASCII扩展字符?
- 29. 扩展NSCoding以符合URL
- 30. 用Chrome扩展替换网页上的符号
+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