История изменений
Исправление snake266, (текущая версия) :
Вот есть у меня в процессоре блок умножения двух 32-битных чисел, ты как его собрался загружать своим говнокодом на int16?
А разве если твой умножитель может принять на умножение 32-битные числа (то есть умножитель 64-битный и результат помещается), то в чем проблема ему умножить 16-битные числа? Аппаратура же может просто сделать zero-extend до 32-ух бит. Я как-то занимался обратной задачей, когда блок умножения меньшей битности, чем результат умножения, на riscv на verilog: у меня на плисе был аппаратный dsp, который умеет выдавать 45-битный результат умножения, что при умножении 32-ух битных чисел порождало неэффективную топологию и я вот как раз разделял числа по 16 бит и умножал уже 16x16 бит.
Исходная версия snake266, :
Вот есть у меня в процессоре блок умножения двух 32-битных чисел, ты как его собрался загружать своим говнокодом на int16?
А разве если твой умножитель может принять на умножение 32-битные числа (то есть умножитель 64-битный и результат помещается), то в чем проблема ему умножить 16-битные числа? Аппаратура же может просто сделать zero-extend до 32-ух бит. Я как-то занимался обратной задачей, когда блок умножения меньшей битности, чем результат умножения, на riscv на verilog: у меня на плисе был аппаратный dsp, который умеет выдавать 45-битный результат умножения, что при умножении 32-ух битных чисел порождало неэффективную топологию и я вот как раз разделял числа по 16 бит.