RFR: JDK-8331859 : [PPC64] Remove support for Power7 and older [v4]

Martin Doerr mdoerr at openjdk.org
Wed Apr 23 15:51:19 UTC 2025


On Thu, 17 Apr 2025 08:03:02 GMT, Suchismith Roy <sroy at openjdk.org> wrote:

>> JBS Issue: [JDK-8331859](https://bugs.openjdk.org/browse/JDK-8331859) 
>> Linux PPC64le requires Power8 since the beginning.
>> AIX requires Power8 with the new OpenXL based build ([JDK-8307520](https://bugs.openjdk.org/browse/JDK-8307520)). The old build has been removed in JDK 23 ([JDK-8327701](https://bugs.openjdk.org/browse/JDK-8327701)).
>> Linux PPC64 Big Endian is no longer officially supported (only kept alive for development, debugging and testing purposes).
>> 
>> The following checks for old processors are no longer needed:
>> 8: VM_Version::has_lqarx()
>> 7: VM_Version::has_popcntw()
>> 6: VM_Version::has_cmpb()
>> 5: VM_Version::has_popcntb()
>> These ones and some more checks for old instructions are no longer needed. All code which is no longer reachable when removing them should also get removed.
>> Checks like "PowerArchitecturePPC64 >= 8" (or older) can be removed.
>> 
>> Atomic::PlatformCmpxchg<1>::operator() can be simplified by using sub-word instructions (lharx, lbarx).
>> 
>> Temp registers can be removed from cmpxchgb and cmpxchgh.
>> 
>> Build flags "-mcpu=powerpc64 -mtune=power5" for Big Endian linux should get replaced by "-mcpu=power8 -mtune=power8" as already used for linux PPC64le.
>
> Suchismith Roy has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 27 commits:
> 
>  - Merge branch 'openjdk:master' into power8
>  - mfdscr removal
>  - indents
>  - indents
>  - mcpu flag
>  - superword
>  -  further cleanup
>  - clean of power 7 instructions
>  - Removal of older P7 Instructions
>  - Removal of older P7 Instructions
>  - ... and 17 more: https://git.openjdk.org/jdk/compare/1138a186...4aa520c2

src/hotspot/cpu/ppc/ppc.ad line 12869:

> 12867:   match(Set dst (MaxI src1 src2));
> 12868:   effect(KILL cr0);
> 12869:   predicate(VM_Version::has_isel());

This makes other instruct with `match(Set dst (MaxI src1 src2));` and higher cost obsolete. `maxI_reg_reg_Ex` should be removed. There are more cases in which you have removed a predicate which makes other instruct blocks obsolete. Please check!

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20262#discussion_r2056363710


More information about the hotspot-dev mailing list