RFR: 8362504: AArch64: Replace MOVZ+MOVK+MOVK with ADRP+ADD
Andrew Haley
aph at openjdk.org
Wed Aug 6 10:02:03 UTC 2025
On Wed, 6 Aug 2025 09:13:30 GMT, Fei Gao <fgao at openjdk.org> wrote:
> If the relocation or target address is guaranteed to reside within the CodeCache, we can safely replace a `movz + movk + movk` sequence with a more compact and efficient `adrp + add` instruction pair.
>
> In `MacroAssembler::mov(Register r, Address dest)`, this replacement can be applied if any of the following rules hold:
>
> 1. The relocation type indicates that the address resides within the CodeCache and the necessary patching logic is provided in `fix_relocation_after_move()`.
> 2. The target address is fixed (i.e., does not require relocation) and is within the reachable range for `adrp`.
>
> The patch performs the filtering in `is_relocated_within_codecache()` and `is_adrp_reachable()` to ensure this optimization is applied safely and selectively.
It's certainly smaller, but whether it's more efficient is dependent on the circumstances. For example, on Firestorm we can do two ADRPs per cycle, but eight MOVZ/MOVKs.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26653#issuecomment-3158946110
More information about the hotspot-dev
mailing list