[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