-
Notifications
You must be signed in to change notification settings - Fork 415
AArch64: Improve arraycopy helpers #7314
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
Conversation
|
Jenkins build aarch64,amac |
|
See #7181 for the failure on x86 macOS. |
|
Related but independent: PR #7318 |
|
Jenkins build aarch64,amac |
|
I updated the code. It is somewhat faster than the previous version on April 18. |
| // x1 - src addr | ||
| // x2 - dst addr | ||
|
|
||
| // Obsolete entry points to be removed |
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.
What is preventing you from removing them now?
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.
There are dependencies in the OpenJ9 side.
I am keeping these entry points for now to avoid coordinated merge.
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 opened a draft PR eclipse-openj9/openj9#19470.
I am going to remove these entry points from ARM64arrayCopy.spp after the PR above is merged,
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 opened a draft PR #7338 for removing the obsolete entry points.
| TR::addDependency(deps, NULL, TR::RealRegister::x3, TR_GPR, cg); | ||
| TR::addDependency(deps, NULL, TR::RealRegister::x4, TR_GPR, cg); | ||
| TR::addDependency(deps, NULL, TR::RealRegister::v0, TR_FPR, cg); | ||
| TR::addDependency(deps, NULL, TR::RealRegister::v1, TR_FPR, cg); |
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 wonder if it is better to choose less popular registers to trash in the helper (e.g., v30/v31). The reason being that the local register assigner will often choose v0/v1 (won't it?) which may be live across this point, and this increases the likelihood of a conflict that would get resolved by evicting the contents of those registers across this call.
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.
Agreed.
I updated the code to use v30 and v31 instead of v0 and v1. They appear as q30 and q31 in ARM64arrayCopy.spp.
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 ran OpenJ9 sanity.functional tests with this update in eclipse-openj9/openj9#19470, and got no failures.
This commit improves the performance of arraycopy helpers for AArch64 by omitting alignment checks. Signed-off-by: KONNO Kazuhiro <konno@jp.ibm.com>
|
Jenkins build aarch64,amac |
This commit improves the performance of arraycopy helpers for AArch64 by omitting alignment checks.