Implementation notes: amd64, icelake, crypto_aead/aes256gcmv1

Computer: icelake
Architecture: amd64
CPU ID: GenuineIntel-000706e5-bfebfbff
SUPERCOP version: 20200826
Operation: crypto_aead
Primitive: aes256gcmv1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
681918943 0 045056 4096 0dolbeau/aesenc-intopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
7105986 0 020480 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
7121861 0 024576 4096 0T:opensslnewclang_-march=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
71741062 0 024576 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
718215964 0 036864 4096 0dolbeau/aesenc-intclang_-march=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
7201861 0 020480 4096 0T:opensslnewclang_-march=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
721716157 0 036864 4096 0dolbeau/aesenc-intclang_-march=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
721713503 0 032768 4096 0dolbeau/aesenc-intclang_-march=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
7273861 0 024576 4096 0T:opensslnewclang_-march=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
72861062 0 024576 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
73439713 0 032768 4096 0dolbeau/aesenc-intopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
74596083 0 028672 4096 0dolbeau/aesenc-intopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
20471454545 16 028672 4096 0refopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
22007271826 16 020480 4096 0refclang_-march=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
119125783514 16 028672 4096 0refclang_-march=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
119253493514 16 028672 4096 0refclang_-march=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
174531092336 16 024576 4096 0refopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
193318351933 16 024576 4096 0refopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826

Test failure

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
clang -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
clang -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE dolbeau/vaesenc-int
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int

Compiler output

Implementation: T:cryptopp
Security model: timingleaks
Compiler: clang++ -march=icelake-client -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: 3, namely:
CompilerImplementations
clang++ -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:cryptopp
clang++ -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:cryptopp
clang++ -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:cryptopp

Compiler output

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

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:cryptopp
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:cryptopp
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:cryptopp

Compiler output

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: clang -march=icelake-client -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: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.3/include/avxintrin.h:3143:34: note: passing argument to parameter '__p' here
vaesenc-int.c: _mm256_load_si256(__m256i const *__p)
vaesenc-int.c: ^
vaesenc-int.c: 1 warning generated.

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

Compiler output

Implementation: dolbeau/vaesenc-int
Security model: constbranchindex
Compiler: opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -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: 261 | __m256i nv = _mm256_load_si256((const __m128i *)n);
vaesenc-int.c: | ^~~~~~~~~~~~~~~~~~
vaesenc-int.c: | |
vaesenc-int.c: | const __m128i *
vaesenc-int.c: In file included from /opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0/include/immintrin.h:51,
vaesenc-int.c: from vaesenc-int.c:11:
vaesenc-int.c: /opt/local/lib/gcc10/gcc/x86_64-apple-darwin19/10.2.0/include/avxintrin.h:908:35: note: expected 'const __m256i *' but argument is of type 'const __m128i *'
vaesenc-int.c: 908 | _mm256_load_si256 (__m256i const *__P)
vaesenc-int.c: | ~~~~~~~~~~~~~~~^~~

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE dolbeau/vaesenc-int

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: clang -march=icelake-client -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/local/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: 3, namely:
CompilerImplementations
clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl
clang -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:openssl

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -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: 3, namely:
CompilerImplementations
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl
opt-local-bin-gcc -march=icelake-client -mtune=icelake-client -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:openssl