[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-hotspot-compiler-dev
Subject: Re: RFR: 8317721: RISC-V: Implement CRC32 intrinsic [v5]
From: urniming <duke () openjdk ! org>
Date: 2024-02-28 7:18:46
Message-ID: 1ciFje_z8G3aP849ZeIfhtu890U1omYhobbRaxuQ3HI=.a000a953-c7f0-4604-8ffc-537af4c58328 () github ! com
[Download RAW message or body]
On Mon, 19 Feb 2024 17:39:18 GMT, ArsenyBochkarev <duke@openjdk.org> wrote:
> > Hi everyone! Please review this port of \
> > [AArch64](https://github.com/openjdk/jdk/blob/master/src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp#L4224) \
> > `_updateBytesCRC32`, `_updateByteBufferCRC32` and `_updateCRC32` intrinsics. This \
> > patch introduces only the plain (non-vectorized, no Zbc) version.
> > ### Correctness checks
> >
> > Tier 1/2 tests are ok.
> >
> > ### Performance results on T-Head board
> >
> > #### Results for enabled intrinsic:
> >
> > Used test is `test/micro/org/openjdk/bench/java/util/TestCRC32.java`
> >
> > > Benchmark | (count) | Mode | Cnt \
> > > | Score | Error | Units |
> > > --- | ---- | ----- | --- | ---- | --- | ---- |
> > > CRC32.TestCRC32.testCRC32Update | 64 | thrpt | 24 | 3730.929 | 37.773 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 128 | thrpt | 24 | 2126.673 | 2.032 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 256 | thrpt | 24 | 1134.330 | 6.714 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 512 | thrpt | 24 | 584.017 | 2.267 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 2048 | thrpt | 24 | 151.173 | 0.346 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 16384 | thrpt | 24 | 19.113 | 0.008 | \
> > > ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 65536 | thrpt | 24 | 4.647 | 0.022 | \
> > > ops/ms |
> >
> > #### Results for disabled intrinsic:
> >
> > > Benchmark | (count) | Mode | Cnt | \
> > > Score | Error | Units |
> > > --------------------------------------------------- | ---------- | --------- | \
> > > ---- | ----------- | --------- | ---------- |
> > > CRC32.TestCRC32.testCRC32Update | 64 | thrpt | 15 | 798.365 | \
> > > 35.486 | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 128 | thrpt | 15 | 677.756 | 46.619 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 256 | thrpt | 15 | 552.781 | 27.143 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 512 | thrpt | 15 | 429.304 | 12.518 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 2048 | thrpt | 15 | 166.738 | 0.935 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 16384 | thrpt | 15 | 25.060 | 0.034 \
> > > | ops/ms |
> > > CRC32.TestCRC32.testCRC32Update | 65536 | thrpt | 15 | 6.196 | 0.030 \
> > > | ops/ms |
>
> ArsenyBochkarev has updated the pull request incrementally with three additional \
> commits since the last revision:
> - Re-selected register for tmp's in kernel_crc32
> - Use shNadd in update_byte_crc32
> - Optimize by1_loop
src/hotspot/cpu/riscv/macroAssembler_riscv.hpp line 1247:
> 1245: bool upper);
> 1246: void update_byte_crc32(Register crc, Register val, Register table);
> 1247:
Hi, one thing I'm confused about here, why do these three functions need to be in the \
`COMPILER2` macro ?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17046#discussion_r1505452747
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic