RFR: 8329032: C2 compiler register allocation support for APX EGPRs

Jatin Bhateja jbhateja at openjdk.org
Thu Jun 13 15:16:27 UTC 2024


Intel® Advanced Performance Extensions (Intel® APX) adds 16 new 64 bit general purpose register also known as Extended General Purpose Registers in IA-32e 64 bit mode.

This initial patch adds following support:-
1) C2 compiler register allocation support.
2) State save restoration while transitioning from C2 JIT compiled code to runtime services.
3) Applicable extensions to native interface used by runtime for patching instruction.

We plan to address C1 register support in subsequent patch as there are hard upper bound allocation limits
(currently set to r11) imposed by existing implementation of linear scan algorithm after which it reserves
remaining register for special purpose.

Patch has been regressed over stand alone test points after merging with other APX support patches [1][2] under review.

We plan to do thorough validation using [Intel's SDE](https://www.intel.com/content/www/us/en/download/684897/intel-software-development-emulator.html) during course of time and release incremental patches for bug fixes
found during testing.

[1] https://github.com/openjdk/jdk/pull/18476
[2] https://github.com/openjdk/jdk/pull/18562

PS: Intent of this draft PR is to facilitate validation of existing APX related PRs under review.

-------------

Commit messages:
 - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8329032
 - Changes to skip over stack alignment gaps while popping registers using POP2 after comment from sviswa7
 - 32 bit build fix and enforced stack alignment constraints.
 - Support new PUSH2/POP2 instructions along with Push-Pop Acceleration (PPX) to optimize register save/restore operation.
 - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8329032
 - 32-bit build fixes.
 - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8329032
 - Merge branch 'master' of http://github.com/openjdk/jdk into JDK-8329032
 - 8329032: C2 compiler register allocation support for APX EGPRs

Changes: https://git.openjdk.org/jdk/pull/19042/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19042&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8329032
  Stats: 738 lines in 19 files changed: 598 ins; 53 del; 87 mod
  Patch: https://git.openjdk.org/jdk/pull/19042.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19042/head:pull/19042

PR: https://git.openjdk.org/jdk/pull/19042


More information about the hotspot-dev mailing list