-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize System.Text.ASCIIUtility for arm64 using cross-platform intrinsics #41292
Comments
Could you please assign this to @SwapnilGaikwad |
@kunalspathak with the attached change is this now addressed for all architectures, or should this remain open? |
System.Text.ASCIIUtility.GetIndexOfFirstNonAsciiChar() is done for Arm64/X64. Expecting a pull request for System.Text.ASCIIUtility.NarrowUtf16ToAscii() to be raised late this week/early next week. |
It's other way round. |
Oops, yes :) |
This item tracks the remaining System.Text.ASCIIUtility methods that can be optimized for ARM64 using intrinsics. Many were completed in 5.0.0 with #35034, but two methods remain. Both of them had prior attempts to apply ARM64 intrinsics, but the efforts were not completed.
Update for .NET 7
Now that we have cross-platform intrinsics APIs (#49397), these optimizations should be completed using those APIs instead of adding ARM64-specific intrinsics code paths. The effort could optionally include first measuring performance of these methods with the ARM64-specific intrinsics in place, and then measuring the performance of these methods with the cross-platform intrinsics.
We previously attempted to implement these optimizations during .NET 5, but the draft PRs linked above were closed because they were introducing unexpected regressions. Therefore, the effort on these optimizations must include investigation of those pitfalls and finding an approach that simultaneously optimizes the code for ARM64 and avoids regressions elsewhere.
Example use of the new cross-platform intrinsics: #63722
The text was updated successfully, but these errors were encountered: