Hi Boris, (1) I can try to measure the load time for java -version. I guess the best way to benchmark it would be JMH, but I'm not sure where the effect would be the biggest (this is more or less a premature optimization). (2) I don't think they are widely used nowadays. Texas Instruments has these cores in some of their old SoCs: http://processors.wiki.ti.com/index.php/ARM9 . Yes, this flag would benefit only this particular ARM core. (3) We did this because the FLAGS_SETUP_ASFLAGS_CPU_DEP macro was moved here. EXTRA_CFLAGS is added to ASFLAGS too, but according to the comment inside it is a misuse to preserve backwards compatibility.
However, I have found a different reason why I used this patch back in the day. I tried to compile OpenJDK with just arm-sflt and it failed with the following error: /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s: Assembler messages: /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:83: Error: selected processor does not support `pld [from,#0]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:93: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:128: Error: selected processor does not support `pld [from,#0]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:141: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:166: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:174: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:212: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:226: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:280: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:318: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:331: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:389: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:446: Error: selected processor does not support `pld [from,#0]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:459: Error: selected processor does not support `pld [from]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:484: Error: selected processor does not support `pld [from,#-32]' in ARM mode /build/jdk/src/hotspot/os_cpu/linux_arm/linux_arm_32.s:492: Error: selected processor does not support `pld [from]' in ARM mode I can redo the patch to remove the ARM926EJ-S specific bits and instead only supply -marm -march=armv5t or similar to the assembler when needed. Thanks, Jakub út 13. 11. 2018 v 11:15 odesílatel Boris Ulasevich <[email protected]> napsal: > > Hi Jakub, > > I am not against this patch, but I have a few concerns. (1) For me > motivation "might increase performance a little bit" is not quite clear. > It would be better to have some confidence. (2) Is the particular CPU > highly distributed? I am not sure anybody else will get benefit from > this change. (3) flags-other.m4 seems not to be a good place to setup > -mcpu details. > > thanks, > Boris > > On 13.11.2018 2:41, David Holmes wrote: > > Hi Jakub, > > > > Build file changes have to be reviewed on build-dev - cc'd. > > > > Thanks, > > David > > > > On 13/11/2018 8:57 AM, Jakub Vaněk wrote: > >> Hi, > >> > >> This patch adds a new ARM ABI option for ARM926EJ-S. The reason is not > >> because of ABI breakage, but it is because of GCC -mcpu flags > >> specifically for this CPU. We think that this might increase > >> performance a little bit. However, we do not have numbers for this. > >> Alternatively, we may just stick to the arm-sflt ABI option. > >> > >> This patch was successfully built with a few other independent patches > >> here: https://ci.adoptopenjdk.net/view/ev3dev/ ; > >> https://github.com/ev3dev-lang-java/openjdk-ev3 > >> We haven't run full jtreg tests on the target platform yet, but Juan > >> Antonio Brena Moral invested his time into Adopt's openjdktests in > >> QEMU. Also, the JVM seems to run fine on the ARM board itself. > >> > >> Regards, > >> > >> Jakub Vanek (with credit to Juan Antonio) > >> > >> # HG changeset patch > >> # User Jakub Vaněk <[email protected]> > >> # Date 1542060149 -3600 > >> # Mon Nov 12 23:02:29 2018 +0100 > >> # Node ID 82c5c630ee8f9237b533ba6414143d109dec0180 > >> # Parent a609d549992a4d094a514a6c0f5b79443192d8bf > >> Add optimization flags for ARM926EJ-S > >> > >> diff --git a/make/autoconf/flags-other.m4 b/make/autoconf/flags-other.m4 > >> --- a/make/autoconf/flags-other.m4 > >> +++ b/make/autoconf/flags-other.m4 > >> @@ -119,6 +119,10 @@ > >> # Misuse EXTRA_CFLAGS to mimic old behavior > >> $2JVM_ASFLAGS="$JVM_BASIC_ASFLAGS ${$2EXTRA_CFLAGS}" > >> > >> + if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm926ejs; then > >> + $2JVM_ASFLAGS="$JVM_BASIC_ASFLAGS -mcpu=arm926ej-s" > >> + fi > >> + > >> AC_SUBST($2JVM_ASFLAGS) > >> ]) > >> > >> diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4 > >> --- a/make/autoconf/flags.m4 > >> +++ b/make/autoconf/flags.m4 > >> @@ -34,7 +34,7 @@ > >> AC_DEFUN([FLAGS_SETUP_ABI_PROFILE], > >> [ > >> AC_ARG_WITH(abi-profile, [AS_HELP_STRING([--with-abi-profile], > >> - [specify ABI profile for ARM builds > >> (arm-vfp-sflt,arm-vfp-hflt,arm-sflt, > >> armv5-vfp-sflt,armv6-vfp-hflt,aarch64) @<:@toolchain dependent@:>@ > >> ])]) > >> + [specify ABI profile for ARM builds > >> (arm-vfp-sflt,arm-vfp-hflt,arm-sflt, > >> arm926ejs,armv5-vfp-sflt,armv6-vfp-hflt,aarch64) @<:@toolchain > >> dependent@:>@ ])]) > >> > >> if test "x$with_abi_profile" != x; then > >> if test "x$OPENJDK_TARGET_CPU" != xarm && \ > >> @@ -55,6 +55,9 @@ > >> elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then > >> ARM_FLOAT_TYPE=sflt > >> ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm' > >> + elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm926ejs; then > >> + ARM_FLOAT_TYPE=sflt > >> + ARM_ARCH_TYPE_FLAGS='-mcpu=arm926ej-s -marm' > >> elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then > >> ARM_FLOAT_TYPE=vfp-sflt > >> ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm' > >>
