Implementation notes: amd64, jasper3, crypto_sign/edons128ref

Computer: jasper3
Microarchitecture: amd64; Tremont (906c0)
Architecture: amd64
CPU ID: GenuineIntel-000906c0-20-bfebfbff
SUPERCOP version: 20240625
Operation: crypto_sign
Primitive: edons128ref
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
475132040952 0 263276112 1020 4376T:refclang_-march=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
476618827360 0 263260240 1020 4376T:refclang_-march=native_-O2_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
534595641868 0 263275632 1020 4376T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
548006533064 0 263266138 996 4408T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
589257416798 0 263248094 1012 4376T:refclang_-march=native_-Os_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
603760523498 0 263256313 1004 4408T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
620570122888 0 263255337 1004 4408T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
692017016302 0 263247537 996 4408T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625
772900517806 0 263249814 1012 4376T:refclang_-march=native_-O_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062720240625

Compiler output


mpfq_2_128.c: mpfq_2_128.c:154:35: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
mpfq_2_128.c:         int ret = mpn_set_str(zz, tmp, len, k->io_type);
mpfq_2_128.c:                                   ^~~
mpfq_2_128.c: .../supercop-data/jasper3/amd64/include/gmp.h:1595:68: note: passing argument to parameter here
mpfq_2_128.c: __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
mpfq_2_128.c:                                                                    ^
mpfq_2_128.c: 1 warning generated.
sign.c: sign.c:815:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:566:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:566:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:880:84: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kclear(allcandidates[i]);
sign.c:                                                                                    ^
sign.c: sign.c:880:84: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:975:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:934:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:934:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:916:19: warning: unused variable 'allrandombytes' [-Wunused-variable]
sign.c: ...

Number of similar (implementation,compiler) pairs: 2, namely:
ImplementationCompiler
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


mpfq_2_128.c: mpfq_2_128.c:154:35: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
mpfq_2_128.c:         int ret = mpn_set_str(zz, tmp, len, k->io_type);
mpfq_2_128.c:                                   ^~~
mpfq_2_128.c: .../supercop-data/jasper3/amd64/include/gmp.h:1595:68: note: passing argument to parameter here
mpfq_2_128.c: __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
mpfq_2_128.c:                                                                    ^
mpfq_2_128.c: 1 warning generated.
sign.c: sign.c:815:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:566:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:566:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:880:84: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kclear(allcandidates[i]);
sign.c:                                                                                    ^
sign.c: sign.c:880:84: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:975:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:934:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:934:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:912:10: warning: unused variable 'e' [-Wunused-variable]
sign.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


mpfq_2_128.c: mpfq_2_128.c:154:35: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
mpfq_2_128.c:         int ret = mpn_set_str(zz, tmp, len, k->io_type);
mpfq_2_128.c:                                   ^~~
mpfq_2_128.c: .../supercop-data/jasper3/amd64/include/gmp.h:1595:68: note: passing argument to parameter here
mpfq_2_128.c: __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
mpfq_2_128.c:                                                                    ^
mpfq_2_128.c: 1 warning generated.
sign.c: sign.c:815:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:566:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:566:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:880:84: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kclear(allcandidates[i]);
sign.c:                                                                                    ^
sign.c: sign.c:880:84: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:975:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:934:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:934:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:913:51: warning: unused variable 'temphash' [-Wunused-variable]
sign.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


mpfq_2_128.c: mpfq_2_128.c:154:35: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
mpfq_2_128.c:         int ret = mpn_set_str(zz, tmp, len, k->io_type);
mpfq_2_128.c:                                   ^~~
mpfq_2_128.c: .../supercop-data/jasper3/amd64/include/gmp.h:1595:68: note: passing argument to parameter here
mpfq_2_128.c: __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
mpfq_2_128.c:                                                                    ^
mpfq_2_128.c: 1 warning generated.
sign.c: sign.c:815:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:566:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:566:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:880:84: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kclear(allcandidates[i]);
sign.c:                                                                                    ^
sign.c: sign.c:880:84: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:975:63: warning: incompatible function pointer types passing 'int (const unsigned long *, const unsigned long *)' to parameter of type '__compar_fn_t' (aka 'int (*)(const void *, const void *)') [-Wincompatible-function-pointer-types]
sign.c:     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:                                                               ^~~~~~~
sign.c: /usr/include/stdlib.h:831:20: note: passing argument to parameter '__compar' here
sign.c:                    __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:                                  ^
sign.c: sign.c:934:83: warning: for loop has empty body [-Wempty-body]
sign.c:     for(i=0; i<(1<<(mu + 1 + ErrorBasisDimension))+2; i++) Kinit(allcandidates[i]);
sign.c:                                                                                   ^
sign.c: sign.c:934:83: note: put the semicolon on a separate line to silence this warning
sign.c: sign.c:915:19: warning: unused variable 's0s1' [-Wunused-variable]
sign.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_11.0.1)

Compiler output


mpfq_2_128.c: mpfq_2_128.c: In function 'mpfq_2_128_sscan':
mpfq_2_128.c: mpfq_2_128.c:154:35: warning: pointer targets in passing argument 2 of '__gmpn_set_str' differ in signedness [-Wpointer-sign]
mpfq_2_128.c:   154 |         int ret = mpn_set_str(zz, tmp, len, k->io_type);
mpfq_2_128.c:       |                                   ^~~
mpfq_2_128.c:       |                                   |
mpfq_2_128.c:       |                                   char *
mpfq_2_128.c: In file included from mpfq.h:6,
mpfq_2_128.c:                  from mpfq_2_128.h:6,
mpfq_2_128.c:                  from mpfq_2_128.c:3:
mpfq_2_128.c: .../supercop-data/jasper3/amd64/include/gmp.h:1595:47: note: expected 'const unsigned char *' but argument is of type 'char *'
mpfq_2_128.c:  1595 | __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);
mpfq_2_128.c:       |                                               ^~~~~~~~~~~~~~~~~~~~~
sign.c: sign.c: In function 'crypto_sign_edons128ref_ref_timingleaks':
sign.c: sign.c:815:63: warning: passing argument 4 of 'qsort' from incompatible pointer type [-Wincompatible-pointer-types]
sign.c:   815 |     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:       |                                                               ^~~~~~~
sign.c:       |                                                               |
sign.c:       |                                                               int (*)(const long unsigned int *, const long unsigned int *)
sign.c: In file included from sign.c:2:
sign.c: /usr/include/stdlib.h:831:20: note: expected '__compar_fn_t' {aka 'int (*)(const void *, const void *)'} but argument is of type 'int (*)(const long unsigned int *, const long unsigned int *)'
sign.c:   831 |      __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:       |      ~~~~~~~~~~~~~~^~~~~~~~
sign.c: sign.c: In function 'crypto_sign_edons128ref_ref_timingleaks_open':
sign.c: sign.c:975:63: warning: passing argument 4 of 'qsort' from incompatible pointer type [-Wincompatible-pointer-types]
sign.c:   975 |     qsort(allcandidates, NumberOfAllCandidates, sizeof(Kelt), compare);
sign.c:       |                                                               ^~~~~~~
sign.c:       |                                                               |
sign.c:       |                                                               int (*)(const long unsigned int *, const long unsigned int *)
sign.c: In file included from sign.c:2:
sign.c: /usr/include/stdlib.h:831:20: note: expected '__compar_fn_t' {aka 'int (*)(const void *, const void *)'} but argument is of type 'int (*)(const long unsigned int *, const long unsigned int *)'
sign.c:   831 |      __compar_fn_t __compar) __nonnull ((1, 4));
sign.c:       |      ~~~~~~~~~~~~~~^~~~~~~~
sign.c: sign.c:926:10: warning: unused variable 'mm' [-Wunused-variable]
sign.c:   926 |     Kelt mm[mu], Cbase[NrColumns];
sign.c:       |          ^~
sign.c: sign.c:925:10: warning: unused variable 'M' [-Wunused-variable]
sign.c:   925 |     Kelt M[ProjectionDim], y[NrRows], C[NrColumns], allcandidates[(1<<(mu + 1 + ErrorBasisDimension))+2];
sign.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (10.2.1_20210110)