fixed tests

This commit is contained in:
Timerix22 2024-01-07 20:27:18 +06:00
parent 90ad0a9f5a
commit b806cf6e18
12 changed files with 130 additions and 58 deletions

View File

@ -36,7 +36,7 @@
{ {
return xxHash32.ComputeHash(data, data.Length); return xxHash32.ComputeHash(data, data.Length);
} }
#if NET6_0_OR_GREATER
[Benchmark] [Benchmark]
public uint Hash32_Span() public uint Hash32_Span()
{ {
@ -50,7 +50,7 @@
ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(data);
return xxHash32.ComputeHash(span, span.Length); return xxHash32.ComputeHash(span, span.Length);
} }
#endif
[Benchmark] [Benchmark]
public uint Hash32_Stream() public uint Hash32_Stream()
{ {
@ -70,7 +70,7 @@
{ {
return xxHash64.ComputeHash(data, data.Length); return xxHash64.ComputeHash(data, data.Length);
} }
#if NET6_0_OR_GREATER
[Benchmark] [Benchmark]
public ulong Hash64_Span() public ulong Hash64_Span()
{ {
@ -84,6 +84,7 @@
ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> span = new ReadOnlySpan<byte>(data);
return xxHash64.ComputeHash(span, span.Length); return xxHash64.ComputeHash(span, span.Length);
} }
#endif
[Benchmark] [Benchmark]
public ulong Hash64_Stream() public ulong Hash64_Stream()

View File

@ -35,7 +35,7 @@
} }
} }
} }
#if NET6_0_OR_GREATER
[Fact] [Fact]
public void Should_convert_to_bytes() public void Should_convert_to_bytes()
{ {
@ -80,5 +80,6 @@
// Assert // Assert
Assert.Equal(guid1, guid2); Assert.Equal(guid1, guid2);
} }
#endif
} }
} }

View File

@ -1,3 +1,4 @@
#if NET6_0_OR_GREATER
using System; using System;
using System.Text; using System.Text;
using Xunit; using Xunit;
@ -112,3 +113,4 @@ namespace DTLib.XXHash.Tests
} }
} }
#endif

View File

@ -10,23 +10,29 @@ namespace DTLib.XXHash.Tests
public class xxHash32Test public class xxHash32Test
{ {
[Fact] [Fact]
public void Compute_hash32_for_the_length_1() public void Compute_hash32_for_the_length_1()
{ {
// Arrange // Arrange
byte[] data = {0xde}; byte[] data = {0xde};
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0x2330eac0); Assert.Equal(hash1, (uint) 0x2330eac0);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0x2330eac0); Assert.Equal(hash2, (uint) 0x2330eac0);
Assert.Equal(hash3, (uint) 0x2330eac0); Assert.Equal(hash3, (uint) 0x2330eac0);
#endif
} }
[Fact] [Fact]
@ -34,18 +40,24 @@ namespace DTLib.XXHash.Tests
{ {
// Arrange // Arrange
byte[] data = {0xde, 0x55, 0x47, 0x7f, 0x14}; byte[] data = {0xde, 0x55, 0x47, 0x7f, 0x14};
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0x112348ba); Assert.Equal(hash1, (uint) 0x112348ba);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0x112348ba); Assert.Equal(hash2, (uint) 0x112348ba);
Assert.Equal(hash3, (uint) 0x112348ba); Assert.Equal(hash3, (uint) 0x112348ba);
#endif
} }
[Fact] [Fact]
@ -57,18 +69,24 @@ namespace DTLib.XXHash.Tests
0xde, 0x55, 0x47, 0x7f, 0x14, 0x8f, 0xf1, 0x48, 0xde, 0x55, 0x47, 0x7f, 0x14, 0x8f, 0xf1, 0x48,
0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb 0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0xcdf89609); Assert.Equal(hash1, (uint) 0xcdf89609);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0xcdf89609); Assert.Equal(hash2, (uint) 0xcdf89609);
Assert.Equal(hash3, (uint) 0xcdf89609); Assert.Equal(hash3, (uint) 0xcdf89609);
#endif
} }
[Fact] [Fact]
@ -81,18 +99,24 @@ namespace DTLib.XXHash.Tests
0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb, 0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb,
0x0e 0x0e
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0xbca8f924); Assert.Equal(hash1, (uint) 0xbca8f924);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0xbca8f924); Assert.Equal(hash2, (uint) 0xbca8f924);
Assert.Equal(hash3, (uint) 0xbca8f924); Assert.Equal(hash3, (uint) 0xbca8f924);
#endif
} }
[Fact] [Fact]
@ -105,18 +129,24 @@ namespace DTLib.XXHash.Tests
0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb, 0x22, 0x3a, 0x40, 0x96, 0x56, 0xc5, 0xdc, 0xbb,
0x0e, 0x59, 0x4d, 0x42, 0xc5 0x0e, 0x59, 0x4d, 0x42, 0xc5
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0xf4518e14); Assert.Equal(hash1, (uint) 0xf4518e14);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0xf4518e14); Assert.Equal(hash2, (uint) 0xf4518e14);
Assert.Equal(hash3, (uint) 0xf4518e14); Assert.Equal(hash3, (uint) 0xf4518e14);
#endif
} }
[Fact] [Fact]
@ -130,18 +160,24 @@ namespace DTLib.XXHash.Tests
0x0e, 0x59, 0x4d, 0x42, 0xc5, 0x07, 0x21, 0x08, 0x0e, 0x59, 0x4d, 0x42, 0xc5, 0x07, 0x21, 0x08,
0x1c, 0x2c, 0xc9, 0x38, 0x7d, 0x43, 0x83, 0x11, 0x1c, 0x2c, 0xc9, 0x38, 0x7d, 0x43, 0x83, 0x11,
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
uint hash1 = xxHash32.ComputeHash(data, data.Length); uint hash1 = xxHash32.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
uint hash2 = xxHash32.ComputeHash(span, span.Length); uint hash2 = xxHash32.ComputeHash(span, span.Length);
uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length); uint hash3 = xxHash32.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (uint) 0xf8497daa); Assert.Equal(hash1, (uint) 0xf8497daa);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (uint) 0xf8497daa); Assert.Equal(hash2, (uint) 0xf8497daa);
Assert.Equal(hash3, (uint) 0xf8497daa); Assert.Equal(hash3, (uint) 0xf8497daa);
#endif
} }
[Fact] [Fact]

View File

@ -1,4 +1,5 @@
using System; #if NET6_0_OR_GREATER
using System;
using System.Text; using System.Text;
using Xunit; using Xunit;
@ -68,3 +69,4 @@ namespace DTLib.XXHash.Tests
} }
} }
} }
#endif

View File

@ -15,18 +15,24 @@ namespace DTLib.XXHash.Tests
{ {
// Arrange // Arrange
byte[] data = {0x60}; byte[] data = {0x60};
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
ulong hash1 = xxHash64.ComputeHash(data, data.Length); ulong hash1 = xxHash64.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
ulong hash2 = xxHash64.ComputeHash(span, span.Length); ulong hash2 = xxHash64.ComputeHash(span, span.Length);
ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length); ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (ulong) 0xb3e7ca6ca5ba3445); Assert.Equal(hash1, (ulong) 0xb3e7ca6ca5ba3445);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (ulong) 0xb3e7ca6ca5ba3445); Assert.Equal(hash2, (ulong) 0xb3e7ca6ca5ba3445);
Assert.Equal(hash3, (ulong) 0xb3e7ca6ca5ba3445); Assert.Equal(hash3, (ulong) 0xb3e7ca6ca5ba3445);
#endif
} }
[Fact] [Fact]
@ -34,18 +40,23 @@ namespace DTLib.XXHash.Tests
{ {
// Arrange // Arrange
byte[] data = {0x60, 0x82, 0x40, 0x77, 0x8a}; byte[] data = {0x60, 0x82, 0x40, 0x77, 0x8a};
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
ulong hash1 = xxHash64.ComputeHash(data, data.Length); ulong hash1 = xxHash64.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
ulong hash2 = xxHash64.ComputeHash(span, span.Length); ulong hash2 = xxHash64.ComputeHash(span, span.Length);
ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length); ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (ulong) 0x917b11ed024938fc); Assert.Equal(hash1, (ulong) 0x917b11ed024938fc);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (ulong) 0x917b11ed024938fc); Assert.Equal(hash2, (ulong) 0x917b11ed024938fc);
Assert.Equal(hash3, (ulong) 0x917b11ed024938fc); Assert.Equal(hash3, (ulong) 0x917b11ed024938fc);
#endif
} }
[Fact] [Fact]
@ -57,18 +68,24 @@ namespace DTLib.XXHash.Tests
0x60, 0x82, 0x40, 0x77, 0x8a, 0x0e, 0xe4, 0xd5, 0x60, 0x82, 0x40, 0x77, 0x8a, 0x0e, 0xe4, 0xd5,
0x85, 0x1f, 0xa6, 0x86, 0x34, 0x85, 0x1f, 0xa6, 0x86, 0x34,
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
ulong hash1 = xxHash64.ComputeHash(data, data.Length); ulong hash1 = xxHash64.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
ulong hash2 = xxHash64.ComputeHash(span, span.Length); ulong hash2 = xxHash64.ComputeHash(span, span.Length);
ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length); ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (ulong) 0x9d1cb0d181d58bee); Assert.Equal(hash1, (ulong) 0x9d1cb0d181d58bee);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (ulong) 0x9d1cb0d181d58bee); Assert.Equal(hash2, (ulong) 0x9d1cb0d181d58bee);
Assert.Equal(hash3, (ulong) 0x9d1cb0d181d58bee); Assert.Equal(hash3, (ulong) 0x9d1cb0d181d58bee);
#endif
} }
[Fact] [Fact]
@ -82,18 +99,24 @@ namespace DTLib.XXHash.Tests
0x30, 0x5d, 0x84, 0x54, 0x15, 0xf9, 0xbd, 0x03, 0x30, 0x5d, 0x84, 0x54, 0x15, 0xf9, 0xbd, 0x03,
0x4b, 0x0f, 0x90, 0x4e, 0xf5, 0x57, 0x21, 0x21, 0x4b, 0x0f, 0x90, 0x4e, 0xf5, 0x57, 0x21, 0x21,
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
ulong hash1 = xxHash64.ComputeHash(data, data.Length); ulong hash1 = xxHash64.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
ulong hash2 = xxHash64.ComputeHash(span, span.Length); ulong hash2 = xxHash64.ComputeHash(span, span.Length);
ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length); ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (ulong) 0x9233096b7804e12c); Assert.Equal(hash1, (ulong) 0x9233096b7804e12c);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (ulong) 0x9233096b7804e12c); Assert.Equal(hash2, (ulong) 0x9233096b7804e12c);
Assert.Equal(hash3, (ulong) 0x9233096b7804e12c); Assert.Equal(hash3, (ulong) 0x9233096b7804e12c);
#endif
} }
[Fact] [Fact]
@ -111,18 +134,24 @@ namespace DTLib.XXHash.Tests
0x27, 0x6d, 0xb3, 0x5c, 0xc7, 0xc0, 0xd0, 0xa0, 0x27, 0x6d, 0xb3, 0x5c, 0xc7, 0xc0, 0xd0, 0xa0,
0x7e, 0x28, 0xce, 0x46, 0x85, 0xb7, 0x2b, 0x16, 0x7e, 0x28, 0xce, 0x46, 0x85, 0xb7, 0x2b, 0x16,
}; };
#if NET6_0_OR_GREATER
Span<byte> span = new Span<byte>(data); Span<byte> span = new Span<byte>(data);
ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data); ReadOnlySpan<byte> rspan = new ReadOnlySpan<byte>(data);
#endif
// Act // Act
ulong hash1 = xxHash64.ComputeHash(data, data.Length); ulong hash1 = xxHash64.ComputeHash(data, data.Length);
#if NET6_0_OR_GREATER
ulong hash2 = xxHash64.ComputeHash(span, span.Length); ulong hash2 = xxHash64.ComputeHash(span, span.Length);
ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length); ulong hash3 = xxHash64.ComputeHash(rspan, rspan.Length);
#endif
// Assert // Assert
Assert.Equal(hash1, (ulong) 0x4c0a65b1ef9ea060); Assert.Equal(hash1, (ulong) 0x4c0a65b1ef9ea060);
#if NET6_0_OR_GREATER
Assert.Equal(hash2, (ulong) 0x4c0a65b1ef9ea060); Assert.Equal(hash2, (ulong) 0x4c0a65b1ef9ea060);
Assert.Equal(hash3, (ulong) 0x4c0a65b1ef9ea060); Assert.Equal(hash3, (ulong) 0x4c0a65b1ef9ea060);
#endif
} }
[Fact] [Fact]

View File

@ -13,8 +13,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<InternalsVisibleTo Include="$(AssemblyName).Test" /> <InternalsVisibleTo Include="DTLib.XXHash.Tests" />
<InternalsVisibleTo Include="$(AssemblyName).Perf" /> <InternalsVisibleTo Include="DTLib.XXHash.PerformanceTest" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -7,27 +7,27 @@ namespace DTLib.XXHash
{ {
public static partial class xxHash128 public static partial class xxHash128
{ {
private static readonly ulong XXH_PRIME64_1 = 11400714785074694791UL; private const ulong XXH_PRIME64_1 = 11400714785074694791UL;
private static readonly ulong XXH_PRIME64_2 = 14029467366897019727UL; private const ulong XXH_PRIME64_2 = 14029467366897019727UL;
private static readonly ulong XXH_PRIME64_3 = 1609587929392839161UL; private const ulong XXH_PRIME64_3 = 1609587929392839161UL;
private static readonly ulong XXH_PRIME64_4 = 9650029242287828579UL; private const ulong XXH_PRIME64_4 = 9650029242287828579UL;
private static readonly ulong XXH_PRIME64_5 = 2870177450012600261UL; private const ulong XXH_PRIME64_5 = 2870177450012600261UL;
private static readonly uint XXH_PRIME32_1 = 2654435761U; private const uint XXH_PRIME32_1 = 2654435761U;
private static readonly uint XXH_PRIME32_2 = 2246822519U; private const uint XXH_PRIME32_2 = 2246822519U;
private static readonly uint XXH_PRIME32_3 = 3266489917U; private const uint XXH_PRIME32_3 = 3266489917U;
private static readonly uint XXH_PRIME32_4 = 668265263U; private const uint XXH_PRIME32_4 = 668265263U;
private static readonly uint XXH_PRIME32_5 = 374761393U; private const uint XXH_PRIME32_5 = 374761393U;
private static readonly int XXH_STRIPE_LEN = 64; private const int XXH_STRIPE_LEN = 64;
private static readonly int XXH_ACC_NB = 8; private const int XXH_ACC_NB = 8;
private static readonly int XXH_SECRET_CONSUME_RATE = 8; private const int XXH_SECRET_CONSUME_RATE = 8;
private static readonly int XXH_SECRET_MERGEACCS_START = 11; private const int XXH_SECRET_MERGEACCS_START = 11;
private static readonly int XXH_SECRET_DEFAULT_SIZE = 192; private const int XXH_SECRET_DEFAULT_SIZE = 192;
private static readonly int XXH_SECRET_LASTACC_START = 7; private const int XXH_SECRET_LASTACC_START = 7;
private static readonly byte MM_SHUFFLE_0_3_0_1 = 0b0011_0001; private const byte MM_SHUFFLE_0_3_0_1 = 0b0011_0001;
private static readonly byte MM_SHUFFLE_1_0_3_2 = 0b0100_1110; private const byte MM_SHUFFLE_1_0_3_2 = 0b0100_1110;
[FixedAddressValueType] [FixedAddressValueType]
private static readonly Vector256<uint> M256i_XXH_PRIME32_1 = Vector256.Create(XXH_PRIME32_1); private static readonly Vector256<uint> M256i_XXH_PRIME32_1 = Vector256.Create(XXH_PRIME32_1);

View File

@ -30,12 +30,12 @@ namespace DTLib.XXHash
XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1
}; };
private static readonly int XXH3_SECRET_SIZE_MIN = 136; private const int XXH3_SECRET_SIZE_MIN = 136;
private static readonly int XXH3_SECRET_DEFAULT_SIZE = 192; private const int XXH3_SECRET_DEFAULT_SIZE = 192;
private static readonly int XXH3_MIDSIZE_MAX = 240; private const int XXH3_MIDSIZE_MAX = 240;
private static readonly int XXH3_MIDSIZE_STARTOFFSET = 3; private const int XXH3_MIDSIZE_STARTOFFSET = 3;
private static readonly int XXH3_MIDSIZE_LASTOFFSET = 17; private const int XXH3_MIDSIZE_LASTOFFSET = 17;
private static readonly int XXH3_ACC_SIZE = 64; private const int XXH3_ACC_SIZE = 64;
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private static unsafe uint128 XXH3_128bits_internal(byte* input, int len, ulong seed, byte* secret, int secretLen) private static unsafe uint128 XXH3_128bits_internal(byte* input, int len, ulong seed, byte* secret, int secretLen)

View File

@ -2,16 +2,17 @@
using System.Runtime.Intrinsics; using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics.X86;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
#pragma warning disable CS0414 // Field is assigned but its value is never used
namespace DTLib.XXHash namespace DTLib.XXHash
{ {
public static partial class xxHash3 public static partial class xxHash3
{ {
private static readonly ulong XXH_PRIME64_1 = 11400714785074694791UL; private const ulong XXH_PRIME64_1 = 11400714785074694791UL;
private static readonly ulong XXH_PRIME64_2 = 14029467366897019727UL; private const ulong XXH_PRIME64_2 = 14029467366897019727UL;
private static readonly ulong XXH_PRIME64_3 = 1609587929392839161UL; private const ulong XXH_PRIME64_3 = 1609587929392839161UL;
private static readonly ulong XXH_PRIME64_4 = 9650029242287828579UL; private const ulong XXH_PRIME64_4 = 9650029242287828579UL;
private static readonly ulong XXH_PRIME64_5 = 2870177450012600261UL; private const ulong XXH_PRIME64_5 = 2870177450012600261UL;
private static readonly uint XXH_PRIME32_1 = 2654435761U; private static readonly uint XXH_PRIME32_1 = 2654435761U;
private static readonly uint XXH_PRIME32_2 = 2246822519U; private static readonly uint XXH_PRIME32_2 = 2246822519U;
@ -19,15 +20,15 @@ namespace DTLib.XXHash
private static readonly uint XXH_PRIME32_4 = 668265263U; private static readonly uint XXH_PRIME32_4 = 668265263U;
private static readonly uint XXH_PRIME32_5 = 374761393U; private static readonly uint XXH_PRIME32_5 = 374761393U;
private static readonly int XXH_STRIPE_LEN = 64; private const int XXH_STRIPE_LEN = 64;
private static readonly int XXH_ACC_NB = XXH_STRIPE_LEN / 8; private const int XXH_ACC_NB = XXH_STRIPE_LEN / 8;
private static readonly int XXH_SECRET_CONSUME_RATE = 8; private const int XXH_SECRET_CONSUME_RATE = 8;
private static readonly int XXH_SECRET_DEFAULT_SIZE = 192; private const int XXH_SECRET_DEFAULT_SIZE = 192;
private static readonly int XXH_SECRET_MERGEACCS_START = 11; private const int XXH_SECRET_MERGEACCS_START = 11;
private static readonly int XXH_SECRET_LASTACC_START = 7; private const int XXH_SECRET_LASTACC_START = 7;
private static readonly byte MM_SHUFFLE_0_3_0_1 = 0b0011_0001; private const byte MM_SHUFFLE_0_3_0_1 = 0b0011_0001;
private static readonly byte MM_SHUFFLE_1_0_3_2 = 0b0100_1110; private const byte MM_SHUFFLE_1_0_3_2 = 0b0100_1110;
[FixedAddressValueType] [FixedAddressValueType]
private static readonly Vector256<uint> M256i_XXH_PRIME32_1 = Vector256.Create(XXH_PRIME32_1); private static readonly Vector256<uint> M256i_XXH_PRIME32_1 = Vector256.Create(XXH_PRIME32_1);

View File

@ -29,11 +29,11 @@ namespace DTLib.XXHash
XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1 XXH_PRIME64_4, XXH_PRIME32_2, XXH_PRIME64_5, XXH_PRIME32_1
}; };
private static readonly int XXH3_MIDSIZE_MAX = 240; private const int XXH3_MIDSIZE_MAX = 240;
private static readonly int XXH3_MIDSIZE_STARTOFFSET = 3; private const int XXH3_MIDSIZE_STARTOFFSET = 3;
private static readonly int XXH3_MIDSIZE_LASTOFFSET = 17; private const int XXH3_MIDSIZE_LASTOFFSET = 17;
private static readonly int XXH3_SECRET_SIZE_MIN = 136; private const int XXH3_SECRET_SIZE_MIN = 136;
private static readonly int XXH3_SECRET_DEFAULT_SIZE = 192; private const int XXH3_SECRET_DEFAULT_SIZE = 192;
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private static unsafe ulong XXH3_64bits_internal(byte* input, int len, ulong seed64, byte* secret, private static unsafe ulong XXH3_64bits_internal(byte* input, int len, ulong seed64, byte* secret,

View File

@ -6,11 +6,11 @@ namespace DTLib.XXHash
{ {
public static partial class xxHash64 public static partial class xxHash64
{ {
private static readonly ulong XXH_PRIME64_1 = 11400714785074694791UL; private const ulong XXH_PRIME64_1 = 11400714785074694791UL;
private static readonly ulong XXH_PRIME64_2 = 14029467366897019727UL; private const ulong XXH_PRIME64_2 = 14029467366897019727UL;
private static readonly ulong XXH_PRIME64_3 = 1609587929392839161UL; private const ulong XXH_PRIME64_3 = 1609587929392839161UL;
private static readonly ulong XXH_PRIME64_4 = 9650029242287828579UL; private const ulong XXH_PRIME64_4 = 9650029242287828579UL;
private static readonly ulong XXH_PRIME64_5 = 2870177450012600261UL; private const ulong XXH_PRIME64_5 = 2870177450012600261UL;
[MethodImpl(MethodImplOptions.AggressiveInlining)] [MethodImpl(MethodImplOptions.AggressiveInlining)]
private static ulong XXH_rotl64(ulong x, int r) private static ulong XXH_rotl64(ulong x, int r)