aes-gcm-avx512.S is generated from OpenSSL and implements AES-GCM.
ossl_x86.c detects whether the CPU implements the required AVX512
instructions; if not, the ossl(4) module does not provide an AES-GCM
implementation. The VAES implementation appears to increase throughput
for all buffer sizes in both directions, up to 2x for sufficiently large
buffers.
The "process" implementation is in two parts: a generic OCF layer in
ossl_aes.c that calls a set of MD functions to do the heavy lifting.
The intent there is to make it possible to add other implementations for
other platforms, e.g., to reduce the diff required for D37421.
I did not include a fallback to legacy AES-NI here. I did implement it
just for comparison purposes, but since we already have aesni(4) I don't
see a compelling reason to include it unless there's a notion of
switching to ossl(4) in the long term.
Sponsored by: Stormshield
Sponsored by: Klara, Inc.