乗算と(両方とも16ビットの符号付き整数)および乗算結果を算術的に左にシフトする演算shl(mult(var1,var2),1)
を実行することを探しています。結果は飽和している必要があります。つまり、オーバーフローまたはアンダーフローが発生した場合はint32maxまたはint32minであり、。mult
var1
var2
shl
mult(-32768,-32768)=2147483647
MMX / SSE命令セットを使用すると思われる効率的な方法で、複数の値に対してこの操作を行う必要があります。私は作ることについては考えましたがmult(sign_extesion(var1)
、shl(sign_extension(var2)))
MMXmult()
飽和バージョンが存在しないことを発見しました。あなたはそれを手に入れる他の方法を知っていますか?