-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
8341611: [REDO] AArch64: Clean up IndOffXX type and let legitimize_address() fix out-of-range operands #22862
base: master
Are you sure you want to change the base?
Conversation
…dress() fix out-of-range operands IndOffXX types don't do us any good. It would be simpler and faster to match a general-purpose IndOff type then let legitimize_address() fix any out-of-range operands. That'd reduce the size of the match rules and the time to run them. This patch simplifies the definitions of `immXOffset` with an estimated range. Whether an immediate can be encoded in a LDR/STR instructions as an offset will be determined in the phase of code-emitting. Meanwhile, we add necessary `legitimize_address()` in the phase of matcher for all LDR/STR instructions using the new `IndOff` memory operands (fix JDK-8341437). After this clean-up, memory operands matched with `IndOff` may require extra code emission (effectively a lea) before the address can be used. So we also modify the code about looking up precise offset of load/store instruction for implicit null check (fix JDK-8340646). On aarch64 platform, we will use the beginning offset of the last instruction in the instruction clause emitted for a load/store machine node. Because LDR/STR is always the last one emitted, no matter what addressing mode the load/store operations finally use. Tier 1 - 3 passed on Macos-aarch64 with or without the vm option "-XX:+UseZGC"
👋 Welcome back fgao! A progress list of the required criteria for merging this PR into |
❗ This change is not yet ready to be integrated. |
@@ -5391,6 +5200,9 @@ operand indirectX2P(iRegL reg) | |||
%} | |||
%} | |||
|
|||
// "off" is probably not within the encoding range for LDR/STR instructions |
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.
// "off" is probably not within the encoding range for LDR/STR instructions | |
// "off" may not be within the encoding range for LDR/STR instructions |
Reads better, perhaps?
In general I like this very much. |
IndOffXX
types don't do us any good. It would be simpler and faster to match a general-purposeIndOff
type then letlegitimize_address()
fix any out-of-range operands. That'd reduce the size of the match rules and the time to run them.This patch simplifies the definitions of
immXOffset
with an estimated range. Whether an immediate can be encoded in aLDR
/STR
instructions as an offset will be determined in the phase of code-emitting. Meanwhile, we add necessarylegitimize_address()
in the phase of matcher for allLDR
/STR
instructions using the newIndOff
memory operands (fix JDK-8341437).After this clean-up, memory operands matched with
IndOff
may require extra code emission (effectively alea
) before the address can be used. So we also modify the code about looking up precise offset of load/store instruction for implicit null check (fix JDK-8340646). Onaarch64
platform, we will use the beginning offset of the last instruction in the instruction clause emitted for a load/store machine node. BecauseLDR
/STR
is always the last one emitted, no matter what addressing mode the load/store operations finally use.Tier 1 - 3 passed on
Macos-aarch64
with or without the vm option-XX:+UseZGC
.Progress
Issue
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/22862/head:pull/22862
$ git checkout pull/22862
Update a local copy of the PR:
$ git checkout pull/22862
$ git pull https://git.openjdk.org/jdk.git pull/22862/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 22862
View PR using the GUI difftool:
$ git pr show -t 22862
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/22862.diff
Using Webrev
Link to Webrev Comment