Implementation notes: amd64, avx512imath, crypto_dh/claus

Computer: avx512imath
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20210125
Operation: crypto_dh
Primitive: claus
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
39069281406 0 028789 940 1776T:opensslnewgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
39119191650 0 033941 948 1776T:opensslnewgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
39445371650 0 031229 948 1776T:opensslnewgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
41291132036 0 031349 948 1776T:opensslnewgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
52590142161 16 2241708084 144067 11472T:cryptoppg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
52771002887 16 2241710512 144075 11504T:cryptoppg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
52995393178 16 2241711044 144075 11504T:cryptoppg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125
53089803178 16 2241713820 144075 11504T:cryptoppg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2021032320210125

Compiler output

Implementation: T:gmp
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair':
try.cpp: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_str'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_ui'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_powm'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_sizeinbase'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair.cold':
try.cpp: keypair.cpp:(.text.unlikely+0x58): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o):keypair.cpp:(.text.unlikely+0x60): more undefined references to `__gmpz_clear' follow
try.cpp: /usr/bin/ld: crypto_dh_claus.a(sharedsecret.o): in function `crypto_dh_claus_gmp_timingleaks':
try.cpp: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:gmp

Compiler output

Implementation: T:gmp
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair':
try.cpp: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_str'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_ui'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_powm'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_sizeinbase'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair.cold':
try.cpp: keypair.cpp:(.text.unlikely+0x54): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o):keypair.cpp:(.text.unlikely+0x5c): more undefined references to `__gmpz_clear' follow
try.cpp: /usr/bin/ld: crypto_dh_claus.a(sharedsecret.o): in function `crypto_dh_claus_gmp_timingleaks':
try.cpp: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:gmp

Compiler output

Implementation: T:gmp
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair':
try.cpp: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_str'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_ui'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_powm'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_sizeinbase'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(sharedsecret.o): in function `crypto_dh_claus_gmp_timingleaks':
try.cpp: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:gmp

Compiler output

Implementation: T:gmp
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o): in function `crypto_dh_claus_gmp_timingleaks_keypair':
try.cpp: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_str'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_set_ui'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_powm'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_sizeinbase'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_export'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: keypair.cpp:(.text+0x...): undefined reference to `__gmpz_clear'
try.cpp: /usr/bin/ld: crypto_dh_claus.a(keypair.o):keypair.cpp:(.text+0x...): more undefined references to `__gmpz_clear' follow
try.cpp: /usr/bin/ld: crypto_dh_claus.a(sharedsecret.o): in function `crypto_dh_claus_gmp_timingleaks':
try.cpp: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_init'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: /usr/bin/ld: sharedsecret.cpp:(.text+0x...): undefined reference to `__gmpz_import'
try.cpp: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:gmp

Compiler output

Implementation: T:ntl
Security model: timingleaks
Compiler: g++ -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `redc(_ntl_gbigint_body*, _ntl_gbigint_body*, long, unsigned long, _ntl_gbigint_body*)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_addmul_1'
try.cpp: /usr/bin/ld: lip.cpp:(.text+0x...): undefined reference to `__gmpn_sub_n'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_rem_struct_basic::eval(long*, _ntl_gbigint_body*, _ntl_tmp_vec*)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_mod_1'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_reduce_struct_montgomery::eval(_ntl_gbigint_body**, _ntl_gbigint_body**)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_addmul_1'
try.cpp: /usr/bin/ld: lip.cpp:(.text+0x...): undefined reference to `__gmpn_sub_n'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_crt_struct_basic::eval(_ntl_gbigint_body**, long const*, _ntl_tmp_vec*)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_addmul_1'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `gmod_simple(_ntl_gbigint_body*, _ntl_gbigint_body*, _ntl_gbigint_body**)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_tdiv_qr'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_rem_struct_fast::eval(long*, _ntl_gbigint_body*, _ntl_tmp_vec*)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_mod_1'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_rem_struct_medium::eval(long*, _ntl_gbigint_body*, _ntl_tmp_vec*)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_mod_1'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_grshift(_ntl_gbigint_body*, long, _ntl_gbigint_body**)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_rshift'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_glshift(_ntl_gbigint_body*, long, _ntl_gbigint_body**)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_lshift'
try.cpp: /usr/bin/ld: /home/pascal/supercop-20210125/supercop-data/avx512imath/amd64/lib/libntl.a(lip.o): in function `_ntl_gadd(_ntl_gbigint_body*, _ntl_gbigint_body*, _ntl_gbigint_body**)':
try.cpp: lip.cpp:(.text+0x...): undefined reference to `__gmpn_sub_n'
try.cpp: /usr/bin/ld: lip.cpp:(.text+0x...): undefined reference to `__gmpn_add_n'
try.cpp: /usr/bin/ld: lip.cpp:(.text+0x...): undefined reference to `__gmpn_sub_n'
try.cpp: /usr/bin/ld: lip.cpp:(.text+0x...): undefined reference to `__gmpn_sub_n'
try.cpp: ...

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

Compiler output

Implementation: T:openssl
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -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: dereferencing pointer to incomplete type 'DH' {aka 'struct dh_st'}
keypair.c: 25 | dh->p = BN_new(); if (!dh->p) goto error;
keypair.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