我正在寻找做shl(mult(var1,var2),1)
运算,其中mult
乘法var1
和var2
(都是 16 位有符号整数)并shl
在算术上左移乘法结果。结果必须是饱和的,即 int32 max 或 int32 min 如果发生上溢或下溢并且mult(-32768,-32768)=2147483647
。
我需要以我认为使用 MMX/SSE 指令集的有效方式对多个值进行此操作。我虽然关于制作mult(sign_extesion(var1)
,shl(sign_extension(var2)))
但我刚刚发现不mult()
存在 MMX 饱和版本。你知道有什么其他方法可以得到吗?