-
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
JIT ARM64-SVE: Move SVE-specific emitIns logic to emitarm64sve.cpp #99983
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
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.
It's fairly tricky for me to confirm the code in emitarm64sve.cpp is just a copy/paste of the code from emitarm64.cpp. However, the changes good.
I'm assuming:
- No difference in codegen test output
- The contents of the functions in emitarm64sve.cpp are identical to that cut from emitarm64.cpp, plus potentially some repeated parts/boilerplate.
Additional thoughts:
- We should merge this asap
- In another PR, we could move the other SVE parts from the sanity check, disp instr, perf score etc functions into here too.
- We have the choice to eventually use
emitInsSve_
functions directly instead of calling fromemitIns_
. No need to make that choice yet - depends on the IR code.
@a74nh thanks for the review! Your assumptions are correct. This is a no-diff change, and I did a diff of the SVE unit test output with and without this change, and didn't see any diffs there either. I plan to do similar transition work for other methods (
Agreed. It would be slightly more performant if we could call the |
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.
We have the choice to eventually use emitInsSve_ functions directly instead of calling from emitIns_
Agree.
I am hoping to see 0 or very few references of "sve_" text in emitarm64.cpp
. Currently, there are still methods like insEncodeSveElemsize_tszh_tszl_and_imm
, insGetSveReg1ListSize
, etc. in emitarm64.cpp
. Is there a reason why they can't be moved to emitarm64sve.cpp
?
I plan to move those too. I just thought that would be better suited for a follow-up PR, since this one is already pretty big. |
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.
LGTM
For reference, the MinOpts regression is only in the |
We already had a few SVE-specific
emitIns_*
methods; this PR strips out the remaining SVE instructions from our generalemitIns
methods, and moves them to correspondingemitInsSve
methods inemitarm64sve.cpp
. I plan to move over our SVE-specific helper methods, and extract the SVE cases in other shared emitter methods to SVE methods, but this PR is big enough that this seemed like a natural stopping point. There are no diffs in the SVE unit tests from this change.cc @dotnet/arm64-contrib