|
|
|
@ -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); |
|
|
|
|