Browse Source

Use AddAcross for reduce sum, if available

pull/2356/head
Brian Popow 3 years ago
parent
commit
e345857cd9
  1. 6
      src/ImageSharp/Common/Helpers/Numerics.cs

6
src/ImageSharp/Common/Helpers/Numerics.cs

@ -817,6 +817,12 @@ internal static class Numerics
[MethodImpl(InliningOptions.ShortMethod)]
public static int ReduceSumArm(Vector128<uint> accumulator)
{
if (AdvSimd.Arm64.IsSupported)
{
Vector64<uint> sum = AdvSimd.Arm64.AddAcross(accumulator);
return (int)AdvSimd.Extract(sum, 0);
}
Vector128<ulong> sum2 = AdvSimd.AddPairwiseWidening(accumulator);
Vector64<uint> sum3 = AdvSimd.Add(sum2.GetLower().AsUInt32(), sum2.GetUpper().AsUInt32());
return (int)AdvSimd.Extract(sum3, 0);

Loading…
Cancel
Save