...

Source file src/github.com/zeebo/xxh3/compat_vector_test.go

Documentation: github.com/zeebo/xxh3

     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  	// Test more extensively around avx512Switch.
    61  	for n := avx512Switch; n < avx512Switch+(_block*5); n++ {
    62  		check(make([]byte, n))
    63  	}
    64  }
    65  

View as plain text