Open andrew-m-leonard opened 3 years ago
And, I think also adding -qtune=pwr8
(although that is the default behavior on POWER8).
The key item -qarch=XYZ changes is the instruction set availability. -qarch=ppc64 goes back to the very VERY first 64-bit processor (POWER3 iirc).
pwr4
Produces object code containing instructions that will run on the POWER4,
POWER5, POWER5+, POWER6®, POWER7®, POWER7+™, POWER8®, or
PowerPC® 970 hardware platforms.
pwr5
Produces object code containing instructions that will run on the POWER5,
POWER5+, POWER6, POWER7, POWER7+, or POWER8 hardware platforms.
pwr5x
Produces object code containing instructions that will run on the POWER5+,
POWER6, POWER7, POWER7+, or POWER8 hardware platforms.
pwr6
Produces object code containing instructions that will run on the POWER6,
POWER7, POWER7+, or POWER8 hardware platforms running in POWER6,
POWER7, POWER7+, or POWER8 architected mode. If you would like support
for decimal floating-point instructions, be sure to specify this suboption during
compilation.
pwr6e
Produces object code containing instructions that will run on the POWER6
hardware platforms running in POWER6 enhanced mode.
pwr7
Produces object code containing instructions that will run on the POWER7,
POWER7+, or POWER8 hardware platforms.
pwr8
Produces object code containing instructions that will run on the POWER8
hardware platforms.
FYI: POWER Linux LE:
This is what we need to 'fix': eliminate messages such as:
14:23:16 /home/jenkins/workspace/build-scripts/jobs/jdk/jdk-aix-ppc64-openj9/workspace/build/src/build/aix-ppc64-server-release/vm/runtime/codert_vm/pnathelp.s: line 11609: Instruction lxvd2x is not implemented in the current assembly mode PPC64.
14:23:16 /home/jenkins/workspace/build-scripts/jobs/jdk/jdk-aix-ppc64-openj9/workspace/build/src/build/aix-ppc64-server-release/vm/runtime/codert_vm/pnathelp.s: line 11611: Instruction lxvd2x is not implemented in the current assembly mode PPC64.
14:23:16 /home/jenkins/workspace/build-scripts/jobs/jdk/jdk-aix-ppc64-openj9/workspace/build/src/build/aix-ppc64-server-release/vm/runtime/codert_vm/pnathelp.s: line 11613: Instruction lxvd2x is not implemented in the current assembly mode PPC64.
Are those errors new in the JDK17 builds only? I'd be a little wary of changing things in previous releases in cae people are using our builds on older systems and we introduce customer problems. Can we check which series of processor lxvd2x
was introduced in? We don't currently list a minimum supported level for AIX systems on our supported platforms page/
@andrew-m-leonard If this has been reported upstream to we have a bug reference?
The assembly language instruction is part of the VSX
instructions (a co-processor in the POWER core, iirc).
VSX Vector Load Instructions: lxvb16x lxvd2x lxv lxvx lxvh8x lxvw4x
So, the code in runtime/codert_vm/pnathelp.s
requires, at a minimum, POWER7.
From the XLC compiler reference (PDF): -qarch
description and Usage
:
Table 22. Feature support in processor architectures
Architecture Graphics
support
Square root
support
64-bit support Vector
processing
support
Large page
support
pwr4 yes yes yes no yes
pwr5 yes yes yes no yes
pwr5x yes yes yes no yes
ppc yes yes yes no yes
ppc64 yes yes yes no yes
ppc64gr yes yes yes no yes
ppc64grsq yes yes yes no yes
ppc64v yes yes yes VMX yes
ppc970 yes yes yes VMX yes
pwr6 yes yes yes VMX yes
pwr6e yes yes yes VMX yes
pwr7 yes yes yes VMX, VSX yes
pwr8 yes yes yes VMX, VSX yes
As picture (I hope):
@andrew-m-leonard - perhaps the title should be changed to pwr7
rather than pwr5x
(for pwr5+).
Current openjdk compiles ppc xlc platforms using:
https://github.com/openjdk/jdk/blob/3bb6a3d2ab96373baa4e18f4e61173f11225fd4e/make/autoconf/flags-cflags.m4#L720 better optimization could be achieved using -qarch=pwr5