JDK-8189745 : AARCH64: Use CRC32C intrinsic code in interpreter and C1
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 10
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • CPU: aarch64
  • Submitted: 2017-10-20
  • Updated: 2018-05-25
  • Resolved: 2017-11-01
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 10
10 b33Fixed
Related Reports
Blocks :  
Relates :  
Relates :  
Relates :  
Description
Unlike CRC32, CRC32C is currently used only for C2. It can be used similar to its twin which will be for example ~7x boost in C1 case.
Comments
webrev: http://cr.openjdk.java.net/~dchuyko/8189745/webrev.00/ benchmark: http://cr.openjdk.java.net/~dchuyko/8189745/crc32c/CRC32CBench.java On virtualized Cavium ThunderX for size=512 bytes there is ~7x improvement in C1 and 30-50x improvement in interpreter: C1 Baseline CRC32CBench.calcCRC32C 64 avgt 15 383 �� 2 ns/op CRC32CBench.calcCRC32C 512 avgt 15 2215 �� 4 ns/op CRC32CBench.calcCRC32C 4096 avgt 15 16864 �� 24 ns/op CRC32CBench.dbbCRC32C 64 avgt 15 405 �� 4 ns/op CRC32CBench.dbbCRC32C 512 avgt 15 2243 �� 5 ns/op CRC32CBench.dbbCRC32C 4096 avgt 15 16890 �� 18 ns/op C1 Patched CRC32CBench.calcCRC32C 64 avgt 15 110 �� 11 ns/op CRC32CBench.calcCRC32C 512 avgt 15 319 �� 57 ns/op x7 CRC32CBench.calcCRC32C 4096 avgt 15 1676 �� 425 ns/op CRC32CBench.dbbCRC32C 64 avgt 15 161 �� 2 ns/op CRC32CBench.dbbCRC32C 512 avgt 15 305 �� 3 ns/op x7 CRC32CBench.dbbCRC32C 4096 avgt 15 1467 �� 6 ns/op Interpreter Baseline CRC32CBench.calcCRC32C 64 avgt 15 19067 �� 160 ns/op CRC32CBench.calcCRC32C 512 avgt 15 131454 �� 983 ns/op CRC32CBench.calcCRC32C 4096 avgt 15 1035028 �� 7617 ns/op CRC32CBench.dbbCRC32C 64 avgt 15 29246 �� 156 ns/op CRC32CBench.dbbCRC32C 512 avgt 15 184786 �� 1073 ns/op CRC32CBench.dbbCRC32C 4096 avgt 15 1452944 �� 17180 ns/op Interpreter Patched CRC32CBench.calcCRC32C 64 avgt 15 2186 �� 7 ns/op CRC32CBench.calcCRC32C 512 avgt 15 2351 �� 20 ns/op x56 CRC32CBench.calcCRC32C 4096 avgt 15 3509 �� 29 ns/op CRC32CBench.dbbCRC32C 64 avgt 15 4930 �� 44 ns/op CRC32CBench.dbbCRC32C 512 avgt 15 5112 �� 39 ns/op x36 CRC32CBench.dbbCRC32C 4096 avgt 15 6241 �� 15 ns/op
31-10-2017