From 69f99d58c2775d9b709cd2e9368519b1f89168aa Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Wed, 21 Sep 2022 18:45:34 -0700 Subject: [PATCH] reset --- BitFaster.Caching.UnitTests/Lfu/CmSketchTests.cs | 2 ++ BitFaster.Caching/Lfu/CmSketch.cs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/BitFaster.Caching.UnitTests/Lfu/CmSketchTests.cs b/BitFaster.Caching.UnitTests/Lfu/CmSketchTests.cs index 54e29b6c..761b40d9 100644 --- a/BitFaster.Caching.UnitTests/Lfu/CmSketchTests.cs +++ b/BitFaster.Caching.UnitTests/Lfu/CmSketchTests.cs @@ -76,6 +76,8 @@ public void WhenSampleSizeExceededCountIsReset() if (sketch.Size != i) { + i.Should().NotBe(1, "sketch should not be reset on the first iteration. Resize logic is broken"); + reset = true; break; } diff --git a/BitFaster.Caching/Lfu/CmSketch.cs b/BitFaster.Caching/Lfu/CmSketch.cs index f0ea491d..b0785be5 100644 --- a/BitFaster.Caching/Lfu/CmSketch.cs +++ b/BitFaster.Caching/Lfu/CmSketch.cs @@ -257,7 +257,8 @@ private unsafe void IncrementAvx(T value) *(tablePtr + indexes.GetElement(2)) += inc.GetElement(2); *(tablePtr + indexes.GetElement(3)) += inc.GetElement(3); - bool wasInc = Avx2.MoveMask(masked.AsByte()) != 0; // _mm256_movemask_epi8 + Vector256 result = Avx2.CompareEqual(masked.AsByte(), Vector256.Create(0).AsByte()); + bool wasInc = Avx2.MoveMask(result.AsByte()) == unchecked((int)(0b1111_1111_1111_1111_1111_1111_1111_1111)); if (wasInc && (++size == sampleSize)) {