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