Integrated: 8291669: [REDO] Fix array range check hoisting for some scaled loop iv

Pengfei Li pli at openjdk.org
Wed Sep 14 14:24:52 UTC 2022


On Fri, 12 Aug 2022 09:42:25 GMT, Pengfei Li <pli at openjdk.org> wrote:

> This is a REDO of JDK-8289996. In previous patch, we defer some strength
> reductions in Ideal functions of `Mul[I|L]Node` to post loop igvn phase
> to fix a range check hoisting issue. More about previous patch can be
> found in PR #9508, where we have described some details of the issue
> we would like to fix.
> 
> Previous patch was backed out due to some jtreg failures found. We have
> analyzed those failures one by one and found one of them exposes a real
> performance regression. We see that deferring some strength reductions
> to post loop igvn phase has too much impact. Some vector multiplication
> will not be optimized to vector addition with vector shift after that
> change. So in this REDO we propose the range check hoisting fix with a
> different approach.
> 
> In this new patch, we add some recursive pattern matches for scaled loop
> iv in function `PhaseIdealLoop::is_scaled_iv()`. These include matching
> a sum or a difference of two scaled iv expressions. With this, all kinds
> of Ideal-transformed scaled iv expressions can still be recognized. This
> new approach only touches loop transformation code and hence has much
> smaller impact. We have verified that this new approach applies to both
> int range checks and long range checks.
> 
> Previously attached jtreg case fails on ppc64 because VectorAPI has no
> vector intrinsics on ppc64 so there's no long range check to hoist. In
> this patch, we limit the test architecture to x64 and AArch64.
> 
> Tested hotspot::hotspot_all_no_apps, jdk::tier1~3 and langtools::tier1.

This pull request has now been integrated.

Changeset: 211fab8d
Author:    Pengfei Li <pli at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/211fab8d361822bbd1a34a88626853bf4a029af5
Stats:     282 lines in 4 files changed: 270 ins; 3 del; 9 mod

8291669: [REDO] Fix array range check hoisting for some scaled loop iv

Reviewed-by: roland, thartmann

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

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


More information about the hotspot-compiler-dev mailing list