aboutsummaryrefslogtreecommitdiff
path: root/internal/hash/log2.go
blob: 8ba79dfce648533617f9c64f183934f666b06954 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package hash

var tab32 = [32]uint32{
	0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
	8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31,
}

func log2(value uint32) uint32 {
	value |= value >> 1
	value |= value >> 2
	value |= value >> 4
	value |= value >> 8
	value |= value >> 16
	return tab32[(value*0x07c4acdd)>>27]
}