[10] RFR: 8189745 - AARCH64: Use CRC32C intrinsic code in interpreter and C1
Dmitry Chuyko
dmitry.chuyko at bell-sw.com
Tue Oct 31 16:01:09 UTC 2017
Hello,
Please review an improvement of CRC32C calculation on AArch64. The
implementation is based on JDK-8155162 [1] and the code for CRC32.
Intrinsics for array / byte buffer and direct byte buffer are enabled in
C1 on AArch64, LIRGenerator::do_update_CRC32C calculates parameters and
calls StubRoutines::updateBytesCRC32C().
Template interpreter now also generates
TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry where it
calculates parameters and jumps to StubRoutines::updateBytesCRC32C().
rfe: https://bugs.openjdk.java.net/browse/JDK-8189745
webrev: http://cr.openjdk.java.net/~dchuyko/8189745/webrev.00/
benchmark:
http://cr.openjdk.java.net/~dchuyko/8189745/crc32c/CRC32CBench.java
Performance results for T88 [2] show ~7x boost in C1 and ~30-50x boost
in interpreter.
For testing I made comparison of CRC32C result sets in C1 and
interpreter for both array and direct byte buffer with zero and non-zero
offset.
-Dmitry
[1] https://bugs.openjdk.java.net/browse/JDK-8155162
[2]
https://bugs.openjdk.java.net/browse/JDK-8189745?focusedCommentId=14127141&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14127141
More information about the hotspot-compiler-dev
mailing list