Я щитаю на ДСПИКе фильтры по 256 отсчётов, умножая вектор 16-разрядных к-тов на вектор 12-разрядных сигналов. Это занимает 256 тактов. 40-разрядный результат сдвигаю на любое число разрядов вправо за 1 такт и кладу куда угодно (ещё 1). У АРМов есть замечательный МАК 32*32+=64. Там моя процедура получается немного корявей, но 64-разрядный рез-т искупает этот грех.