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

Joshua Zhu jzhu at openjdk.java.net
Wed Jun 16 09:56:35 UTC 2021


On Wed, 16 Jun 2021 04:20:31 GMT, Joshua Zhu <jzhu at openjdk.org> wrote:

> 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.

For those machines that I don’t have, I can’t perform architecture-dependent
tests, therefore the threshold ​​remains unchanged.

> 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.

I introduce the test in 8183543 as a jtreg case to ensure no regression failure
for my patch.

> 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

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

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


More information about the hotspot-compiler-dev mailing list