@@ -241,7 +241,7 @@ private unsafe int EstimateFrequencyAvx(T value)
241
241
Vector128 < int > blockOffset = Avx2 . Add ( Vector128 . Create ( block ) , offset ) ; // i - table index
242
242
blockOffset = Avx2 . Add ( blockOffset , Vector128 . Create ( 0 , 2 , 4 , 6 ) ) ; // + (i << 1)
243
243
244
- fixed ( long * tablePtr = & table [ 0 ] )
244
+ fixed ( long * tablePtr = table )
245
245
{
246
246
Vector256 < long > tableVector = Avx2 . GatherVector256 ( tablePtr , blockOffset , 8 ) ;
247
247
index = Avx2 . ShiftLeftLogical ( index , 2 ) ;
@@ -284,7 +284,7 @@ private unsafe void IncrementAvx(T value)
284
284
Vector128 < int > blockOffset = Avx2 . Add ( Vector128 . Create ( block ) , offset ) ; // i - table index
285
285
blockOffset = Avx2 . Add ( blockOffset , Vector128 . Create ( 0 , 2 , 4 , 6 ) ) ; // + (i << 1)
286
286
287
- fixed ( long * tablePtr = & table [ 0 ] )
287
+ fixed ( long * tablePtr = table )
288
288
{
289
289
Vector256 < long > tableVector = Avx2 . GatherVector256 ( tablePtr , blockOffset , 8 ) ;
290
290
@@ -309,20 +309,20 @@ private unsafe void IncrementAvx(T value)
309
309
// Mask to zero out non matches (add zero below) - first operand is NOT then AND result (order matters)
310
310
inc = Avx2 . AndNot ( masked , inc ) ;
311
311
312
+ Vector256 < byte > result = Avx2 . CompareEqual ( masked . AsByte ( ) , Vector256 < byte > . Zero ) ;
313
+ bool wasInc = Avx2 . MoveMask ( result . AsByte ( ) ) == unchecked ( ( int ) ( 0b1111_1111_1111_1111_1111_1111_1111_1111 ) ) ;
314
+
312
315
tablePtr [ blockOffset . GetElement ( 0 ) ] += inc . GetElement ( 0 ) ;
313
316
tablePtr [ blockOffset . GetElement ( 1 ) ] += inc . GetElement ( 1 ) ;
314
317
tablePtr [ blockOffset . GetElement ( 2 ) ] += inc . GetElement ( 2 ) ;
315
318
tablePtr [ blockOffset . GetElement ( 3 ) ] += inc . GetElement ( 3 ) ;
316
319
317
- Vector256 < byte > result = Avx2 . CompareEqual ( masked . AsByte ( ) , Vector256 < byte > . Zero ) ;
318
- bool wasInc = Avx2 . MoveMask ( result . AsByte ( ) ) == unchecked ( ( int ) ( 0b1111_1111_1111_1111_1111_1111_1111_1111 ) ) ;
319
-
320
320
if ( wasInc && ( ++ size == sampleSize ) )
321
321
{
322
322
Reset ( ) ;
323
323
}
324
324
}
325
325
}
326
326
#endif
327
- }
327
+ }
328
328
}
0 commit comments