Стандартный подход, предполагающий наличие умножения 16x16-> 32, состоит в том, чтобы разделить оба числа на 16-битную старшую и младшую части, вычислить четыре частичных произведения и добавить результаты.Если у вас нет примитива 16x16-> 32, который быстрее, чем примитив 32x32-> 32, я не уверен, какой будет наилучший подход.Я думаю, что умножение 32x32-> 32 должно быть более полезным, чем умножение на 16x16-> 32, но я не могу думать, как его использовать.
Лично я хотел бы, чтобы был стандартный примитив для возвратаверхняя половина умножения NxN (безусловно, 32x32, также 16x16 для небольших машин и 64x64 для больших).