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
[AArch64] Banish slowmem operations to farcode. #2814
[AArch64] Banish slowmem operations to farcode. #2814
Conversation
const u8* trouble_location = nullptr; | ||
const u8* code_base = GetCodePtr(); | ||
|
||
SlowmemHandler handler; |
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
This comment was marked as off-topic.
This comment was marked as off-topic.
Sorry, something went wrong.
I get lots of crashing on this PR. |
What titles were you testing, I couldn't reproduce |
f241534
to
e8aa796
Compare
AArch64 is sensitive to block clearing, and AArch64 generates a lot of code in to the farcache which causes it to fill up fairly quickly at the default size. I'll have to look in to the cache clearing issue, I've noticed it in the past when profiling blocks of code. |
e8aa796
to
84c361f
Compare
This is required to make sure two code spaces are relatively close to one another. In this case I need the AArch64 JIT codespace and its farcode space to be within 128MB of one another for branches.
84c361f
to
f52668e
Compare
This improves performance pretty much across the board for games. The increase in performance is mainly from removing some code from the main JIT blocks of code (pushing and popping millions of registers) and throwing them in farcode where it doesn't pollute the icache.
f52668e
to
bb39ba1
Compare
And cleanup all of the old code for sharing and generating this pointers.
LGTM |
In the middle of benching the changes for now to make sure there wasn't a regression. |
[AArch64] Banish slowmem operations to farcode.
This improves performance pretty much across the board for games.
The increase in performance is mainly from removing some code from the main JIT blocks of code (pushing and popping millions of registers) and throwing them in farcode where it doesn't pollute the icache.