|
|
|
|
|
by tmyklebu
368 days ago
|
|
Same idea, but without BMI2: unsigned h = (1264523 * x & 0x1020a01) * 134746240 >> 27;
Alternatively: unsigned h = (1639879 * x & 0x1038040) * 67375104L >> 32 & 31;
The multiplication by 67375104L can be a usual 32x32 IMUL where the high half goes to edx, though I'm not sure that conveys a benefit over a 64x64 IMUL in serial code these days. |
|