Implementation notes: amd64, icelake, crypto_dh/claus

Computer: icelake
Architecture: amd64
CPU ID: GenuineIntel-000706e5-bfebfbff
SUPERCOP version: 20200826
Operation: crypto_dh
Primitive: claus
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
52156441822 125 0229376 4096 0T:gmpopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
52173632066 0 0233472 4096 0T:gmpclang++_-march=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
52345272237 133 0233472 4096 0T:gmpopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
52981762237 133 0233472 4096 0T:gmpopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
54413152981 626 0434176 12288 0T:ntlopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
54698484419 658 0442368 12288 0T:ntlopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
55177922352 0 0229376 4096 0T:gmpclang++_-march=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
64072431240 0 028672 4096 0T:opensslnewclang_-march=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
64149081237 0 024576 4096 0T:opensslnewclang_-march=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
64511624579 658 0438272 12288 0T:ntlopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
67009851414 0 024576 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
67949741240 0 028672 4096 0T:opensslnewclang_-march=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826
70093771698 0 028672 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
71586471698 0 032768 4096 0T:opensslnewopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082620200826
74978472066 0 0233472 4096 0T:gmpclang++_-march=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020082620200826

Compiler output

Implementation: T:cryptopp
Security model: timingleaks
Compiler: clang++ -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
keypair.cpp: keypair.cpp:1:10: fatal error: 'cryptopp/dh.h' file not found
keypair.cpp: #include <cryptopp/dh.h>
keypair.cpp: ^~~~~~~~~~~~~~~
keypair.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
keypair.cpp: keypair.cpp:1:10: fatal error: cryptopp/dh.h: No such file or directory
keypair.cpp: 1 | #include <cryptopp/dh.h>
keypair.cpp: | ^~~~~~~~~~~~~~~
keypair.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: T:gmp
Security model: timingleaks
Compiler: clang++ -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.cpp: ld: warning: could not create compact unwind for ___gmpz_powm: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_binvert: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mu_div_qr2: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_mulmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom33_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom42_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom43_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom63_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mul_fft_internal.constprop.0: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_sqrmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom3_sqr: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_gcd_subdiv_step: does not use RBP or RSP based frame
try.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
try.cpp: ld: warning: could not create compact unwind for ___gmpz_powm: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_binvert: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mu_div_qr2: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_mulmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom33_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom42_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom43_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom63_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mul_fft_internal.constprop.0: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_sqrmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom3_sqr: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_gcd_subdiv_step: does not use RBP or RSP based frame
try.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
measure.cpp: ld: warning: could not create compact unwind for ___gmpz_powm: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for _crypto_stream_aes256ctr_dolbeau_aesenc_int_constbranchindex_xor: register 3 saved somewhere other than in frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_binvert: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for _mpn_mu_div_qr2: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_mulmod_bnm1: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_toom33_mul: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_toom42_mul: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_toom43_mul: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_toom63_mul: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for _mpn_mul_fft_internal.constprop.0: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_sqrmod_bnm1: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_toom3_sqr: does not use RBP or RSP based frame
measure.cpp: ld: warning: could not create compact unwind for ___gmpn_gcd_subdiv_step: does not use RBP or RSP based frame
measure.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie

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

Compiler output

Implementation: T:gmp
Security model: timingleaks
Compiler: opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
try.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
measure.cpp: ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie

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

Compiler output

Implementation: T:ntl
Security model: timingleaks
Compiler: clang++ -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.cpp: ld: warning: could not create compact unwind for __Z14_ntl_gpowermodP17_ntl_gbigint_bodyS0_S0_PS0_: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __Z14_ntl_gpowermodP17_ntl_gbigint_bodyS0_S0_PS0_.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL28MultiThreadedGenGermainPrimeERNS_2ZZEll: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL28MultiThreadedGenGermainPrimeERNS_2ZZEll.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL11RandomPrimeERNS_2ZZEll: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL11RandomPrimeERNS_2ZZEll.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpz_powm: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_binvert: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_gcd_subdiv_step: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mu_div_qr2: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_mu_divappr_q: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom33_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom3_sqr: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom42_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom43_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_toom63_mul: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_mulmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for ___gmpn_sqrmod_bnm1: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for _mpn_mul_fft_internal.constprop.0: does not use RBP or RSP based frame
try.cpp: Undefined symbols for architecture x86_64:
try.cpp: "NTL::operator>>(std::__1::basic_istream<char, std::__1::char_traits<char> >&, NTL::ZZ&)", referenced from:
try.cpp: _ntl_enable_if<_ntl_is_char_pointer<char const*>::value, void>::type NTL::conv<NTL::ZZ, char const*>(NTL::ZZ&, char const*) in crypto_dh_claus.a(sharedsecret.o)
try.cpp: _ntl_enable_if<_ntl_is_char_pointer<char const*>::value, void>::type NTL::conv<NTL::ZZ, char const*>(NTL::ZZ&, char const*) in crypto_dh_claus.a(keypair.o)
try.cpp: "std::ctype<char>::_M_widen_init() const", referenced from:
try.cpp: NTL::FileName(char const*, long) in libntl.a(fileio.o)
try.cpp: ...

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

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
keypair.c: keypair.c:25:5: error: incomplete definition of type 'struct dh_st'
keypair.c: dh->p = BN_new(); if (!dh->p) goto error;
keypair.c: ~~^
keypair.c: /usr/local/include/openssl/ossl_typ.h:104:16: note: forward declaration of 'struct dh_st'
keypair.c: typedef struct dh_st DH;
keypair.c: ^
keypair.c: keypair.c:25:28: error: incomplete definition of type 'struct dh_st'
keypair.c: dh->p = BN_new(); if (!dh->p) goto error;
keypair.c: ~~^
keypair.c: /usr/local/include/openssl/ossl_typ.h:104:16: note: forward declaration of 'struct dh_st'
keypair.c: typedef struct dh_st DH;
keypair.c: ^
keypair.c: keypair.c:26:5: error: incomplete definition of type 'struct dh_st'
keypair.c: dh->g = BN_new(); if (!dh->g) goto error;
keypair.c: ~~^
keypair.c: /usr/local/include/openssl/ossl_typ.h:104:16: note: forward declaration of 'struct dh_st'
keypair.c: typedef struct dh_st DH;
keypair.c: ^
keypair.c: keypair.c:26:28: error: incomplete definition of type 'struct dh_st'
keypair.c: dh->g = BN_new(); if (!dh->g) goto error;
keypair.c: ~~^
keypair.c: /usr/local/include/openssl/ossl_typ.h:104:16: note: forward declaration of 'struct dh_st'
keypair.c: typedef struct dh_st DH;
keypair.c: ^
keypair.c: keypair.c:28:39: error: incomplete definition of type 'struct dh_st'
keypair.c: ...

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
keypair.c: keypair.c: In function 'crypto_dh_claus_openssl_timingleaks_keypair':
keypair.c: keypair.c:25:5: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 25 | dh->p = BN_new(); if (!dh->p) goto error;
keypair.c: | ^~
keypair.c: keypair.c:25:28: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 25 | dh->p = BN_new(); if (!dh->p) goto error;
keypair.c: | ^~
keypair.c: keypair.c:26:5: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 26 | dh->g = BN_new(); if (!dh->g) goto error;
keypair.c: | ^~
keypair.c: keypair.c:26:28: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 26 | dh->g = BN_new(); if (!dh->g) goto error;
keypair.c: | ^~
keypair.c: keypair.c:28:39: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 28 | if (!BN_bin2bn(prime,sizeof prime,dh->p)) goto error;
keypair.c: | ^~
keypair.c: keypair.c:29:22: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 29 | if (!BN_set_word(dh->g,2)) goto error;
keypair.c: | ^~
keypair.c: In file included from keypair.c:2:
keypair.c: keypair.c:33:24: error: invalid use of incomplete typedef 'DH' {aka 'struct dh_st'}
keypair.c: 33 | len = BN_num_bytes(dh->pub_key); if (len > PUBLICKEY_BYTES) goto error;
keypair.c: | ^~
keypair.c: /usr/local/include/openssl/bn.h:181:40: note: in definition of macro 'BN_num_bytes'
keypair.c: 181 | # define BN_num_bytes(a) ((BN_num_bits(a)+7)/8)
keypair.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

Compiler output

Implementation: T:opensslnew
Security model: timingleaks
Compiler: clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
measure.c: ld: warning: could not create compact unwind for _crypto_stream_aes256ctr_dolbeau_aesenc_int_constbranchindex_xor: register 3 saved somewhere other than in frame

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