Implementation notes: amd64, genji346, crypto_hash/mgrostl256

Computer: genji346
Architecture: amd64
CPU ID: AuthenticAMD-00830f10-178bfbff
SUPERCOP version: 20191017
Operation: crypto_hash
Primitive: mgrostl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
32940213452 16384 0228941 17296 744opt-64icc_-march=core-avx-i_-mtune=core-avx-i_-O3_-fomit-frame-pointer2019102520191017
33060213684 16384 0229109 17296 744opt-64icc_-march=broadwell_-mtune=broadwell_-O3_-fomit-frame-pointer2019102520191017
33100213684 16384 0229109 17296 744opt-64icc_-march=haswell_-mtune=haswell_-O3_-fomit-frame-pointer2019102520191017
33100213684 16384 0229109 17296 744opt-64icc_-march=skylake_-mtune=skylake_-O3_-fomit-frame-pointer2019102520191017
33120213452 16384 0228941 17296 744opt-64icc_-march=corei7-avx_-mtune=corei7-avx_-O3_-fomit-frame-pointer2019102520191017
33240209916 16384 0224141 17296 744opt-64icc_-march=corei7_-mtune=corei7_-O3_-fomit-frame-pointer2019102520191017
33340213452 16384 0228941 17296 744opt-64icc_-march=ivybridge_-mtune=ivybridge_-O3_-fomit-frame-pointer2019102520191017
34480213452 16384 0228941 17296 744opt-64icc_-march=sandybridge_-mtune=sandybridge_-O3_-fomit-frame-pointer2019102520191017
35720213684 16384 0229109 17296 744opt-64icc_-march=core-avx2_-mtune=core-avx2_-O3_-fomit-frame-pointer2019102520191017
38120224420 16384 0239877 17296 744opt-64icc_-march=sandybridge_-mtune=sandybridge_-O2_-fomit-frame-pointer2019102520191017
38160224420 16384 0239877 17296 744opt-64icc_-march=corei7-avx_-mtune=corei7-avx_-O2_-fomit-frame-pointer2019102520191017
38180222236 16384 0236405 17296 744opt-64icc_-march=corei7_-mtune=corei7_-O2_-fomit-frame-pointer2019102520191017
38200224420 16384 0239877 17296 744opt-64icc_-march=ivybridge_-mtune=ivybridge_-O2_-fomit-frame-pointer2019102520191017
38640222204 16384 0238029 17296 744opt-64icc_-march=skylake_-mtune=skylake_-O2_-fomit-frame-pointer2019102520191017
38720222204 16384 0238029 17296 744opt-64icc_-march=core-avx2_-mtune=core-avx2_-O2_-fomit-frame-pointer2019102520191017
38840222204 16384 0238029 17296 744opt-64icc_-march=broadwell_-mtune=broadwell_-O2_-fomit-frame-pointer2019102520191017
39300222204 16384 0238029 17296 744opt-64icc_-march=haswell_-mtune=haswell_-O2_-fomit-frame-pointer2019102520191017
52100224420 16384 0239877 17296 744opt-64icc_-march=core-avx-i_-mtune=core-avx-i_-O2_-fomit-frame-pointer2019102520191017
5866071968 0 046685 872 744opt-32icc_-march=corei7_-mtune=corei7_-O3_-fomit-frame-pointer2019102520191017
5872068504 0 046357 872 744opt-32icc_-march=skylake_-mtune=skylake_-O3_-fomit-frame-pointer2019102520191017
5884068504 0 046357 872 744opt-32icc_-march=broadwell_-mtune=broadwell_-O3_-fomit-frame-pointer2019102520191017
5886073240 0 048213 872 744opt-32icc_-march=sandybridge_-mtune=sandybridge_-O3_-fomit-frame-pointer2019102520191017
5888068504 0 046357 872 744opt-32icc_-march=haswell_-mtune=haswell_-O3_-fomit-frame-pointer2019102520191017
5888073240 0 048213 872 744opt-32icc_-march=ivybridge_-mtune=ivybridge_-O3_-fomit-frame-pointer2019102520191017
5896073240 0 048213 872 744opt-32icc_-march=corei7-avx_-mtune=corei7-avx_-O3_-fomit-frame-pointer2019102520191017
5900073240 0 048213 872 744opt-32icc_-march=core-avx-i_-mtune=core-avx-i_-O3_-fomit-frame-pointer2019102520191017
5904068504 0 046357 872 744opt-32icc_-march=core-avx2_-mtune=core-avx2_-O3_-fomit-frame-pointer2019102520191017
5918072360 0 048093 872 744opt-32icc_-march=core-avx-i_-mtune=core-avx-i_-O2_-fomit-frame-pointer2019102520191017
5922072360 0 048093 872 744opt-32icc_-march=corei7-avx_-mtune=corei7-avx_-O2_-fomit-frame-pointer2019102520191017
5922072360 0 048093 872 744opt-32icc_-march=sandybridge_-mtune=sandybridge_-O2_-fomit-frame-pointer2019102520191017
5928071280 0 046581 872 744opt-32icc_-march=corei7_-mtune=corei7_-O2_-fomit-frame-pointer2019102520191017
5928072360 0 048093 872 744opt-32icc_-march=ivybridge_-mtune=ivybridge_-O2_-fomit-frame-pointer2019102520191017
5936067848 0 046685 872 744opt-32icc_-march=skylake_-mtune=skylake_-O2_-fomit-frame-pointer2019102520191017
5940067848 0 046685 872 744opt-32icc_-march=haswell_-mtune=haswell_-O2_-fomit-frame-pointer2019102520191017
5944067848 0 046685 872 744opt-32icc_-march=core-avx2_-mtune=core-avx2_-O2_-fomit-frame-pointer2019102520191017
5946067848 0 046685 872 744opt-32icc_-march=broadwell_-mtune=broadwell_-O2_-fomit-frame-pointer2019102520191017
5970049265 0 037385 832 776opt-32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
6100046304 0 033476 824 776opt-32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
6112045838 0 033092 824 776opt-32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
6420051627 0 038461 832 736opt-32clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
6460050178 0 037341 832 752opt-32clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
6464050338 0 038013 832 752opt-32clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
6468050178 0 037341 832 752opt-32clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
6508045421 0 032161 816 736opt-32clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
7580042536 0 030580 808 776opt-32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
125580010239 384 022068 1208 752refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
125724016375 384 028812 1208 736refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
125866010239 384 022068 1208 752refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
126228011983 384 024404 1208 752refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
13047204081 384 013440 1192 736refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019102520191017
255786021280 384 036758 1264 744reficc_-march=ivybridge_-mtune=ivybridge_-O2_-fomit-frame-pointer2019102520191017
256066021280 384 036758 1264 744reficc_-march=sandybridge_-mtune=sandybridge_-O2_-fomit-frame-pointer2019102520191017
256238021280 384 036758 1264 744reficc_-march=corei7-avx_-mtune=corei7-avx_-O2_-fomit-frame-pointer2019102520191017
256274021280 384 036758 1264 744reficc_-march=core-avx-i_-mtune=core-avx-i_-O2_-fomit-frame-pointer2019102520191017
257538023224 384 039070 1264 744reficc_-march=haswell_-mtune=haswell_-O2_-fomit-frame-pointer2019102520191017
257862023224 384 039070 1264 744reficc_-march=broadwell_-mtune=broadwell_-O2_-fomit-frame-pointer2019102520191017
258054023224 384 039070 1264 744reficc_-march=core-avx2_-mtune=core-avx2_-O2_-fomit-frame-pointer2019102520191017
258106019448 384 033683 1264 744reficc_-march=corei7_-mtune=corei7_-O3_-fomit-frame-pointer2019102520191017
258390023224 384 039070 1264 744reficc_-march=skylake_-mtune=skylake_-O2_-fomit-frame-pointer2019102520191017
259014023688 384 039134 1264 744reficc_-march=haswell_-mtune=haswell_-O3_-fomit-frame-pointer2019102520191017
259924023688 384 039134 1264 744reficc_-march=skylake_-mtune=skylake_-O3_-fomit-frame-pointer2019102520191017
260582021808 384 037318 1264 744reficc_-march=sandybridge_-mtune=sandybridge_-O3_-fomit-frame-pointer2019102520191017
260880023688 384 039134 1264 744reficc_-march=broadwell_-mtune=broadwell_-O3_-fomit-frame-pointer2019102520191017
261072021808 384 037318 1264 744reficc_-march=ivybridge_-mtune=ivybridge_-O3_-fomit-frame-pointer2019102520191017
261426023688 384 039134 1264 744reficc_-march=core-avx2_-mtune=core-avx2_-O3_-fomit-frame-pointer2019102520191017
261674021808 384 037318 1264 744reficc_-march=corei7-avx_-mtune=corei7-avx_-O3_-fomit-frame-pointer2019102520191017
262484021808 384 037318 1264 744reficc_-march=core-avx-i_-mtune=core-avx-i_-O3_-fomit-frame-pointer2019102520191017
262554019096 384 033275 1264 744reficc_-march=corei7_-mtune=corei7_-O2_-fomit-frame-pointer2019102520191017
35569005336 384 015511 1208 776refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
359970015112 384 027524 1216 776refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
41773003794 384 012951 1192 776refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017
42635804575 384 014599 1208 776refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019102520191017

Test failure

Implementation: opt-32
Security model: unknown
Compiler: icc -march=cannonlake -mtune=cannonlake -O2 -fomit-frame-pointer
error 111

Number of similar (compiler,implementation) pairs: 18, namely:
CompilerImplementations
icc -march=cannonlake -mtune=cannonlake -O2 -fomit-frame-pointer opt-32
icc -march=cannonlake -mtune=cannonlake -O3 -fomit-frame-pointer opt-32
icc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer opt-32
icc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer opt-32
icc -march=skylake-avx512 -mtune=skylake-avx512 -O2 -fomit-frame-pointer opt-32
icc -march=skylake-avx512 -mtune=skylake-avx512 -O3 -fomit-frame-pointer opt-32
icc -march=cannonlake -mtune=cannonlake -O2 -fomit-frame-pointer opt-64
icc -march=cannonlake -mtune=cannonlake -O3 -fomit-frame-pointer opt-64
icc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer opt-64
icc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer opt-64
icc -march=skylake-avx512 -mtune=skylake-avx512 -O2 -fomit-frame-pointer opt-64
icc -march=skylake-avx512 -mtune=skylake-avx512 -O3 -fomit-frame-pointer opt-64
icc -march=cannonlake -mtune=cannonlake -O2 -fomit-frame-pointer ref
icc -march=cannonlake -mtune=cannonlake -O3 -fomit-frame-pointer ref
icc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer ref
icc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer ref
icc -march=skylake-avx512 -mtune=skylake-avx512 -O2 -fomit-frame-pointer ref
icc -march=skylake-avx512 -mtune=skylake-avx512 -O3 -fomit-frame-pointer ref

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
hash.c: hash.c:239:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:238:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:240:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:238:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:241:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:238:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: inline void F1024(u64 *h, const u64 *m) {
hash.c: ^
hash.c: static
hash.c: hash.c:242:3: warning: non-constant static local variable in inline function may be different in different files [-Wstatic-local-in-inline]
hash.c: static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c: hash.c:238:1: note: use 'static' to give inline function 'F1024' internal linkage
hash.c: ...

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

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c:242:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 242 | static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~
hash.c: hash.c:241:14: warning: 'outQ' is static but declared in inline function 'F1024' which is not static
hash.c: 241 | static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~~
hash.c: hash.c:240:14: warning: 'z' is static but declared in inline function 'F1024' which is not static
hash.c: 240 | static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
hash.c: hash.c:239:14: warning: 'y' is static but declared in inline function 'F1024' which is not static
hash.c: 239 | static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt-64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE opt-64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE opt-64

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c:242:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 242 | static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~
hash.c: hash.c:241:14: warning: 'outQ' is static but declared in inline function 'F1024' which is not static
hash.c: 241 | static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~~
hash.c: hash.c:240:14: warning: 'z' is static but declared in inline function 'F1024' which is not static
hash.c: 240 | static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
hash.c: hash.c:239:14: warning: 'y' is static but declared in inline function 'F1024' which is not static
hash.c: 239 | static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Update':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Final':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /software/compilers/gcc/gcc-9.2.0-full+isl+binutils/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: hash.c:(.text+0x...): undefined reference to `F512'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt-64

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: icc -march=broadwell -mtune=broadwell -O2 -fomit-frame-pointer
hash.c: hash.c(242): warning #1172: a variable with static storage duration cannot be defined within an inline function
hash.c: static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c:
hash.c: hash.c(241): warning #1172: a variable with static storage duration cannot be defined within an inline function
hash.c: static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c:
hash.c: hash.c(240): warning #1172: a variable with static storage duration cannot be defined within an inline function
hash.c: static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c:
hash.c: hash.c(239): warning #1172: a variable with static storage duration cannot be defined within an inline function
hash.c: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^
hash.c:

Number of similar (compiler,implementation) pairs: 24, namely:
CompilerImplementations
icc -march=broadwell -mtune=broadwell -O2 -fomit-frame-pointer opt-64
icc -march=broadwell -mtune=broadwell -O3 -fomit-frame-pointer opt-64
icc -march=cannonlake -mtune=cannonlake -O2 -fomit-frame-pointer opt-64
icc -march=cannonlake -mtune=cannonlake -O3 -fomit-frame-pointer opt-64
icc -march=core-avx-i -mtune=core-avx-i -O2 -fomit-frame-pointer opt-64
icc -march=core-avx-i -mtune=core-avx-i -O3 -fomit-frame-pointer opt-64
icc -march=core-avx2 -mtune=core-avx2 -O2 -fomit-frame-pointer opt-64
icc -march=core-avx2 -mtune=core-avx2 -O3 -fomit-frame-pointer opt-64
icc -march=corei7-avx -mtune=corei7-avx -O2 -fomit-frame-pointer opt-64
icc -march=corei7-avx -mtune=corei7-avx -O3 -fomit-frame-pointer opt-64
icc -march=corei7 -mtune=corei7 -O2 -fomit-frame-pointer opt-64
icc -march=corei7 -mtune=corei7 -O3 -fomit-frame-pointer opt-64
icc -march=haswell -mtune=haswell -O2 -fomit-frame-pointer opt-64
icc -march=haswell -mtune=haswell -O3 -fomit-frame-pointer opt-64
icc -march=icelake-client -mtune=icelake-client -O2 -fomit-frame-pointer opt-64
icc -march=icelake-client -mtune=icelake-client -O3 -fomit-frame-pointer opt-64
icc -march=ivybridge -mtune=ivybridge -O2 -fomit-frame-pointer opt-64
icc -march=ivybridge -mtune=ivybridge -O3 -fomit-frame-pointer opt-64
icc -march=sandybridge -mtune=sandybridge -O2 -fomit-frame-pointer opt-64
icc -march=sandybridge -mtune=sandybridge -O3 -fomit-frame-pointer opt-64
icc -march=skylake-avx512 -mtune=skylake-avx512 -O2 -fomit-frame-pointer opt-64
icc -march=skylake-avx512 -mtune=skylake-avx512 -O3 -fomit-frame-pointer opt-64
icc -march=skylake -mtune=skylake -O2 -fomit-frame-pointer opt-64
icc -march=skylake -mtune=skylake -O3 -fomit-frame-pointer opt-64