Skip to content

Commit 75481ff

Browse files
committed
table lookup
1 parent dbe9b79 commit 75481ff

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

BitFaster.Caching/Lfu/CmSketchCore.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)