RFR: 8267125: AES Galois CounterMode (GCM) interleaved implementation using AVX512 + VAES instructions [v10]

Vladimir Kozlov kvn at openjdk.java.net
Wed Aug 18 01:19:36 UTC 2021

On Tue, 17 Aug 2021 23:37:55 GMT, Smita Kamath <svkamath at openjdk.org> wrote:

>> I would like to submit AES-GCM optimization for x86_64 architectures supporting AVX3+VAES (Evex encoded AES). This optimization interleaves AES and GHASH operations.
>> Performance gain of ~1.5x - 2x for message sizes 8k and above.
> Smita Kamath has updated the pull request incrementally with one additional commit since the last revision:
>   Moved declaration in vmStructs.cpp to other AESCrypt declarations

src/hotspot/cpu/x86/stubGenerator_x86_64.cpp line 7712:

> 7710:         StubRoutines::x86::_counter_mask_addr = counter_mask_addr();
> 7711:         StubRoutines::x86::_ghash_poly512_addr = ghash_polynomial512_addr();
> 7712:         StubRoutines::x86::_ghash_long_swap_mask_addr = generate_ghash_long_swap_mask();

`_counter_mask_addr = counter_mask_addr()` and `_ghash_long_swap_mask_addr = generate_ghash_long_swap_mask()` are called by other intrinsics too. Which duplicates code in codeCache.
They should be called only once when they are used. May be `counter_mask_addr()` and `generate_ghash_long_swap_mask()` method should check that addresses already recorded and return it.


PR: https://git.openjdk.java.net/jdk/pull/4019

More information about the security-dev mailing list