This question came up when reviewing the WebAssembly SIMD proposal for extended multiplication.

To support older hardware, we need to support SSE2 and the only vector multiplication operation for 32 bit integers is [`pmuludq`](https://www.felixcloutier.com/x86/pmuludq). (Signed [`pmuldq`](https://www.felixcloutier.com/x86/pmuldq) was only added in SSE4.1)

(non-widening is relatively easy; shuffle to feed 2x `pmuludq` and take the low halves of the 4 results to emulate SSE4.1 `pmulld`).