Implementation notes: amd64, hunsnivy, crypto_dh/ecfp256h

Computer: hunsnivy
Microarchitecture: amd64; Ivy Bridge+AES (306a9)
Architecture: amd64
CPU ID: GenuineIntel-000306a9-bfebfbff
SUPERCOP version: 20240107
Operation: crypto_dh
Primitive: ecfp256h
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
660520178483 0 8191630 820 1816T:v01/w8s8gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
663289197785 0 8211870 820 1816T:v01/w8s8gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
669405131905 0 8145950 820 1816T:v01/w8s4gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
670931112900 0 8126038 820 1816T:v01/w8s4gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
672241112970 0 8125814 820 1816T:v01/w8s4gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
676326178545 0 8191350 820 1816T:v01/w8s8gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
67814380149 0 893286 820 1816T:v01/w8s2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
68137699112 0 8113142 820 1816T:v01/w8s2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
68651080268 0 893054 820 1816T:v01/w8s2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
689265103467 0 8115294 812 1784T:v01/w8s4gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
690947169003 0 8180830 812 1784T:v01/w8s8gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
70010770733 0 882598 812 1784T:v01/w8s2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
70875982450 0 896486 820 1816T:v01/w8s1gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
71144763783 0 876598 820 1816T:v01/w8s1gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
71184963664 0 876822 820 1816T:v01/w8s1gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
72981154237 0 866078 812 1784T:v01/w8s1gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
111003147032 0 860142 820 1816T:v01/vargcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
111724964924 0 878982 820 1816T:v01/vargcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
112606147267 0 860054 820 1816T:v01/vargcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212
113861738017 0 849854 812 1784T:v01/vargcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121420231212

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