RFR: 8277358: Accelerate CRC32-C [v2]
Scott Gibbons
duke at openjdk.java.net
Wed Dec 1 02:50:39 UTC 2021
On Wed, 1 Dec 2021 02:03:29 GMT, Sandhya Viswanathan <sviswanathan at openjdk.org> wrote:
>> Scott Gibbons has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Adding CRC32-C microbenchmark.
>
> src/hotspot/cpu/x86/macroAssembler_x86.cpp line 7218:
>
>> 7216: // context for the registers used, where all instructions below are using 128-bit mode
>> 7217: // On EVEX without VL and BW, these instructions will all be AVX.
>> 7218: notl(crc);
>
> We could do this not1(crc) in generate_updateBytesCRC32() thereby remove the need to do the double notl for crc32c.
Moved the `notl(crc)` calls to `generate_updateBytesCRC32()` as requested.
> src/hotspot/cpu/x86/stubGenerator_x86_64.cpp line 6588:
>
>> 6586: __ push(y);
>> 6587: __ push(z);
>> 6588: #endif
>
> a, j, y and z are only required on the crc32c_ipl_alg2_alt2() path, so should be initialized and saved/restored only there.
> This will also help you to pick a save on call register like c_rarg3 for table without having to push/pop.
Done. Changed to use `j` instead of save/restore of `r14`.
-------------
PR: https://git.openjdk.java.net/jdk/pull/6595
More information about the hotspot-compiler-dev
mailing list