-
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
ARM64: Missing combine eor+lsr and duplicate constant reloads #78263
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
It applies also to many other combinations like
that could be combined into |
cc @tannergooding who recently landed a similar change to .NET 8 |
Cool, might be this one #75823? (I could have a look to support more of the scenarios above, though the issue linked seems to say that it should be supported 🤔 ) Linking back also to the original issue #68028 |
I thought that the PR from Tanner was actually part of .NET 7, but no, I just doubled checked with latest main and it seems fixed. So I can close this issue! 😎 |
Reopening. Unfortunately, I can still see the constants being reloaded. Will check if that happens also on x64. [Edit] Oops, nevermind, it was a load from a memory location actually. |
Hey,
(To include maybe to #77010 ?)
Opening an issue to investigate the performance difference when running
XxHash128
on ARM64 (here) while tracking the difference of performance with the native code, I have spotted 2 issues so far:Missing combine eor+lsr
The following C# code (declared in
XxHashShared.cs
):is generating the following code:
while it could combine instructions like:
You can see the impact in the following code dumped, as there are many eor+lsr combined operations.
Duplicate constant reloads
For some unknown reasons that I'm not able to reproduce on a synthetic test, it seems that e.g some code in
HashLength9To16
is duplicating the load of severalulong
consts:while the native version is generating the following:
The text was updated successfully, but these errors were encountered: