You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The following classes/functions in the libraries have Intel x86/x64 intrinsics usage. These are where _ISA_.IsSupported() is called. This information was collected manually and might not be complete. Some of these function names represent many overloads. There are some vectorized helper methods not shown here -- where a function calls IsSupported and then calls a specific helper function to do the actual work, such as for SSE2 or AVX2 specifically. There are other cases where Vector<T> is used, but arm64 already supports that (it should be verified that the arm64 Vector<T> code is complete and performant).
When each of these has added an arm64-specific intrinsics optimization, it should be "checked off".
The sections below are ordered in the presumed priority order that they should be implemented in. (There is no assumed priority order for the individual functions in each section.)
It is expected that System.Collections.BitArray, System.Numerics, and System.SpanHelpers will be "arm64 intrinsi-fied" for .NET 5. If possible, System.Buffers and System.Text will as well, but that is not considered required.
System.SpanHelpers.IndexOfAny(byte) [ ] System.SpanHelpers.SequenceCompareTo(byte) (SIMD vector implementation is fast enough) [ ] System.SpanHelpers.SequenceEqual(byte) (SIMD vector implementation is fast enough) [ ] System.SpanHelpers.LocateFirstFoundByte() (Only used by SIMD version of IndexOf and IndexOfAny which are already optimized by ARM64 intrinsics)
The following classes/functions in the libraries have Intel x86/x64 intrinsics usage. These are where
_ISA_.IsSupported()is called. This information was collected manually and might not be complete. Some of these function names represent many overloads. There are some vectorized helper methods not shown here -- where a function callsIsSupportedand then calls a specific helper function to do the actual work, such as for SSE2 or AVX2 specifically. There are other cases whereVector<T>is used, but arm64 already supports that (it should be verified that the arm64Vector<T>code is complete and performant).When each of these has added an arm64-specific intrinsics optimization, it should be "checked off".
The sections below are ordered in the presumed priority order that they should be implemented in. (There is no assumed priority order for the individual functions in each section.)
It is expected that
System.Collections.BitArray,System.Numerics, andSystem.SpanHelperswill be "arm64 intrinsi-fied" for .NET 5. If possible,System.BuffersandSystem.Textwill as well, but that is not considered required.System.Collections.BitArray #33309
System.Runtime.Intrinsics #33496
Vector64
Vector128
Vector256
System.Numerics
System.Numerics.BitOperations #33495
System.Numerics.Matrix4x4 #33565
System.SpanHelpers #33707
[ ] System.SpanHelpers.SequenceCompareTo(byte)(SIMD vector implementation is fast enough)[ ] System.SpanHelpers.SequenceEqual(byte)(SIMD vector implementation is fast enough)[ ] System.SpanHelpers.LocateFirstFoundByte()(Only used by SIMD version ofIndexOfandIndexOfAnywhich are already optimized by ARM64 intrinsics)System.Buffers #35033
(Not completed in 5.0.0; moved to 6.0.0)
System.Text
System.Text.ASCIIUtility #35034
(Not completed in 5.0.0; #41292 contains the items moved to 6.0.0)
System.Text.Unicode #35035
System.Text.Encodings.Web #35036