RFR: 8349361: C2: RShiftL should support all applicable transformations that RShiftI does [v9]
Emanuel Peter
epeter at openjdk.org
Mon Feb 24 15:49:59 UTC 2025
On Fri, 14 Feb 2025 15:57:54 GMT, Roland Westrelin <roland at openjdk.org> wrote:
>> This change refactors `RShiftI`/`RshiftL` `Ideal`, `Identity` and
>> `Value` because the `int` and `long` versions are very similar and so
>> there's no logic duplication. In the process, support for some extra
>> transformations is added to `RShiftL`. I also added some new test
>> cases.
>
> Roland Westrelin has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 15 additional commits since the last revision:
>
> - review
> - review
> - review
> - Merge branch 'master' into JDK-8349361
> - Update src/hotspot/share/opto/mulnode.cpp
>
> Co-authored-by: Emanuel Peter <emanuel.peter at oracle.com>
> - Update src/hotspot/share/opto/mulnode.cpp
>
> Co-authored-by: Emanuel Peter <emanuel.peter at oracle.com>
> - review
> - Update src/hotspot/share/opto/mulnode.hpp
>
> Co-authored-by: Jasmine Karthikeyan <25208576+jaskarth at users.noreply.github.com>
> - Update src/hotspot/share/opto/mulnode.cpp
>
> Co-authored-by: Jasmine Karthikeyan <25208576+jaskarth at users.noreply.github.com>
> - Update src/hotspot/share/opto/mulnode.cpp
>
> Co-authored-by: Jasmine Karthikeyan <25208576+jaskarth at users.noreply.github.com>
> - ... and 5 more: https://git.openjdk.org/jdk/compare/bdb3f04d...5b05d222
test/hotspot/jtreg/compiler/c2/irTests/RShiftLNodeIdealizationTests.java line 125:
> 123: final static int test7Shift = RunInfo.getRandom().nextInt(32) + 32;
> 124: final static long test7Min = -1L << (64 - test7Shift -1);
> 125: final static long test7Max = ~test7Min;
Would you mind adding a quick comment about why you chose the values the way you do?
test/hotspot/jtreg/compiler/c2/irTests/RShiftLNodeIdealizationTests.java line 145:
> 143: public long test9(long x) {
> 144: x = Integer.max(Integer.min((int)x, (int)test7Max), (int)(test7Min-1));
> 145: return ((x << test7Shift) >> test7Shift);
It could be nice to have some test cases where both shift values are completely randomized.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/23438#discussion_r1967923729
PR Review Comment: https://git.openjdk.org/jdk/pull/23438#discussion_r1967922247
More information about the hotspot-compiler-dev
mailing list