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