@@ -474,14 +474,17 @@ private unsafe int EstimateFrequencyArm(T value)
474474 b = AdvSimd . And ( b , fifteen ) ;
475475
476476 // TODO: VectorTableLookup
477- Vector128 < int > x = AdvSimd . Arm64 . InsertSelectedScalar ( Vector128 < int > . Zero , 0 , a . AsInt32 ( ) , 0 ) ;
478- x = AdvSimd . Arm64 . InsertSelectedScalar ( x , 1 , a . AsInt32 ( ) , 2 ) ;
479- x = AdvSimd . Arm64 . InsertSelectedScalar ( x , 2 , b . AsInt32 ( ) , 0 ) ;
480- x = AdvSimd . Arm64 . InsertSelectedScalar ( x , 3 , b . AsInt32 ( ) , 2 ) ;
477+ // Vector128<int> x = AdvSimd.Arm64.InsertSelectedScalar(Vector128<int>.Zero, 0, a.AsInt32(), 0);
478+ // x = AdvSimd.Arm64.InsertSelectedScalar(x, 1, a.AsInt32(), 2);
479+ // x = AdvSimd.Arm64.InsertSelectedScalar(x, 2, b.AsInt32(), 0);
480+ // x = AdvSimd.Arm64.InsertSelectedScalar(x, 3, b.AsInt32(), 2);
481481
482- var minA = AdvSimd . Arm64 . MinAcross ( x ) ;
482+ var min = AdvSimd . Arm64 . VectorTableLookup ( a . AsByte ( ) , Vector128 . Create ( 0x0B0A090803020100 , 0xFFFFFFFFFFFFFFFF ) . AsByte ( ) ) ;
483+ min = AdvSimd . Arm64 . VectorTableLookupExtension ( min , b . AsByte ( ) , Vector128 . Create ( 0xFFFFFFFFFFFFFFFF , 0x0B0A090803020100 ) . AsByte ( ) ) ;
483484
484- return minA . ToScalar ( ) ;
485+ var min32 = AdvSimd . Arm64 . MinAcross ( min . AsInt32 ( ) ) ;
486+
487+ return min32 . ToScalar ( ) ;
485488 }
486489 }
487490#endif
0 commit comments