From b0bfb0a035abd455ff50fa447f55b87d974fc5cf Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Fri, 17 Feb 2023 13:29:26 +0100 Subject: [PATCH] Use Vector128.sum() for reduce sum in NET7.0 --- src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs index 850f3d876..13f5662e7 100644 --- a/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs +++ b/src/ImageSharp/Formats/Webp/Lossy/LossyUtils.cs @@ -229,7 +229,11 @@ internal static class LossyUtils sum); } +#if NET7_0_OR_GREATER + return (int)Vector128.Sum(sum); +#else return Numerics.ReduceSumArm(sum); +#endif } [MethodImpl(InliningOptions.ShortMethod)] @@ -246,7 +250,11 @@ internal static class LossyUtils sum); } +#if NET7_0_OR_GREATER + return (int)Vector128.Sum(sum); +#else return Numerics.ReduceSumArm(sum); +#endif } [MethodImpl(InliningOptions.ShortMethod)] @@ -264,7 +272,12 @@ internal static class LossyUtils Vector128 sum1 = AdvSimd.AddPairwiseWidening(prod1); Vector128 sum2 = AdvSimd.AddPairwiseWidening(prod2); - return Numerics.ReduceSumArm(AdvSimd.Add(sum1, sum2)); + Vector128 sum = AdvSimd.Add(sum1, sum2); +#if NET7_0_OR_GREATER + return (int)Vector128.Sum(sum); +#else + return Numerics.ReduceSumArm(sum); +#endif } // Load all 4x4 pixels into a single Vector128