-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
[NativeAOT] Save full ARM64 SIMD arg registers in UniversalTransition #74888
Conversation
Re: PreStub in CoreClr. It looks like PreStub on ARM64 stores full q registers ThePreStub uses PROLOG_WITH_TRANSITION_BLOCK macro
PROLOG_WITH_TRANSITION_BLOCK uses SAVE_FLOAT_ARGUMENT_REGISTERS
and SAVE_FLOAT_ARGUMENT_REGISTERS saves q registers runtime/src/coreclr/vm/arm64/asmmacros.h Line 200 in d365ff2
|
Interestingly nativeaot has
|
There is also use of
It looks like this corresponds to CoreClr
, and the float argument part deals with q registers (only d portions in nativeaot counterpart)
I do not know if nativeaot and CoreClr should match here |
RhCallDescrWorker is probably a dead code. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this is candidate for release/7.0 backport. The arm64 calling convention is passing HFA in these registers.
I will check once more on the nativeaot+unix version of SAVE_FLOAT_ARGUMENT_REGISTERS - to be sure it is unused. |
it is unused. I will just remove it to be less confusing, since it seems to be subtly incorrect. |
Tests are not starting. :-/ |
Although the new commit just deletes code, I’d like to see it builds on everything. |
Yes, it is a planned eng system downtime. Check your email. |
I am one of those who miss the email from the airline about 1 hour earlier departure for the last flight to the mainland. (they did not wait :) |
Thanks!! |
/backport to release/7.0 |
Started backporting to release/7.0: https://github.com/dotnet/runtime/actions/runs/2974601463 |
On arm64 entire SIMD registers (q0-q7) could be used for argument passing.
I am not sure if JIT uses HVA argument passing for NativeAOT, maybe it is disabled, but it looks like our save/restore of arguments in UniversalTransition frames could be incomplete.