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