31 if ((
count & (
true ? 1u : 0u)) != 0)
33 num =
Unsafe.AddByteOffset(ref data, (nuint)
count & (nuint)2u);
37 if ((
count & 2u) != 0)
41 num |=
Unsafe.ReadUnaligned<ushort>(ref data);
48 uint num2 =
count / 8;
51 p0 +=
Unsafe.ReadUnaligned<uint>(ref data);
52 uint num3 =
Unsafe.ReadUnaligned<uint>(ref
Unsafe.AddByteOffset(ref data, 4u));
53 Block(ref p0, ref p1);
55 Block(ref p0, ref p1);
56 data = ref
Unsafe.AddByteOffset(ref data, 8u);
64 p0 +=
Unsafe.ReadUnaligned<uint>(ref data);
65 Block(ref p0, ref p1);
69 Block(ref p0, ref p1);
70 Block(ref p0, ref p1);
71 return (
int)(p1 ^ p0);
73 num =
Unsafe.ReadUnaligned<uint>(ref
Unsafe.Add(ref
Unsafe.AddByteOffset(ref data, (nuint)
count & (nuint)7u), -4));
78 num >>= (int)(
count & 0x1F);
83 private static void Block(ref uint rp0, ref uint rp1)
108 uint num = (uint)
count;
120 Block(ref p0, ref p1);
137 Block(ref p0, ref p1);
138 Block(ref p0, ref p1);
139 return (
int)(p1 ^ p0);
static unsafe void GetRandomBytes(byte *buffer, int length)
static readonly bool IsLittleEndian
static ArrayPool< T > Shared
T[] Rent(int minimumLength)
static int ToUpperOrdinal(ReadOnlySpan< char > source, Span< char > destination)
static int ComputeHash32(ref byte data, uint count, uint p0, uint p1)
static int ComputeHash32OrdinalIgnoreCase(ref char data, int count, uint p0, uint p1)
static void Block(ref uint rp0, ref uint rp1)
static unsafe ulong GenerateSeed()
static int ComputeHash32OrdinalIgnoreCaseSlow(ref char data, int count, uint p0, uint p1)
static int ComputeHash32(ReadOnlySpan< byte > data, ulong seed)
static uint RotateLeft(uint value, int offset)
static bool AllCharsInUInt32AreAscii(uint value)
static uint ConvertAllAsciiCharsInUInt32ToUppercase(uint value)