RFR: 8317720: RISC-V: Implement Adler32 intrinsic

ArsenyBochkarev duke at openjdk.org
Tue Mar 19 17:07:46 UTC 2024


Hello everyone! Please review this non-vectorized implementation of `_updateBytesAdler32` intrinsic. Reference implementation for AArch64 can be found [here](https://github.com/openjdk/jdk9/blob/master/hotspot/src/cpu/aarch64/vm/stubGenerator_aarch64.cpp#L3281).

### Correctness checks

Test `test/hotspot/jtreg/compiler/intrinsics/zip/TestAdler32.java` is ok. All tier1 also passed.

### Performance results on T-Head board

Enabled intrinsic:

| Benchmark                          |    (count) |  Mode |  Cnt  |   Score  |  Error |  Units |
| ------------------------------------- | ----------- | ------ | --------- | ------ | --------- | ---------- |
| Adler32.TestAdler32.testAdler32Update |      64 | thrpt  | 25 | 5522.693 | 23.387 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |     128 | thrpt |  25 | 3430.761 |  9.210 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |     256 | thrpt |  25 | 1962.888 |  5.323 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |     512 | thrpt  | 25 | 1050.938 |  0.144 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |    1024 | thrpt  | 25 |  549.227 |  0.375 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |    2048 | thrpt  | 25 |  280.829 |  0.170 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |    5012 | thrpt  | 25 |  116.333 |  0.057 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |    8192 | thrpt  | 25  |  71.392 |  0.060 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |   16384 | thrpt |  25  |  35.784 |  0.019 | ops/ms |
| Adler32.TestAdler32.testAdler32Update |   32768 | thrpt |  25  |  17.924 |  0.010 | ops/ms |
| Adler32.TestAdler32.testAdler32Update  |  65536 | thrpt |  25  |   8.940 |  0.003 | ops/ms |

Disabled intrinsic:

| Benchmark                          |    (count) |  Mode |  Cnt  |   Score  |  Error |  Units |
| ------------------------------------- | ----------- | ------ | --------- | ------ | --------- | ---------- |
|Adler32.TestAdler32.testAdler32Update|64|thrpt|25|655.633|5.845|ops/ms|
|Adler32.TestAdler32.testAdler32Update|128|thrpt|25|587.418|10.062|ops/ms|
|Adler32.TestAdler32.testAdler32Update|256|thrpt|25|546.675|11.598|ops/ms|
|Adler32.TestAdler32.testAdler32Update|512|thrpt|25|432.328|11.517|ops/ms|
|Adler32.TestAdler32.testAdler32Update|1024|thrpt|25|311.771|4.238|ops/ms|
|Adler32.TestAdler32.testAdler32Update|2048|thrpt|25|202.648|2.486|ops/ms|
|Adler32.TestAdler32.testAdler32Update|5012|thrpt|25|100.246|1.119|ops/ms|
|Adler32.TestAdler32.testAdler32Update|8192|thrpt|25|65.931|0.546|ops/ms|
|Adler32.TestAdler32.testAdler32Update|16384|thrpt|25|34.570|0.353|ops/ms|
|Adler32.TestAdler32.testAdler32Update|32768|thrpt|25|17.622|0.190|ops/ms|
|Adler32.TestAdler32.testAdler32Update|65536|thrpt|25|8.895|0.087|ops/ms|

-------------

Commit messages:
 - 8317720: RISC-V: Implement Adler32 intrinsic

Changes: https://git.openjdk.org/jdk/pull/18382/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18382&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8317720
  Stats: 274 lines in 2 files changed: 274 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/18382.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/18382/head:pull/18382

PR: https://git.openjdk.org/jdk/pull/18382


More information about the hotspot-compiler-dev mailing list