Implementation notes: amd64, gcc67, crypto_aead/aes256gcmv1

Computer: gcc67
Architecture: amd64
CPU ID: AuthenticAMD-00810f10-178bfbff
SUPERCOP version: 20210125
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
8291889 0 022074 900 1040T:opensslnewclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
83071010 0 022548 916 1040T:opensslnewgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
8315878 0 024789 924 1040T:opensslnewgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
8349855 0 020872 900 1040T:opensslnewgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
8365889 0 022074 900 1040T:opensslnewclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8373889 0 022978 900 1040T:opensslnewclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8376850 0 020364 892 1008T:opensslnewclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8390889 0 022450 900 1008T:opensslnewclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
8400878 0 022804 916 1040T:opensslnewgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
847817336 0 038411 820 1040dolbeau/aesenc-intclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
850817336 0 037507 820 1040dolbeau/aesenc-intclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
850917336 0 037507 820 1040dolbeau/aesenc-intclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
869012560 0 031157 812 1008dolbeau/aesenc-intclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
925814936 0 037958 844 1040dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
934113232 0 034293 836 1040dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
947413382 0 034069 836 1040dolbeau/aesenc-intgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
101996085 0 025329 820 1040dolbeau/aesenc-intgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
26279513171 0 1624491 820 1040refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
26595511763 0 1621133 812 1040refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
29023502878 0 1623803 820 1040refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
29115932878 0 1623803 820 1040refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
33156222878 0 1624707 820 1040refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2021011520210114
143449022171 0 1623949 836 1072refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
156811632172 0 1623597 836 1072refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
161285112937 0 1626702 844 1072refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114
175519321807 0 1621745 820 1072refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021011520210114

Compiler output

Implementation: T:cryptopp
Security model: timingleaks
Compiler: clang++ -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
stream.cpp: stream.cpp:2:10: fatal error: 'cryptopp/aes.h' file not found
stream.cpp: #include <cryptopp/aes.h>
stream.cpp: ^
stream.cpp: 1 error generated.

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

Compiler output

Implementation: T:cryptopp
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
stream.cpp: stream.cpp:2:26: fatal error: cryptopp/aes.h: No such file or directory
stream.cpp: #include <cryptopp/aes.h>
stream.cpp: ^
stream.cpp: compilation terminated.

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

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:49:18: warning: implicit declaration of function '_mm512_broadcast_i32x4' is invalid in C99 [-Wimplicit-function-declaration]
vaesenc-int.c: rkeys[idx++] = _mm512_broadcast_i32x4(key0);
vaesenc-int.c: ^
vaesenc-int.c: vaesenc-int.c:49:16: error: assigning to '__m512i' (vector of 8 'long long' values) from incompatible type 'int'
vaesenc-int.c: rkeys[idx++] = _mm512_broadcast_i32x4(key0);
vaesenc-int.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:74:3: error: assigning to '__m512i' (vector of 8 'long long' values) from incompatible type 'int'
vaesenc-int.c: BLOCK1(0x01);
vaesenc-int.c: ^~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:56:16: note: expanded from macro 'BLOCK1'
vaesenc-int.c: rkeys[idx++] = _mm512_broadcast_i32x4(temp2); \
vaesenc-int.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:75:3: error: assigning to '__m512i' (vector of 8 'long long' values) from incompatible type 'int'
vaesenc-int.c: BLOCK2(0x01);
vaesenc-int.c: ^~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:66:16: note: expanded from macro 'BLOCK2'
vaesenc-int.c: rkeys[idx++] = _mm512_broadcast_i32x4(temp0); \
vaesenc-int.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:77:3: error: assigning to '__m512i' (vector of 8 'long long' values) from incompatible type 'int'
vaesenc-int.c: BLOCK1(0x02);
vaesenc-int.c: ^~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:56:16: note: expanded from macro 'BLOCK1'
vaesenc-int.c: rkeys[idx++] = _mm512_broadcast_i32x4(temp2); \
vaesenc-int.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vaesenc-int.c: vaesenc-int.c:78:3: error: assigning to '__m512i' (vector of 8 'long long' values) from incompatible type 'int'
vaesenc-int.c: ...

Number of similar (compiler,implementation) pairs: 5, 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
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/6/include/immintrin.h:41:0,
vaesenc-int.c: from vaesenc-int.c:11:
vaesenc-int.c: /usr/lib/gcc/x86_64-linux-gnu/6/include/avxintrin.h:882: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' [-Wimplicit-function-declaration]
vaesenc-int.c: temp = _mm256_aesenc_epi128(temp, rkeys[i]);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~~~
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' [-Wimplicit-function-declaration]
vaesenc-int.c: temp = _mm256_aesenclast_epi128(temp, rkeys[14]);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~~~~~~~
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' [-Wimplicit-function-declaration]
vaesenc-int.c: temp = _mm512_aesenc_epi128(temp, rkeys[i]);
vaesenc-int.c: ^~~~~~~~~~~~~~~~~~~~
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