[11u] RFR (S) 8253048: AArch64: When CallLeaf, no need to preserve callee-saved registers in caller

Hohensee, Paul hohensee at amazon.com
Thu May 27 15:39:31 UTC 2021


Lgtm.

Thanks,
Paul

-----Original Message-----
From: jdk-updates-dev <jdk-updates-dev-retn at openjdk.java.net> on behalf of Dmitry Chuyko <dmitry.chuyko at bell-sw.com>
Date: Tuesday, May 18, 2021 at 7:49 AM
To: "jdk-updates-dev at openjdk.java.net" <jdk-updates-dev at openjdk.java.net>
Subject: [11u] RFR (S) 8253048: AArch64: When CallLeaf, no need to preserve callee-saved registers in caller

Hello,

Original RFE: https://bugs.openjdk.java.net/browse/JDK-8253048

Preconditions are met in 11u: stub genertor logic is to "save the bottom
64 bits of each value stored in v8-v15; it is the responsibility of the
caller to preserve larger values.", add_call_kills() logic is present.

Original patch does not apply cleanly (JDK-8231441 - initial SVE - is
not in 11u, some other changes as well). But it was rather simply
reproduced:

src/hotspot/cpu/aarch64/aarch64.ad
'reg_def V<8-15>, V<8-15>_H' are made 'SOC, SOE...' instead of 'SOC, SOC...'

src/hotspot/cpu/aarch64/macroAssembler_aarch64_trig.cpp
Replaced v10 usages by v24.

No other references of v8-v15 in macroAssembler-aarch64*. In
assembler_aarch64.cpp there are still usages generated by
aarch64-asmtest.py.

11u webrev: http://cr.openjdk.java.net/~dchuyko/8253048/webrev.11u.00/

Testing: tier1, tier2. Opto assembly check for the test [1] from
original review shows 'stack bang size=48' -> 'stack bang size=32'
around nanoTime call.

[1] http://cr.openjdk.java.net/~jzhu/8253048/Test.java

--
Thanks,
-Dmitry




More information about the jdk-updates-dev mailing list