@@ -27,29 +27,31 @@ private static unsafe ulong __inline__XXH64(byte* input, int len, ulong seed)
2727
2828 do
2929 {
30+ var reg1 = * ( ( ulong * ) ( input + 0 ) ) ;
31+ var reg2 = * ( ( ulong * ) ( input + 8 ) ) ;
32+ var reg3 = * ( ( ulong * ) ( input + 16 ) ) ;
33+ var reg4 = * ( ( ulong * ) ( input + 24 ) ) ;
34+
3035 // XXH64_round
31- v1 += * ( ( ulong * ) input ) * XXH_PRIME64_2 ;
36+ v1 += reg1 * XXH_PRIME64_2 ;
3237 v1 = ( v1 << 31 ) | ( v1 >> ( 64 - 31 ) ) ;
3338 v1 *= XXH_PRIME64_1 ;
34- input += 8 ;
3539
3640 // XXH64_round
37- v2 += * ( ( ulong * ) input ) * XXH_PRIME64_2 ;
41+ v2 += reg2 * XXH_PRIME64_2 ;
3842 v2 = ( v2 << 31 ) | ( v2 >> ( 64 - 31 ) ) ;
3943 v2 *= XXH_PRIME64_1 ;
40- input += 8 ;
4144
4245 // XXH64_round
43- v3 += * ( ( ulong * ) input ) * XXH_PRIME64_2 ;
46+ v3 += reg3 * XXH_PRIME64_2 ;
4447 v3 = ( v3 << 31 ) | ( v3 >> ( 64 - 31 ) ) ;
4548 v3 *= XXH_PRIME64_1 ;
46- input += 8 ;
4749
4850 // XXH64_round
49- v4 += * ( ( ulong * ) input ) * XXH_PRIME64_2 ;
51+ v4 += reg4 * XXH_PRIME64_2 ;
5052 v4 = ( v4 << 31 ) | ( v4 >> ( 64 - 31 ) ) ;
5153 v4 *= XXH_PRIME64_1 ;
52- input += 8 ;
54+ input += 32 ;
5355 } while ( input < limit ) ;
5456
5557 h64 = ( ( v1 << 1 ) | ( v1 >> ( 64 - 1 ) ) ) +
@@ -134,29 +136,31 @@ private static unsafe void __inline__XXH64_stream_process(byte[] input, int len,
134136
135137 do
136138 {
139+ var reg1 = * ( ( ulong * ) ( ptr + 0 ) ) ;
140+ var reg2 = * ( ( ulong * ) ( ptr + 8 ) ) ;
141+ var reg3 = * ( ( ulong * ) ( ptr + 16 ) ) ;
142+ var reg4 = * ( ( ulong * ) ( ptr + 24 ) ) ;
143+
137144 // XXH64_round
138- v1 += * ( ( ulong * ) ptr ) * XXH_PRIME64_2 ;
145+ v1 += reg1 * XXH_PRIME64_2 ;
139146 v1 = ( v1 << 31 ) | ( v1 >> ( 64 - 31 ) ) ;
140147 v1 *= XXH_PRIME64_1 ;
141- ptr += 8 ;
142148
143149 // XXH64_round
144- v2 += * ( ( ulong * ) ptr ) * XXH_PRIME64_2 ;
150+ v2 += reg2 * XXH_PRIME64_2 ;
145151 v2 = ( v2 << 31 ) | ( v2 >> ( 64 - 31 ) ) ;
146152 v2 *= XXH_PRIME64_1 ;
147- ptr += 8 ;
148153
149154 // XXH64_round
150- v3 += * ( ( ulong * ) ptr ) * XXH_PRIME64_2 ;
155+ v3 += reg3 * XXH_PRIME64_2 ;
151156 v3 = ( v3 << 31 ) | ( v3 >> ( 64 - 31 ) ) ;
152157 v3 *= XXH_PRIME64_1 ;
153- ptr += 8 ;
154158
155159 // XXH64_round
156- v4 += * ( ( ulong * ) ptr ) * XXH_PRIME64_2 ;
160+ v4 += reg4 * XXH_PRIME64_2 ;
157161 v4 = ( v4 << 31 ) | ( v4 >> ( 64 - 31 ) ) ;
158162 v4 *= XXH_PRIME64_1 ;
159- ptr += 8 ;
163+ ptr += 32 ;
160164 } while ( ptr < limit ) ;
161165 }
162166 }
0 commit comments