-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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 multiplication/anding by zero seems to be discarded #56930
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. |
CC @dotnet/jit-contrib |
I will take a look. |
The issue is in pipehole optimization
The JIT runtime/src/coreclr/jit/emitarm64.cpp Lines 15695 to 15707 in ce3447c
falsely assumes that the following sequence of instructions ldr wzr,[x1,#8]
str wzr,[x1,#8] is equivalent to just one load ldr wzr,[x1,#8] The fix should be an additional check that the previous load instruction actually sets the value of its destination register. In other words, that the register is not xzr or wzr. I will work on the fix. |
cc @dotnet/jit-contrib
The text was updated successfully, but these errors were encountered: