Skip to content
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: Use b.cond instead of cbz/cbnz when all register are used up #5737

Merged
merged 1 commit into from
Jan 6, 2021

Conversation

Akira1Saitoh
Copy link
Contributor

ificmpeq and its variant nodes have 3 children and the third child is
GlRegDeps whose children are aRegLoad/iRegLoad/PassThrough of global registers.
In some cases, GlRegDeps node uses all the allocatable integer registers.
If this happens, we cannot use cbz/cbnz instruction for branch
because cbz/cbnz requires a register in addition to those global registers.
This commit changes ificmpHelper to use b.cond instruction for that case.

Signed-off-by: Akira Saitoh saiaki@jp.ibm.com

`ificmpeq` and its variant nodes have 3 children and the third child is
`GlRegDeps` whose children are `aRegLoad`/`iRegLoad`/`PassThrough` of global registers.
In some cases, `GlRegDeps` node uses all the allocatable integer registers.
If this happens, we cannot use `cbz`/`cbnz` instruction for branch
because `cbz`/`cbnz` requires a register in addition to those global registers.
This commit changes `ificmpHelper` to use `b.cond` instruction for that case.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
@Akira1Saitoh
Copy link
Contributor Author

This PR should fix eclipse-openj9/openj9#10812

@knn-k knn-k self-assigned this Jan 6, 2021
@knn-k
Copy link
Contributor

knn-k commented Jan 6, 2021

@genie-omr build aarch64

@knn-k knn-k merged commit 13926a7 into eclipse:master Jan 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants