1- // *
1+ // *
22// *****************************************************************************
33// *
44// * Copyright (c) 2025 Deskasoft International
@@ -282,7 +282,7 @@ private void Squash()
282282 static void MixUp64 ( ref ulong a , ref ulong b , ulong v , ulong prime )
283283 {
284284 // *a ^= mul_64x64_128(*b + v, prime, &h); *b += h;
285- BigMul128 ( b + v , prime , out var lo , out var hi ) ;
285+ T1HAGlobals . BigMul128 ( b + v , prime , out var lo , out var hi ) ;
286286 a ^= lo ;
287287 b += hi ;
288288 }
@@ -297,29 +297,10 @@ private static ulong Mix64(ulong v, ulong p)
297297 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
298298 static ulong Mux64 ( ulong v , ulong prime )
299299 {
300- BigMul128 ( v , prime , out var lo , out var hi ) ;
300+ T1HAGlobals . BigMul128 ( v , prime , out var lo , out var hi ) ;
301301 return lo ^ hi ;
302302 }
303303
304- static void BigMul128 ( ulong a , ulong b , out ulong lo , out ulong hi )
305- {
306- #if NET8_0_OR_GREATER
307- hi = Math . BigMul ( a , b , out lo ) ;
308- #else
309- ulong aLo = ( uint ) a , aHi = a >> 32 ;
310- ulong bLo = ( uint ) b , bHi = b >> 32 ;
311-
312- ulong p0 = aLo * bLo ;
313- ulong p1 = aLo * bHi ;
314- ulong p2 = aHi * bLo ;
315- ulong p3 = aHi * bHi ;
316-
317- ulong mid = ( p1 << 32 ) + ( p2 << 32 ) ;
318- lo = p0 + mid ;
319- hi = p3 + ( p1 >> 32 ) + ( p2 >> 32 ) + ( lo < p0 ? 1UL : 0UL ) ;
320- #endif
321- }
322-
323304 [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
324305 private static ulong Tail64LE ( ReadOnlySpan < byte > data , int offset , int tailLen )
325306 {
0 commit comments