Implementation notes: amd64, samba, crypto_aead/aes256gcmv1

Computer: samba
Architecture: amd64
CPU ID: GenuineIntel-000506e3-bfebfbff
SUPERCOP version: 20211108
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
6483845 0 024859 884 1040T:opensslnewclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
6485845 0 024859 884 1040T:opensslnewclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
6485845 0 021033 876 1008T:opensslnewclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
64931023 0 023216 892 1040T:opensslnewgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
64941072 0 022880 892 1040T:opensslnewgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
64951023 0 026449 900 1040T:opensslnewgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
6508965 0 021300 876 1040T:opensslnewgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
6515845 0 024027 884 1008T:opensslnewclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
6525845 0 024875 884 1040T:opensslnewclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
737617274 0 041817 804 1072dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
739612149 0 031442 796 1008dolbeau/aesenc-intclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
741912890 0 034224 796 1072dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
753612770 0 033712 796 1072dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
766716857 0 039972 804 1040dolbeau/aesenc-intclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
766816825 0 039940 804 1040dolbeau/aesenc-intclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
767416825 0 039940 804 1040dolbeau/aesenc-intclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
84206146 0 025652 780 1040dolbeau/aesenc-intgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
1788718915 3040 01346065 149036 11024T:cryptoppclang++_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
1809815483 2456 01340313 149020 10992T:cryptoppclang++_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
1820933796 3040 01656417 148964 11088T:cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
1828114582 3264 01626376 148996 11056T:cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
1850836467 3040 01657296 148956 11088T:cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
1858918329 3040 01345413 149036 11024T:cryptoppclang++_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
1859337086 3040 01661088 148956 11088T:cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032420210323
1864018329 3040 01345413 149036 11024T:cryptoppclang++_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021032420210323
18396264015 0 1629321 804 1104refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
18523573631 0 1627564 804 1040refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
18538213631 0 1627548 804 1040refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
18541293631 0 1627548 804 1040refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
19521133156 0 1626244 804 1040refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
19846141653 0 1621754 796 1040refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011420210114
174768562358 0 1624048 796 1104refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
177968161942 0 1622204 780 1072refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114
213734992475 0 1624552 796 1104refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011420210114

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:261:34: warning: incompatible pointer types passing 'const __m128i *' to parameter of type 'const __m256i *' [-Wincompatible-pointer-types]
vaesenc-int.c: __m256i nv = _mm256_load_si256((const __m128i *)n);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~
vaesenc-int.c: /usr/lib/llvm-6.0/lib/clang/6.0.0/include/avxintrin.h:3222:34: note: passing argument to parameter '__p' here
vaesenc-int.c: _mm256_load_si256(__m256i const *__p)
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:989:31: error: always_inline function '_mm256_broadcast_i32x4' requires target feature 'avx512f', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512f'
vaesenc-int.c: __m256i H34v = mulvv2(H12v, _mm256_broadcast_i32x4(H2v));
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:48: error: always_inline function '_mm512_undefined_epi32' requires target feature 'avx512f', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512f'
vaesenc-int.c: vhv0 = _mm512_inserti64x4(_mm512_inserti64x4(_mm512_undefined_epi32(), H12v, 1), H34v, 0);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:29: error: always_inline function '_mm512_castsi256_si512' requires target feature 'avx512f', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512f'
vaesenc-int.c: vhv0 = _mm512_inserti64x4(_mm512_inserti64x4(_mm512_undefined_epi32(), H12v, 1), H34v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-6.0/lib/clang/6.0.0/include/avx512fintrin.h:7796:42: note: expanded from macro '_mm512_inserti64x4'
vaesenc-int.c: (__v8di)_mm512_castsi256_si512((__m256i)(B)), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:990:10: error: always_inline function '_mm512_castsi256_si512' requires target feature 'avx512f', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512f'
vaesenc-int.c: vhv0 = _mm512_inserti64x4(_mm512_inserti64x4(_mm512_undefined_epi32(), H12v, 1), H34v, 0);
vaesenc-int.c: ^
vaesenc-int.c: /usr/lib/llvm-6.0/lib/clang/6.0.0/include/avx512fintrin.h:7796:42: note: expanded from macro '_mm512_inserti64x4'
vaesenc-int.c: (__v8di)_mm512_castsi256_si512((__m256i)(B)), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:993:23: error: always_inline function '_mm512_broadcast_i32x4' requires target feature 'avx512f', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx512f'
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:261:34: warning: incompatible pointer types passing 'const __m128i *' to parameter of type 'const __m256i *' [-Wincompatible-pointer-types]
vaesenc-int.c: __m256i nv = _mm256_load_si256((const __m128i *)n);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~
vaesenc-int.c: /usr/lib/llvm-6.0/lib/clang/6.0.0/include/avxintrin.h:3222:34: note: passing argument to parameter '__p' here
vaesenc-int.c: _mm256_load_si256(__m256i const *__p)
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:983: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:988:56: error: always_inline function '_mm256_undefined_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'sse4.2'
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:988:37: error: always_inline function '_mm256_castsi128_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'sse4.2'
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-6.0/lib/clang/6.0.0/include/avx512vlintrin.h:7905:42: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:988:18: error: always_inline function '_mm256_castsi128_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'sse4.2'
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-6.0/lib/clang/6.0.0/include/avx512vlintrin.h:7905:42: note: expanded from macro '_mm256_inserti32x4'
vaesenc-int.c: (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:989:31: error: always_inline function '_mm256_broadcast_i32x4' requires target feature 'avx2', but would be inlined into function 'crypto_aead_aes256gcmv1_dolbeau_vaesenc_int_constbranchindex_encrypt' that is compiled without support for 'avx2'
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 'aesni_encryptv2':
vaesenc-int.c: vaesenc-int.c:261:34: warning: passing argument 1 of '_mm256_load_si256' from incompatible pointer type [-Wincompatible-pointer-types]
vaesenc-int.c: __m256i nv = _mm256_load_si256((const __m128i *)n);
vaesenc-int.c: ^
vaesenc-int.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/immintrin.h:41:0,
vaesenc-int.c: from vaesenc-int.c:11:
vaesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/7/include/avxintrin.h:908:1: note: expected 'const __vector(4) long long int *' but argument is of type 'const __vector(2) long long int *'
vaesenc-int.c: _mm256_load_si256 (__m256i const *__P)
vaesenc-int.c: ^~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:266:12: warning: implicit declaration of function '_mm256_aesenc_epi128'; did you mean '_mm256_bsrli_epi128'? [-Wimplicit-function-declaration]
vaesenc-int.c: temp = _mm256_aesenc_epi128(temp, rkeys[i]);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: _mm256_bsrli_epi128
vaesenc-int.c: vaesenc-int.c:266:10: error: incompatible types when assigning to type '__m256i {aka __vector(4) long long int}' from type 'int'
vaesenc-int.c: temp = _mm256_aesenc_epi128(temp, rkeys[i]);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:268:10: warning: implicit declaration of function '_mm256_aesenclast_epi128'; did you mean '_mm_aesenclast_si128'? [-Wimplicit-function-declaration]
vaesenc-int.c: temp = _mm256_aesenclast_epi128(temp, rkeys[14]);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: _mm_aesenclast_si128
vaesenc-int.c: vaesenc-int.c:268:8: error: incompatible types when assigning to type '__m256i {aka __vector(4) long long int}' from type 'int'
vaesenc-int.c: temp = _mm256_aesenclast_epi128(temp, rkeys[14]);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c: In function 'aesni_encryptv4':
vaesenc-int.c: vaesenc-int.c:278:12: warning: implicit declaration of function '_mm512_aesenc_epi128'; did you mean '_mm512_bsrli_epi128'? [-Wimplicit-function-declaration]
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: 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