Currently polyval (and thus crates built on top of it) uses 32-bit soft backend which was written with targets without wide multiplication in mind. However, this code can be quite inefficient for targets which do support wide multiplication, such as:
- WASM32:
u32s can be extended to 64 bits and multiplied using i64.mul.
- RISC-V: wide multiplication is implemented by combining
MULHU and MUL operations (hardware may fuse them later into a single instruction).
Also it may be worth to add a soft backend for 64-bit targets without wide multiplication? Though right now I can't name a target for which it could be useful.