1 package xxh3
2
3 import "testing"
4
5 func TestVectorCompat(t *testing.T) {
6 check := func(b []byte) {
7 t.Helper()
8
9 for i := range b {
10 b[i] = byte(i)
11 }
12
13 var avx512Sum, avx2Sum, sse2Sum, genericSum uint64
14
15 withAVX512(func() { avx512Sum = Hash(b) })
16 withAVX2(func() { avx2Sum = Hash(b) })
17 withSSE2(func() { sse2Sum = Hash(b) })
18 withGeneric(func() { genericSum = Hash(b) })
19
20 if avx2Sum != sse2Sum || avx2Sum != genericSum || sse2Sum != genericSum || avx512Sum != genericSum {
21 t.Errorf("data : %d", len(b))
22 t.Errorf("avx512: %016x", avx512Sum)
23 t.Errorf("avx2 : %016x", avx2Sum)
24 t.Errorf("sse2 : %016x", sse2Sum)
25 t.Errorf("scalar: %016x", genericSum)
26 t.FailNow()
27 }
28 }
29
30 t.Logf("avx512: %v", hasAVX512)
31 t.Logf("avx2: %v", hasAVX2)
32 t.Logf("sse2: %v", hasSSE2)
33
34 for _, n := range []int{
35 0, 1,
36 63, 64, 65,
37 127, 128, 129,
38 191, 192, 193,
39 239, 240, 241,
40 255, 256, 257,
41 319, 320, 321,
42 383, 384, 385,
43 447, 448, 449,
44 511, 512, 513,
45 575, 576, 577,
46 639, 640, 641,
47 703, 704, 705,
48 767, 768, 769,
49 831, 832, 833,
50 895, 896, 897,
51 959, 960, 961,
52 1023, 1024, 1025,
53 4932, 10233, 19238,
54 30000, 32 << 10, 1 + 32<<10,
55 100 * 1024,
56 1e6, 1e7, 1e8,
57 } {
58 check(make([]byte, n))
59 }
60
61 for n := avx512Switch; n < avx512Switch+(_block*5); n++ {
62 check(make([]byte, n))
63 }
64 }
65
View as plain text