Implementation notes: amd64, panther, crypto_dh/ecfp256h

Computer: panther
Microarchitecture: amd64; Tiger Lake (806c1)
Architecture: amd64
CPU ID: GenuineIntel-000806c1-00-bfebfbff
SUPERCOP version: 20231107
Operation: crypto_dh
Primitive: ecfp256h
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
471614203331 0 8222582 820 1848T:v01/w8s8gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
475964137444 0 8156694 820 1848T:v01/w8s4gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
476882178275 0 8197278 820 1848T:v01/w8s8gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
478859112702 0 8131694 820 1848T:v01/w8s4gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
481958168901 0 8186942 812 1816T:v01/w8s8gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
483421178287 0 8197774 820 1848T:v01/w8s8gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
484333112707 0 8132198 820 1848T:v01/w8s4gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
484884104673 0 8123934 820 1848T:v01/w8s2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
486184103366 0 8121406 812 1816T:v01/w8s4gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
48849780006 0 898998 820 1848T:v01/w8s2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
49438079964 0 899462 820 1848T:v01/w8s2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
49603670631 0 888678 812 1816T:v01/w8s2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
50380988004 0 8107262 820 1848T:v01/w8s1gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
50726963471 0 882966 820 1848T:v01/w8s1gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
50915063519 0 882510 820 1848T:v01/w8s1gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
51604954142 0 872190 812 1816T:v01/w8s1gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
79920770478 0 889726 820 1848T:v01/vargcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
80252846830 0 866318 820 1848T:v01/vargcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
80598347003 0 865998 820 1848T:v01/vargcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530
81327437917 0 855950 812 1816T:v01/vargcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023053020230530

Compiler output

Implementation: T:v01/var
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
alloc.c: alloc.c:79:11: warning: passing 'char [13]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
alloc.c: kn_exit("kn_init_fast", ERR_OUT_OF_MEMORY);
alloc.c: ^~~~~~~~~~~~~~
alloc.c: ./_core.h:132:21: note: passing argument to parameter 's' here
alloc.c: void kn_exit(sic_t *s, uni_t code);
alloc.c: ^
alloc.c: alloc.c:94:11: warning: passing 'char [13]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
alloc.c: kn_exit("kn_free_fast", ERR_INVALID_MEMORY);
alloc.c: ^~~~~~~~~~~~~~
alloc.c: ./_core.h:132:21: note: passing argument to parameter 's' here
alloc.c: void kn_exit(sic_t *s, uni_t code);
alloc.c: ^
alloc.c: alloc.c:110:11: warning: passing 'char [8]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
alloc.c: kn_exit("kn_kill", ERR_INVALID_MEMORY);
alloc.c: ^~~~~~~~~
alloc.c: ./_core.h:132:21: note: passing argument to parameter 's' here
alloc.c: void kn_exit(sic_t *s, uni_t code);
alloc.c: ^
alloc.c: alloc.c:133:11: warning: passing 'char [33]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
alloc.c: kn_exit("kn_alloc: cannot allocate memory", 0);
alloc.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alloc.c: ./_core.h:132:21: note: passing argument to parameter 's' here
alloc.c: void kn_exit(sic_t *s, uni_t code);
alloc.c: ^
alloc.c: alloc.c:154:12: warning: passing 'char [8]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
alloc.c: ...
error.c: error.c:44:11: warning: passing 'char [56]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
error.c: kn_exit("Increase the workspace space using crypmix_init(maxlen)", ERR_OUT_OF_BOUNDS);
error.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error.c: error.c:29:21: note: passing argument to parameter 's' here
error.c: void kn_exit(sic_t *s, uni_t code)
error.c: ^
error.c: 1 warning generated.
integer_hi_stack.c: integer_hi_stack.c:387:11: warning: passing 'char [11]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_hi_stack.c: kn_exit("mi_q_and_r", ERR_DIVIDE_BY_ZERO);
integer_hi_stack.c: ^~~~~~~~~~~~
integer_hi_stack.c: ./kernel.h:814:18: note: passing argument to parameter 's' here
integer_hi_stack.c: void kn_exit(sic s, uni_t code);
integer_hi_stack.c: ^
integer_hi_stack.c: integer_hi_stack.c:417:11: warning: passing 'char [11]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_hi_stack.c: kn_exit("mi_q_and_r", ERR_DIVIDE_BY_ZERO);
integer_hi_stack.c: ^~~~~~~~~~~~
integer_hi_stack.c: ./kernel.h:814:18: note: passing argument to parameter 's' here
integer_hi_stack.c: void kn_exit(sic s, uni_t code);
integer_hi_stack.c: ^
integer_hi_stack.c: integer_hi_stack.c:907:11: warning: passing 'char [33]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_hi_stack.c: kn_exit("mi_modinv_stack: 0 is not a unit", 0);
integer_hi_stack.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
integer_hi_stack.c: ./kernel.h:814:18: note: passing argument to parameter 's' here
integer_hi_stack.c: void kn_exit(sic s, uni_t code);
integer_hi_stack.c: ^
integer_hi_stack.c: integer_hi_stack.c:918:11: warning: passing 'char [16]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_hi_stack.c: kn_exit("mi_modinv_stack", 0);
integer_hi_stack.c: ^~~~~~~~~~~~~~~~~
integer_hi_stack.c: ./kernel.h:814:18: note: passing argument to parameter 's' here
integer_hi_stack.c: void kn_exit(sic s, uni_t code);
integer_hi_stack.c: ^
integer_hi_stack.c: integer_hi_stack.c:943:12: warning: passing 'char [32]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_hi_stack.c: ...
integer_lo.c: integer_lo.c:551:10: warning: passing 'char [35]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
integer_lo.c: kn_exit("min_nres_prepare2: not implemented", 0);
integer_lo.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
integer_lo.c: ./kernel.h:814:18: note: passing argument to parameter 's' here
integer_lo.c: void kn_exit(sic s, uni_t code);
integer_lo.c: ^
integer_lo.c: 1 warning generated.
io.c: io.c:340:11: warning: passing 'char [32]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
io.c: kn_exit("kn_io_fscan: zero length string", ERR_INVALID_STRING);
io.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c: ./_core.h:132:21: note: passing argument to parameter 's' here
io.c: void kn_exit(sic_t *s, uni_t code);
io.c: ^
io.c: io.c:350:12: warning: passing 'char [31]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
io.c: kn_exit("kn_io_fscan: invalid character", ERR_INVALID_CHARACTER);
io.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c: ./_core.h:132:21: note: passing argument to parameter 's' here
io.c: void kn_exit(sic_t *s, uni_t code);
io.c: ^
io.c: io.c:352:14: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
io.c: if((buf[i] == -1)){
io.c: ~~~~~~~^~~~~
io.c: io.c:352:14: note: remove extraneous parentheses around the comparison to silence this warning
io.c: if((buf[i] == -1)){
io.c: ~ ^ ~
io.c: io.c:352:14: note: use '=' to turn this equality comparison into an assignment
io.c: if((buf[i] == -1)){
io.c: ^~
io.c: =
io.c: io.c:353:12: warning: passing 'char [31]' to parameter of type 'sic_t *' (aka 'signed char *') converts between pointers to integer types with different sign [-Wpointer-sign]
io.c: kn_exit("kn_io_fscan: invalid character", ERR_INVALID_CHARACTER);
io.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
io.c: ...

Number of similar (compiler,implementation) pairs: 25, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/var
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/var
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/var
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/var
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/var
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s1
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s1
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s1
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s1
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s1
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s2
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s2
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s2
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s2
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s2
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s4
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s4
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s4
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s4
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s4
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s8
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s8
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s8
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s8
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:v01/w8s8

Compiler output

Implementation: T:v01/w8s1
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try_ec_fp_256h.c: try_ec_fp_256h.c: In function 'crypto_dh_ecfp256h_v01_w8s1_timingleaks_keypair':
try_ec_fp_256h.c: try_ec_fp_256h.c:39:2: warning: implicit declaration of function 'ec_fp_smulbase_256h'; did you mean 'ec_fp_smulbase_256i'? [-Wimplicit-function-declaration]
try_ec_fp_256h.c: 39 | ec_fp_smulbase_256h((uni)pk, (uni)(pk + (PUBLICKEY_BYTES/2)), (uni)zzn, (uni)sk, (uni *)xn0, (uni *)yn0);
try_ec_fp_256h.c: | ^~~~~~~~~~~~~~~~~~~
try_ec_fp_256h.c: | ec_fp_smulbase_256i

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

Compiler output

Implementation: T:v01/w8s2
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try_ec_fp_256h.c: try_ec_fp_256h.c: In function 'crypto_dh_ecfp256h_v01_w8s2_timingleaks_keypair':
try_ec_fp_256h.c: try_ec_fp_256h.c:39:2: warning: implicit declaration of function 'ec_fp_smulbase_256h'; did you mean 'ec_fp_smulbase_256i'? [-Wimplicit-function-declaration]
try_ec_fp_256h.c: 39 | ec_fp_smulbase_256h((uni)pk, (uni)(pk + (PUBLICKEY_BYTES/2)), (uni)zzn, (uni)sk, (uni *)xn0, (uni *)yn0);
try_ec_fp_256h.c: | ^~~~~~~~~~~~~~~~~~~
try_ec_fp_256h.c: | ec_fp_smulbase_256i

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

Compiler output

Implementation: T:v01/w8s4
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try_ec_fp_256h.c: try_ec_fp_256h.c: In function 'crypto_dh_ecfp256h_v01_w8s4_timingleaks_keypair':
try_ec_fp_256h.c: try_ec_fp_256h.c:39:2: warning: implicit declaration of function 'ec_fp_smulbase_256h'; did you mean 'ec_fp_smulbase_256i'? [-Wimplicit-function-declaration]
try_ec_fp_256h.c: 39 | ec_fp_smulbase_256h((uni)pk, (uni)(pk + (PUBLICKEY_BYTES/2)), (uni)zzn, (uni)sk, (uni *)xn0, (uni *)yn0);
try_ec_fp_256h.c: | ^~~~~~~~~~~~~~~~~~~
try_ec_fp_256h.c: | ec_fp_smulbase_256i

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

Compiler output

Implementation: T:v01/w8s8
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try_ec_fp_256h.c: try_ec_fp_256h.c: In function 'crypto_dh_ecfp256h_v01_w8s8_timingleaks_keypair':
try_ec_fp_256h.c: try_ec_fp_256h.c:39:2: warning: implicit declaration of function 'ec_fp_smulbase_256h'; did you mean 'ec_fp_smulbase_256i'? [-Wimplicit-function-declaration]
try_ec_fp_256h.c: 39 | ec_fp_smulbase_256h((uni)pk, (uni)(pk + (PUBLICKEY_BYTES/2)), (uni)zzn, (uni)sk, (uni *)xn0, (uni *)yn0);
try_ec_fp_256h.c: | ^~~~~~~~~~~~~~~~~~~
try_ec_fp_256h.c: | ec_fp_smulbase_256i

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