[aarch64-port-dev ] RFR: JDK8 merge up to jdk8u40-b09
Edward Nevill
ed at camswl.com
Mon Oct 13 11:16:09 UTC 2014
Hi,
The following webrevs merge the aarch64 jdk8 forest up to revision jdk8u40-b09 from jdk8u40-b04 (I thought I would try out the webrev tool for this merge as we will need to use it for the JDK9 merge).
http://openjdk.linaro.org/webrev/141013/corba/
http://openjdk.linaro.org/webrev/141013/hotspot/
http://openjdk.linaro.org/webrev/141013/jaxp/
http://openjdk.linaro.org/webrev/141013/jaxws/
http://openjdk.linaro.org/webrev/141013/jdk/
http://openjdk.linaro.org/webrev/141013/jdk8/
http://openjdk.linaro.org/webrev/141013/langtools/
http://openjdk.linaro.org/webrev/141013/nashorn/
The following webrev contains the aarch64 specific changes (I have also pasted it inline below as the changes are quite small).
http://openjdk.linaro.org/webrev/141013/aarch64_hotspot/
The aarch64 changes are
1) Add support for the 'CmpL3' node in C2, which was not supported and which C2 has started generating.
2) Generate and unimplemented error on -XX:+UseSHA... These have been added for sparc, but not for x86. At some stage we should add support on aarch64 but in the meantime JTreg expects an error if they are not supported.
I have done a smoke test on the following builds
Builtin sim: server: release
Builtin sim: server: slowdebug
Builtin sim: client: slodebug
Cross compile: client: release
Cross compile: server: release
Cross compile: zero: release
Native compile: client: release
Native compile: server: release
Native compile: zero: release
Native compile: server: slowdebug
I have also run JTreg hotspot and langtools on server and compared against x86 (x86 numbers in brackets)
server/hotspot aarch64(x86)::: Pass 607(611), Failed 10(6), Error 10(10)
server/langtools aarch64(x86): Pass 3017(3021), Failed 0(0), Error 29(25)
client/hotspot aarch64(x86)::: Pass 606(606), Failed 11(11), Error 10(10)
client/langtools aarch64(x86): Pass 3018(3019), Failed 0(0), Error 28(27)
The additional 4 server/hotspot failures on aarch64 are
FAILED: compiler/whitebox/ClearMethodStateTest.java
FAILED: compiler/whitebox/DeoptimizeAllTest.java
FAILED: compiler/whitebox/DeoptimizeMethodTest.java
FAILED: compiler/whitebox/GetNMethodTest.java
These all fail with the exception
java.lang.RuntimeException: private SimpleTestCase$Helper(java.lang.Object) must be osr_compiled
These fail because the test expects the method to be osr compiled but it is not. I suspect this is due to deoptimisation on aarch64. As all these additional failures are only in the whitebox api I would like to continue with the merge and look at them later.
OK to push?
Ed.
--- CUT HERE ---
# HG changeset patch
# User Edward Nevill edward.nevill at linaro.org
# Date 1413193991 -3600
# Mon Oct 13 10:53:11 2014 +0100
# Node ID 89ebbc29144cb6cf9d3d3c55bb65a2162a9dd00a
# Parent 7c98ed8b60f54b7c32e93ac0fd41f7b9d5f809d1
aarch64 specific changes for merge up to jdk8u40-b09
diff -r 7c98ed8b60f5 -r 89ebbc29144c src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad Fri Oct 10 15:51:33 2014 +0100
+++ b/src/cpu/aarch64/vm/aarch64.ad Mon Oct 13 10:53:11 2014 +0100
@@ -11051,6 +11051,29 @@
%}
+instruct compL3_reg_reg(iRegINoSp dst, iRegL src1, iRegL src2, rFlagsReg cr)
+%{
+ match(Set dst (CmpL3 src1 src2));
+ effect(KILL cr);
+ format %{ "cmp $src1, $src2 # CmpL3\n\t"
+ "csinvw $dst, zr, zr, eq\n\t"
+ "csnegw $dst, $dst, $dst, lt"
+ %}
+
+ ins_cost(3 * INSN_COST);
+ ins_encode %{
+ Register d = as_Register($dst$$reg);
+ Register s1 = as_Register($src1$$reg);
+ Register s2 = as_Register($src2$$reg);
+ __ cmp(s1, s2);
+ // installs 0 if EQ else -1
+ __ csinvw(d, zr, zr, Assembler::EQ);
+ // keeps -1 if less else installs 1
+ __ csnegw(d, d, d, Assembler::LT);
+ %}
+ ins_pipe(pipe_class_default);
+%}
+
instruct cmpLTMask_reg_reg(iRegINoSp dst, iRegI p, iRegI q, rFlagsReg cr)
%{
match(Set dst (CmpLTMask p q));
diff -r 7c98ed8b60f5 -r 89ebbc29144c src/cpu/aarch64/vm/vm_version_aarch64.cpp
--- a/src/cpu/aarch64/vm/vm_version_aarch64.cpp Fri Oct 10 15:51:33 2014 +0100
+++ b/src/cpu/aarch64/vm/vm_version_aarch64.cpp Mon Oct 13 10:53:11 2014 +0100
@@ -136,6 +136,17 @@
if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
UseCRC32Intrinsics = true;
}
+
+ if (UseSHA) {
+ warning("SHA instructions are not implemented");
+ FLAG_SET_DEFAULT(UseSHA, false);
+ }
+ if (UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics) {
+ warning("SHA intrinsics are not implemented");
+ FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
+ FLAG_SET_DEFAULT(UseSHA256Intrinsics, false);
+ FLAG_SET_DEFAULT(UseSHA512Intrinsics, false);
+ }
}
void VM_Version::initialize() {
--- CUT HERE ---
More information about the aarch64-port-dev
mailing list