Vector.Sum(Vector<T>) API implementation for horizontal add. (#53527)
authorIvan Zlatanov <ivan@zlatanov.net>
Fri, 11 Jun 2021 16:50:09 +0000 (19:50 +0300)
committerGitHub <noreply@github.com>
Fri, 11 Jun 2021 16:50:09 +0000 (09:50 -0700)
commit6afe03ef71d2290ffd91b707b704a041e4edc3c3
tree718f58f310c68478ec204403116fbafd6a4e77eb
parentb074b8dbda38814a72aafb2775145d5d749d62d5
Vector.Sum(Vector<T>) API implementation for horizontal add. (#53527)

* Vector.Sum(Vector<T>) API implementation for horizontal add.

* Fixed inccorrect referece to Arm64 AddAccross intrinsic function.

* Added implementation for hardware accelerated Vector<T>.Sum for long, ulong, float, double on ARM64.

* Fixed formatting issue.

* Correctness.

* Fixed compiler error for ARM64.

* Formatting issue.

* More explicit switch statement. Fixed wrong simd size for NI_Vector64_ToScalar.

* Fixed auto formatting issue.

* Use AddPairwiseScalar for double, long and ulong on ARM64 for VectorT128_Sum.

* Forgot ToScalar call after AddPairwiseScalar.

* Fixed wrong return type.
src/coreclr/jit/simdashwintrinsic.cpp
src/coreclr/jit/simdashwintrinsiclistarm64.h
src/coreclr/jit/simdashwintrinsiclistxarch.h
src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs
src/libraries/System.Numerics.Vectors/tests/GenericVectorTests.cs
src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs
src/libraries/System.Private.CoreLib/src/System/Numerics/Vector_1.cs