Implementation notes: amd64, luft, crypto_sign/redgemss128

Computer: luft
Architecture: amd64
CPU ID: GenuineIntel-000306d4-bfebfbff
SUPERCOP version: 20200702
Operation: crypto_sign
Primitive: redgemss128
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
707012880197 0 0143360 4096 0optgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
7137408105863 0 0167936 4096 0skylakegcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
736325290101 0 0151552 4096 0optgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
774169679988 0 0143360 4096 0skylakegcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
779417690009 0 0151552 4096 0skylakegcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
815232486711 0 0147456 4096 0optgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
8484172105960 0 0167936 4096 0optgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
850786086628 0 0147456 4096 0skylakegcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
12827693653580 2328 01900544 73728 0refg++_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
13022819255418 2421 01904640 73728 0refg++_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
13027812840762 2194 01892352 73728 0refg++_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702
14020428445096 2410 01892352 73728 0refg++_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020071220200702

Compiler output

Implementation: opt
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mul_gf2x.c: mul_gf2x.c:13:12: warning: implicit declaration of function '_mm_cvtsi128_si64x' is invalid in C99 [-Wimplicit-function-declaration]
mul_gf2x.c: return MUL64LOW(x,y,0);
mul_gf2x.c: ^
mul_gf2x.c: ./mul_gf2x.h:905:27: note: expanded from macro 'MUL64LOW'
mul_gf2x.c: #define MUL64LOW(x,y,pos) _mm_cvtsi128_si64x(_mm_clmulepi64_si128(x, y, pos))
mul_gf2x.c: ^
mul_gf2x.c: 1 warning generated.
printHFE.c: printHFE.c:36:16: warning: format specifies type 'unsigned long' but the argument has type 'UINT' (aka 'unsigned long long') [-Wformat]
printHFE.c: PRINT_UINT(sm[0]);
printHFE.c: ~~~~~~~~~~~^~~~~~
printHFE.c: ./arch.h:13:38: note: expanded from macro 'PRINT_UINT'
printHFE.c: #define PRINT_UINT(a) printf("0x%lx",a);
printHFE.c: ~~~ ^
printHFE.c: printHFE.c:40:20: warning: format specifies type 'unsigned long' but the argument has type 'UINT' (aka 'unsigned long long') [-Wformat]
printHFE.c: PRINT_UINT(sm[i]);
printHFE.c: ~~~~~~~~~~~^~~~~~
printHFE.c: ./arch.h:13:38: note: expanded from macro 'PRINT_UINT'
printHFE.c: #define PRINT_UINT(a) printf("0x%lx",a);
printHFE.c: ~~~ ^
printHFE.c: printHFE.c:49:24: warning: format specifies type 'unsigned long' but the argument has type 'UINT' (aka 'unsigned long long') [-Wformat]
printHFE.c: PRINT_UINT(sm[NB_WORD_GF2nvm*j + NB_WORD_GF2nv]);
printHFE.c: ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printHFE.c: ./arch.h:13:38: note: expanded from macro 'PRINT_UINT'
printHFE.c: #define PRINT_UINT(a) printf("0x%lx",a);
printHFE.c: ~~~ ^
printHFE.c: printHFE.c:53:28: warning: format specifies type 'unsigned long' but the argument has type 'UINT' (aka 'unsigned long long') [-Wformat]
printHFE.c: PRINT_UINT(sm[NB_WORD_GF2nvm*j + NB_WORD_GF2nv+i]);
printHFE.c: ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printHFE.c: ./arch.h:13:38: note: expanded from macro 'PRINT_UINT'
printHFE.c: #define PRINT_UINT(a) printf("0x%lx",a);
printHFE.c: ~~~ ^
printHFE.c: 4 warnings generated.
sqr_gf2x.c: sqr_gf2x.c:27:12: warning: implicit declaration of function '_mm_cvtsi128_si64x' is invalid in C99 [-Wimplicit-function-declaration]
sqr_gf2x.c: return _mm_cvtsi128_si64x(_mm_clmulepi64_si128(x,x,0));
sqr_gf2x.c: ^
sqr_gf2x.c: sqr_gf2x.c:316:12: warning: implicit declaration of function '_mm_cvtsi128_si64x' is invalid in C99 [-Wimplicit-function-declaration]
sqr_gf2x.c: return SQR64LOW(x,0);
sqr_gf2x.c: ^
sqr_gf2x.c: ./sqr_gf2x.h:250:25: note: expanded from macro 'SQR64LOW'
sqr_gf2x.c: #define SQR64LOW(x,pos) _mm_cvtsi128_si64x(_mm_clmulepi64_si128(x, x, pos))
sqr_gf2x.c: ^
sqr_gf2x.c: 2 warnings generated.
try.c: Undefined symbols for architecture x86_64:
try.c: "__mm_cvtsi128_si64x", referenced from:
try.c: _RedGeMSS_128U_mul64low in crypto_sign_redgemss128.a(mul_gf2x.o)
try.c: _RedGeMSS_128U_sqr64low in crypto_sign_redgemss128.a(sqr_gf2x.o)
try.c: _RedGeMSS_128U_old_square64low in crypto_sign_redgemss128.a(sqr_gf2x.o)
try.c: ld: symbol(s) not found for architecture x86_64
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE opt
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE opt
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE opt
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE opt
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE skylake
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE skylake
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE skylake
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE skylake

Compiler output

Implementation: opt
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
arith_gf2n.c: In file included from arith_gf2n.c:1:
arith_gf2n.c: In file included from ./arith_gf2n.h:9:
arith_gf2n.c: In file included from ./tools_gf2n.h:162:
arith_gf2n.c: ./mul_gf2x.h:17:14: fatal error: 'gf2x/gf2x_mul1.h' file not found
arith_gf2n.c: #include <gf2x/gf2x_mul1.h>
arith_gf2n.c: ^~~~~~~~~~~~~~~~~~
arith_gf2n.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE opt skylake

Compiler output

Implementation: ref
Security model: unknown
Compiler: clang++ -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
KAT_int.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
bit.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
convMQS_gf2.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
evalMQnocst_gf2.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
printgf2x.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
sign.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
sign_openHFE.c: clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL6DivRemERNS_4GF2XES1_RKS0_RKNS_11GF2XModulusE: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL6DivRemERNS_4GF2XES1_RKS0_RKNS_11GF2XModulusE.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL3divERNS_4GF2XERKS0_RKNS_11GF2XModulusE: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL3divERNS_4GF2XERKS0_RKNS_11GF2XModulusE.cold: 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_: 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 __ZN3NTL11SFBerlekampERNS_3VecINS_5GF2EXEEERKS1_l: non-standard register 10 being saved in prolog
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL11SFBerlekampERNS_3VecINS_5GF2EXEEERKS1_l.cold: non-standard register 10 being saved in prolog
try.cpp: ld: warning: could not create compact unwind for __ZN3NTLL17GenerateBabyStepsERNS_5GF2EXERKS0_S3_lRNS_8FileListEl.constprop.0: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTLL17GenerateBabyStepsERNS_5GF2EXERKS0_S3_lRNS_8FileListEl.constprop.0.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTLL18GenerateGiantStepsERKNS_5GF2EXES2_lRNS_8FileListEl: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTLL18GenerateGiantStepsERKNS_5GF2EXES2_lRNS_8FileListEl.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 __ZN3NTL13new_fft_notabEPlPKllRKNS_12FFTPrimeInfoEll: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL21new_fft_flipped_notabEPlPKllRKNS_12FFTPrimeInfoE: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL14new_ifft_notabEPlPKllRKNS_12FFTPrimeInfoEl: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL22new_ifft_flipped_notabEPlPKllRKNS_12FFTPrimeInfoE: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL7CompModERNS_5ZZ_pXERKS0_RKNS_13ZZ_pXArgumentERKNS_12ZZ_pXModulusE: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTL7CompModERNS_5ZZ_pXERKS0_RKNS_13ZZ_pXArgumentERKNS_12ZZ_pXModulusE.cold: does not use RBP or RSP based frame
try.cpp: ld: warning: could not create compact unwind for __ZN3NTLL14fft_trunc_pairERNS_5ZZVecES1_llllllRKNS_2ZZElPNS_19RecursiveThreadPoolE.constprop.0: dwarf uses DW_CFA_GNU_args_size
try.cpp: ld: warning: could not create compact unwind for ___gmpn_binvert: does not use RBP or RSP based frame
try.cpp: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang++ -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang++ -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang++ -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
clang++ -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref

Compiler output

Implementation: ref
Security model: unknown
Compiler: g++ -march=native -mtune=native -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_add_n from /Users/jvaltin/Documents/supercop-20200702/supercop-data/luft/amd64/lib/libgmp.a(add_n.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_add_n from /Users/jvaltin/Documents/supercop-20200702/supercop-data/luft/amd64/lib/libgmp.a(add_n.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_add_n from /Users/jvaltin/Documents/supercop-20200702/supercop-data/luft/amd64/lib/libgmp.a(add_n.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie

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