Implementation notes: amd64, icelake, crypto_sign/redgemss192

Computer: icelake
Architecture: amd64
CPU ID: GenuineIntel-000706e5-bfebfbff
SUPERCOP version: 20200826
Operation: crypto_sign
Primitive: redgemss192
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
903604695000 0 0122880 4096 0T:skylakeopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
942082494888 0 0118784 4096 0T:optopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
9512135124645 0 0147456 4096 0T:optopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
9606498124702 0 0147456 4096 0T:skylakeopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
10000277106046 0 0131072 4096 0T:optopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
11966567106103 0 0131072 4096 0T:skylakeopt-local-bin-gcc_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
10329301457367 2421 01912832 73728 0T:refopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
10627179654611 2328 01908736 73728 0T:refopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826
10721038241670 2194 01896448 73728 0T:refopt-local-bin-g++_-march=icelake-client_-mtune=icelake-client_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020082920200826

Compiler output

Implementation: T:opt
Security model: timingleaks
Compiler: clang -march=icelake-client -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_192U_mul64low in crypto_sign_redgemss192.a(mul_gf2x.o)
try.c: _RedGeMSS_192U_sqr64low in crypto_sign_redgemss192.a(sqr_gf2x.o)
try.c: _RedGeMSS_192U_old_square64low in crypto_sign_redgemss192.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: 6, namely:
CompilerImplementations
clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt
clang -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:skylake
clang -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:skylake
clang -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:skylake

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang++ -march=icelake-client -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: 3, namely:
CompilerImplementations
clang++ -march=icelake-client -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref
clang++ -march=icelake-client -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref
clang++ -march=icelake-client -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -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_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.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_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.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_divexact_1 from /Users/krovetz/tmp/supercop-20200826/supercop-data/icelake/amd64/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
opt-local-bin-g++ -march=icelake-client -mtune=icelake-client -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref