JIT ARM64-SVE: Move SVE-specific emitIns logic to emitarm64sve.cpp#99983
JIT ARM64-SVE: Move SVE-specific emitIns logic to emitarm64sve.cpp#99983amanasifkhalid merged 14 commits intodotnet:mainfrom
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
a74nh
left a comment
There was a problem hiding this comment.
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 |
kunalspathak
left a comment
There was a problem hiding this comment.
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. |
|
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 generalemitInsmethods, and moves them to correspondingemitInsSvemethods 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