From 225250bb33db2ebb39fc1719b94b96d9bc89055d Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Thu, 11 Jul 2024 00:19:23 +0200 Subject: [PATCH] Small improvement in Sum --- HPPH/PixelHelper.Sum.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/HPPH/PixelHelper.Sum.cs b/HPPH/PixelHelper.Sum.cs index 6951782..caacf20 100644 --- a/HPPH/PixelHelper.Sum.cs +++ b/HPPH/PixelHelper.Sum.cs @@ -211,11 +211,12 @@ public static unsafe partial class PixelHelper 4, 0 ]; + Vector256 controlVector = Vector256.LoadUnsafe(ref MemoryMarshal.GetReference(avx2ControlData)); + Vector256 rgbaSum64 = Vector256.Zero; ReadOnlySpan dataBytes = MemoryMarshal.AsBytes(data); fixed (byte* bytePtr = dataBytes) - fixed (int* controlPtr = avx2ControlData) fixed (byte* maskPtr = avx2ShuffleMask) { Vector256 avx2ShuffleMaskVector = Avx2.BroadcastVector128ToVector256(maskPtr); @@ -224,7 +225,7 @@ public static unsafe partial class PixelHelper { Vector256 chunk = Vector256.Load(bytePtr + (i * 4)); Vector256 deinterleaved = Avx2.Shuffle(chunk, avx2ShuffleMaskVector); - Vector256 deinterleaved2 = Avx2.PermuteVar8x32(deinterleaved.AsInt32(), Vector256.Load(controlPtr)); + Vector256 deinterleaved2 = Avx2.PermuteVar8x32(deinterleaved.AsInt32(), controlVector); Vector256 sum = Avx2.SumAbsoluteDifferences(deinterleaved2.AsByte(), Vector256.Zero).AsInt64(); rgbaSum64 = Avx2.Add(rgbaSum64, sum); }