Can someone explain this in a bit more detail? Why does "the computation of the most significant bits of a 64-bit product on an ARM processor requires a separate and expensive instruction"?
So the 64x64->128 multiplication is still quite efficient compared to ARM where two "full strength" multiplications are needed. It is odd though that there is nearly a 20x difference in relative speeds though, I wouldn't expect multiply upper to be that slow.
like this one: https://github.com/llvm-mirror/compiler-rt/blob/master/lib/b...
Wyhash is built around the 128-bit result. This is fast on Intel, but slower on ARM.