forked from zeebo/xxh3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvector_compat_amd64_test.go
64 lines (54 loc) · 1.16 KB
/
vector_compat_amd64_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package xxh3_seed
import "testing"
func override() (bool, bool, func()) {
avx2Orig, sse2Orig := avx2, sse2
return avx2Orig, sse2Orig, func() {
avx2, sse2 = avx2Orig, sse2Orig
}
}
func TestVectorCompat(t *testing.T) {
check := func(b []byte) {
t.Helper()
for i := range b {
b[i] = byte(i)
}
avx2Orig, sse2Orig, cleanup := override()
defer cleanup()
avx2, sse2 = avx2Orig, false
avx2Sum := HashWithSeed(b, 42)
avx2, sse2 = false, sse2Orig
sse2Sum := HashWithSeed(b, 42)
avx2, sse2 = false, false
scalarSum := HashWithSeed(b, 42)
if avx2Sum != sse2Sum || avx2Sum != scalarSum || sse2Sum != scalarSum {
t.Errorf("data : %d", len(b))
t.Errorf("avx2 : %016x", avx2Sum)
t.Errorf("sse2 : %016x", sse2Sum)
t.Errorf("scalar: %016x", scalarSum)
t.FailNow()
}
}
for _, n := range []int{
0, 1,
63, 64, 65,
127, 128, 129,
191, 192, 193,
239, 240, 241,
255, 256, 257,
319, 320, 321,
383, 384, 385,
447, 448, 449,
511, 512, 513,
575, 576, 577,
639, 640, 641,
703, 704, 705,
767, 768, 769,
831, 832, 833,
895, 896, 897,
959, 960, 961,
1023, 1024, 1025,
100 * 1024,
} {
check(make([]byte, n))
}
}