diff --git a/src/ImageSharp/Common/Helpers/Numerics.cs b/src/ImageSharp/Common/Helpers/Numerics.cs index f2f9aaad2c..81cc4b5399 100644 --- a/src/ImageSharp/Common/Helpers/Numerics.cs +++ b/src/ImageSharp/Common/Helpers/Numerics.cs @@ -817,6 +817,12 @@ internal static class Numerics [MethodImpl(InliningOptions.ShortMethod)] public static int ReduceSumArm(Vector128 accumulator) { + if (AdvSimd.Arm64.IsSupported) + { + Vector64 sum = AdvSimd.Arm64.AddAcross(accumulator); + return (int)AdvSimd.Extract(sum, 0); + } + Vector128 sum2 = AdvSimd.AddPairwiseWidening(accumulator); Vector64 sum3 = AdvSimd.Add(sum2.GetLower().AsUInt32(), sum2.GetUpper().AsUInt32()); return (int)AdvSimd.Extract(sum3, 0);