Търся да извърша 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)))
, но току-що открих, че не съществува версия за насищане на MMX mult()
. Знаете ли друг начин да го получите?