@@ -247,7 +247,7 @@ private unsafe int EstimateFrequencyAvx(T value)
247
247
index = Avx2 . ShiftLeftLogical ( index , 2 ) ;
248
248
249
249
// convert index from int to long via permute
250
- Vector256 < long > indexLong = Vector256 . Create ( index , Vector128 . Create ( 0 ) ) . AsInt64 ( ) ;
250
+ Vector256 < long > indexLong = Vector256 . Create ( index , Vector128 < int > . Zero ) . AsInt64 ( ) ;
251
251
Vector256 < int > permuteMask2 = Vector256 . Create ( 0 , 4 , 1 , 5 , 2 , 5 , 3 , 7 ) ;
252
252
indexLong = Avx2 . PermuteVar8x32 ( indexLong . AsInt32 ( ) , permuteMask2 ) . AsInt64 ( ) ;
253
253
tableVector = Avx2 . ShiftRightLogicalVariable ( tableVector , indexLong . AsUInt64 ( ) ) ;
@@ -259,7 +259,12 @@ private unsafe int EstimateFrequencyAvx(T value)
259
259
. AsUInt16 ( ) ;
260
260
261
261
// set the zeroed high parts of the long value to ushort.Max
262
+ #if NET6_0
263
+ count = Avx2 . Blend ( count , Vector128 < ushort > . AllBitsSet , 0b10101010 ) ;
264
+ #else
262
265
count = Avx2 . Blend ( count , Vector128 . Create ( ushort . MaxValue ) , 0b10101010 ) ;
266
+ #endif
267
+
263
268
return Avx2 . MinHorizontal ( count ) . GetElement ( 0 ) ;
264
269
}
265
270
}
@@ -309,7 +314,7 @@ private unsafe void IncrementAvx(T value)
309
314
tablePtr [ blockOffset . GetElement ( 2 ) ] += inc . GetElement ( 2 ) ;
310
315
tablePtr [ blockOffset . GetElement ( 3 ) ] += inc . GetElement ( 3 ) ;
311
316
312
- Vector256 < byte > result = Avx2 . CompareEqual ( masked . AsByte ( ) , Vector256 . Create ( 0 ) . AsByte ( ) ) ;
317
+ Vector256 < byte > result = Avx2 . CompareEqual ( masked . AsByte ( ) , Vector256 < byte > . Zero ) ;
313
318
bool wasInc = Avx2 . MoveMask ( result . AsByte ( ) ) == unchecked ( ( int ) ( 0b1111_1111_1111_1111_1111_1111_1111_1111 ) ) ;
314
319
315
320
if ( wasInc && ( ++ size == sampleSize ) )
@@ -319,5 +324,5 @@ private unsafe void IncrementAvx(T value)
319
324
}
320
325
}
321
326
#endif
322
- }
327
+ }
323
328
}
0 commit comments