From de3140bbc29f4914425564538c849731b531dbeb Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Tue, 9 Nov 2021 16:58:48 +0100 Subject: [PATCH] Use Numerics.ReduceSum(sum) --- src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs index c1af2a4534..5b7d4d8981 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs @@ -27,8 +27,6 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy #if SUPPORTS_RUNTIME_INTRINSICS if (Sse2.IsSupported) { - Span tmp = stackalloc int[4]; - // Load values. Vector128 a0 = Unsafe.As>(ref MemoryMarshal.GetReference(a)); Vector128 a1 = Unsafe.As>(ref MemoryMarshal.GetReference(a.Slice(WebpConstants.Bps, 8))); @@ -58,9 +56,7 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy Vector128 e1 = Sse2.MultiplyAddAdjacent(d1.AsInt16(), d1.AsInt16()); Vector128 sum = Sse2.Add(e0, e1); - ref int outputRef = ref MemoryMarshal.GetReference(tmp); - Unsafe.As>(ref outputRef) = sum; - return tmp[3] + tmp[2] + tmp[1] + tmp[0]; + return Numerics.ReduceSum(sum); } else #endif @@ -658,9 +654,6 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy /// public static int TTransformSse41(Span inputA, Span inputB, Span w, Span scratch) { - Span sum = scratch.Slice(0, 4); - sum.Clear(); - // Load and combine inputs. Vector128 ina0 = Unsafe.As>(ref MemoryMarshal.GetReference(inputA)); Vector128 ina1 = Unsafe.As>(ref MemoryMarshal.GetReference(inputA.Slice(WebpConstants.Bps, 16))); @@ -765,9 +758,7 @@ namespace SixLabors.ImageSharp.Formats.Webp.Lossy // difference of weighted sums. Vector128 result = Sse2.Subtract(ab0ab2Sum.AsInt32(), b0w0bb2w8Sum.AsInt32()); - ref int outputRef = ref MemoryMarshal.GetReference(sum); - Unsafe.As>(ref outputRef) = result.AsInt32(); - return sum[3] + sum[2] + sum[1] + sum[0]; + return Numerics.ReduceSum(result); } #endif