RFR: 8373134: C2: Min/Max users of Min/Max uses should be enqueued for GVN [v2]

Galder Zamarreño galder at openjdk.org
Fri Dec 19 08:36:11 UTC 2025


On Thu, 18 Dec 2025 23:17:06 GMT, Dean Long <dlong at openjdk.org> wrote:

>> Galder Zamarreño has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains nine commits:
>> 
>>  - Merge branch 'master' into topic.uses-min-max
>>  - Test Float16
>>  - Only apply to uses that match original IR node
>>  - Merge branch 'master' into topic.uses-min-max
>>  - Use is_MinMax() instead of spelling out individual Min/Max opcodes
>>  - Refactor MaxNode to MinMaxNode and add is_MinMax() query
>>  - Add max(a, max(b, c)) patterns to add users of use
>>  - Add templated test
>>  - Remove exclude or Min/Max in verify identity
>
> src/hotspot/share/opto/phaseX.cpp line 2609:
> 
>> 2607:     for (DUIterator_Fast i2max, i2 = use->fast_outs(i2max); i2 < i2max; i2++) {
>> 2608:       Node* u = use->fast_out(i2);
>> 2609:       if (u->Opcode() == use->Opcode()) {
> 
> So there are no Min(Max()) or Max(Min()) patterns we need to worry about?  I was expecting this line to be
> 
> if (u->is_MinMax()) {

Good question. There could be some patterns but I couldn't think of any when I was working on this, so I limited it to the patterns that I knew for sure required this, e.g. Max(Max()), Min(Min()).

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

PR Review Comment: https://git.openjdk.org/jdk/pull/28895#discussion_r2634188399


More information about the hotspot-compiler-dev mailing list