RFR: 8268858: Determine register pressure automatically by the number of available registers for allocation

Joshua Zhu jzhu at openjdk.java.net
Wed Jun 16 04:29:01 UTC 2021


Hi,

This patch includes the following changes:

1) Determine register pressure automatically by the number of available
   registers for allocation.
   Currently, INTPRESSURE is hard-coded no matter whether heapbase
   or framepointer register is available for RA.

2) x86: Machines with AVX3 have 2x more XMM registers.
        The pressure threshold should be improved for both RA and LCM.
		Currently, only scheduling takes more XMM registers into
		consideration.

3) aarch64: add a new jtreg case
        In bug 8183543, this case caused many compilation failures with
		"failed spill-split-recycle sanity check". This test case is
		imported to ensure no regression failure.

Inconsistent pressure threshold value with the number of available
registers will bring unnecessary spilling in some scenarios.
I wrote a simple example as one case:
  https://cr.openjdk.java.net/~jzhu/8268858/Test.java

With this patch, 4 extra spill copies are eliminated on AArch64.
  old OptoAssembly: https://cr.openjdk.java.net/~jzhu/8268858/old_opto_assembly
  new OptoAssembly: https://cr.openjdk.java.net/~jzhu/8268858/new_opto_assembly

Could you please help review this patch?

Best Regards,
Joshua

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

Commit messages:
 - 8268858: Determine register pressure automatically by the number of available registers for allocation

Changes: https://git.openjdk.java.net/jdk/pull/4505/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4505&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8268858
  Stats: 225 lines in 20 files changed: 160 ins; 44 del; 21 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4505.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4505/head:pull/4505

PR: https://git.openjdk.java.net/jdk/pull/4505


More information about the hotspot-compiler-dev mailing list