RFR: 8350866: [x86] Add C1 intrinsics for CRC32-C
David Linus Briemann
duke at openjdk.org
Mon Mar 10 12:51:53 UTC 2025
On Thu, 27 Feb 2025 14:30:42 GMT, David Linus Briemann <duke at openjdk.org> wrote:
> 8350866: [x86] Add C1 intrinsics for CRC32-C
Local benchmarks show good improvements for the crc32c intrinsification:
without intrinsic (master):
$JDK/java -DmsgSize=5120 -XX:TieredStopAtLevel=1 -Xcomp TestCRC32C 300000
offset = 0
msgSize = 5120 bytes
iters = 300000
-------------------------------------------------------
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
CRC32C.update(byte[]) runtime = 1.186507782 seconds
CRC32C.update(byte[]) throughput = 1294.5553525244388 MB/s
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
-------------------------------------------------------
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
CRC32C.update(ByteBuffer) runtime = 1.355515648 seconds
CRC32C.update(ByteBuffer) throughput = 1133.1481139788364 MB/s
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
-------------------------------------------------------
with intrinsic:
$JDK/java -DmsgSize=5120 -XX:TieredStopAtLevel=1 -Xcomp TestCRC32C 300000
offset = 0
msgSize = 5120 bytes
iters = 300000
-------------------------------------------------------
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
CRC32C.update(byte[]) runtime = 0.065003188 seconds
CRC32C.update(byte[]) throughput = 23629.610289267657 MB/s
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
-------------------------------------------------------
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
CRC32C.update(ByteBuffer) runtime = 0.072310133 seconds
CRC32C.update(ByteBuffer) throughput = 21241.836189127185 MB/s
CRCs: crc = 0cbca9c8, crcReference = 0cbca9c8
-------------------------------------------------------
-------------
PR Comment: https://git.openjdk.org/jdk/pull/23826#issuecomment-2710476783
More information about the hotspot-compiler-dev
mailing list