Implementation notes: amd64, gemini, crypto_aead/aes256gcmv1

Computer: gemini
Microarchitecture: amd64; Goldmont Plus (706a8)
Architecture: amd64
CPU ID: GenuineIntel-000706a8-bfebfbff
SUPERCOP version: 20240425
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1205218582 0 039952 812 1016dolbeau/aesenc-intclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
1217518851 0 042512 812 1016dolbeau/aesenc-intclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
1222016403 0 035878 804 1016dolbeau/aesenc-intclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
1292819032 0 041000 780 1080dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
14062894 0 021301 884 1016T:opensslnewclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
14068926 0 022616 876 1048T:opensslnewgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
14080894 0 023279 892 1016T:opensslnewclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
14181894 0 025583 892 1016T:opensslnewclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
14183889 0 021741 884 1016T:opensslnewclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
14184926 0 023800 876 1048T:opensslnewgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
14242878 0 020547 852 1048T:opensslnewgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
143156181 0 025027 756 1048dolbeau/aesenc-intgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
1455011875 0 032696 780 1080dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
1482112034 0 032295 772 1080dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
157298723 0 028694 804 1016dolbeau/aesenc-intclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
16465893 0 024199 892 1016T:opensslnewclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
16666946 0 022055 868 1048T:opensslnewgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
3375317742 3040 01418662 148468 10936T:cryptoppclang++_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
3409737791 3040 01728678 148444 11032T:cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
3444814673 2456 01412950 148460 10936T:cryptoppclang++_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
3483934666 3040 01724636 148452 11032T:cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
3526433547 3040 01722062 148452 11032T:cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
3933423337 7904 01424514 152108 10936T:cryptoppclang++_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
4251417242 3040 01415882 148468 10936T:cryptoppclang++_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
4422114290 4072 01695886 149268 11000T:cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
23593253594 0 1626688 812 1048refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
24091432829 0 1627304 812 1048refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
24141362829 0 1625000 812 1048refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
32861633927 0 1626664 780 1112refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
45821661633 0 1621926 804 1048refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
209553792269 0 1623824 780 1112refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
271636911837 0 1622590 804 1048refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2024042920240425
279794722160 0 1623167 772 1112refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425
295196141766 0 1621355 756 1080refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2024042920240425

Compiler output

Implementation: dolbeau/aesenc-int
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
aesenc-int.c: aesenc-int.c:665:16: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_aesenc_int_constbranchindex_encrypt' that is compiled without support for 'ssse3'
aesenc-int.c: __m128i Hv = _mm_shuffle_epi8(_mm_loadu_si128((const __m128i*)H), rev);
aesenc-int.c: ^
aesenc-int.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/aesenc-int

Compiler output

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
vaesenc-int.c: vaesenc-int.c:990:18: error: '__builtin_ia32_inserti32x4_256' needs target feature avx512vl
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx512vlintrin.h:7887:12: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:37: error: '__builtin_ia32_inserti32x4_256' needs target feature avx512vl
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx512vlintrin.h:7887:12: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:56: error: always_inline function '_mm256_undefined_si256' requires target feature 'avx', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx'
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:56: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
vaesenc-int.c: vaesenc-int.c:991:31: error: always_inline function '_mm256_broadcast_i32x4' requires target feature 'avx512vl', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512vl'
vaesenc-int.c: __m256i H34v = mulvv2(H12v, _mm256_broadcast_i32x4(H2v));
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:991:31: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
vaesenc-int.c: vaesenc-int.c:991:18: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
vaesenc-int.c: __m256i H34v = mulvv2(H12v, _mm256_broadcast_i32x4(H2v));
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:992:10: error: '__builtin_ia32_inserti64x4' needs target feature avx512f
vaesenc-int.c: vhv0 = _mm512_inserti64x4(_mm512_inserti64x4(_mm512_undefined_epi32(), H12v, 1), H34v, 0);
vaesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int

Compiler output

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
vaesenc-int.c: vaesenc-int.c:985:16: error: always_inline function '_mm_shuffle_epi8' requires target feature 'ssse3', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'ssse3'
vaesenc-int.c: __m128i Hv = _mm_shuffle_epi8(_mm_load_si128((const __m128i*)H), rev);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:18: error: '__builtin_ia32_inserti32x4_256' needs target feature avx512vl
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx512vlintrin.h:7887:12: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:37: error: '__builtin_ia32_inserti32x4_256' needs target feature avx512vl
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-11/lib/clang/11.0.1/include/avx512vlintrin.h:7887:12: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:56: error: always_inline function '_mm256_undefined_si256' requires target feature 'avx', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx'
vaesenc-int.c: __m256i H12v = _mm256_inserti32x4(_mm256_inserti32x4(_mm256_undefined_si256(), Hv, 1), H2v, 0);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:56: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
vaesenc-int.c: vaesenc-int.c:991:31: error: always_inline function '_mm256_broadcast_i32x4' requires target feature 'avx512vl', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512vl'
vaesenc-int.c: __m256i H34v = mulvv2(H12v, _mm256_broadcast_i32x4(H2v));
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:991:31: error: AVX vector return of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI
vaesenc-int.c: vaesenc-int.c:991:18: warning: AVX vector argument of type '__m256i' (vector of 4 'long long' values) without 'avx' enabled changes the ABI [-Wpsabi]
vaesenc-int.c: __m256i H34v = mulvv2(H12v, _mm256_broadcast_i32x4(H2v));
vaesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int

Compiler output

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
vaesenc-int.c: vaesenc-int.c: In function 'mulvv2':
vaesenc-int.c: vaesenc-int.c:392:9: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
vaesenc-int.c: 392 | __m256i B) {
vaesenc-int.c: | ^~~~~~~
vaesenc-int.c: vaesenc-int.c: In function 'mulvv4':
vaesenc-int.c: vaesenc-int.c:435:9: warning: AVX512F vector return without AVX512F enabled changes the ABI [-Wpsabi]
vaesenc-int.c: 435 | __m512i B) {
vaesenc-int.c: | ^~~~~~~
vaesenc-int.c: vaesenc-int.c: In function 'mulvv2':
vaesenc-int.c: vaesenc-int.c:391:23: note: the ABI for passing parameters with 32-byte alignment has changed in GCC 4.6
vaesenc-int.c: 391 | static inline __m256i mulvv2(__m256i A,
vaesenc-int.c: | ^~~~~~
vaesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:55,
vaesenc-int.c: from vaesenc-int.c:11:
vaesenc-int.c: vaesenc-int.c: In function 'aesni_key256_expand':
vaesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avx512fintrin.h:4186:1: error: inlining failed in call to 'always_inline' '_mm512_broadcast_i32x4': target specific option mismatch
vaesenc-int.c: 4186 | _mm512_broadcast_i32x4 (__m128i __A)
vaesenc-int.c: | ^~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:95:18: note: called from here
vaesenc-int.c: 95 | rkeys[idx++] = _mm512_broadcast_i32x4(temp0);
vaesenc-int.c: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/10/include/immintrin.h:55,
vaesenc-int.c: from vaesenc-int.c:11:
vaesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/10/include/avx512fintrin.h:4186:1: error: inlining failed in call to 'always_inline' '_mm512_broadcast_i32x4': target specific option mismatch
vaesenc-int.c: 4186 | _mm512_broadcast_i32x4 (__m128i __A)
vaesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
decrypt.c: decrypt.c:13:18: error: variable has incomplete type 'EVP_CIPHER_CTX' (aka 'struct evp_cipher_ctx_st')
decrypt.c: EVP_CIPHER_CTX x;
decrypt.c: ^
decrypt.c: /usr/include/openssl/ossl_typ.h:90:16: note: forward declaration of 'struct evp_cipher_ctx_st'
decrypt.c: typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
decrypt.c: ^
decrypt.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
decrypt.c: decrypt.c: In function 'crypto_aead_aes256gcmv1_openssl_timingleaks_decrypt':
decrypt.c: decrypt.c:13:18: error: storage size of 'x' isn't known
decrypt.c: 13 | EVP_CIPHER_CTX x;
decrypt.c: | ^

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl