Implementation notes: aarch64, hikey960, crypto_hash/mgrostl256

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: mgrostl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
2664953046 16384 062790 17344 744opt-64gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
4162051973 16384 062305 17352 744opt-64gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
4162551825 16384 062089 17352 744opt-64gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
4162562801 16384 074786 17360 776opt-64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
4441553038 16384 062750 17344 744opt-64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
4995060201 16384 070505 17352 744opt-64gcc_-O2_-fomit-frame-pointer2019112620190816
7492553046 16384 062790 17344 744opt-64gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
7492560257 16384 070561 17352 744opt-64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
7994748614 0 034013 912 744opt-32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
8185161573 16384 075186 17360 776opt-64gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
8325056242 0 040250 936 776opt-32gcc_-O3_-fomit-frame-pointer2019112620190816
8325049382 0 035041 928 744opt-32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
8325053050 16384 062758 17344 744opt-64gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
8325068157 16384 081802 17360 776opt-64gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
8326056558 0 041833 928 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
8326049322 0 034985 928 744opt-32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
8326053593 16384 066945 17352 744opt-64gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
8742360921 16384 074233 17352 744opt-64gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
9158655238 0 039074 840 760opt-32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112620190816
9346053881 16384 067417 17352 744opt-64gcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
10822563133 16384 075122 17360 776opt-64gcc_-O3_-fomit-frame-pointer2019112620190816
10822556517 16384 068482 17360 776opt-64gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
11655053050 16384 062758 17344 744opt-64gcc_-Os_-fomit-frame-pointer2019112620190816
12487553881 16384 067417 17352 744opt-64gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
12905357262 0 042025 928 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
13320056558 0 041833 928 744opt-32gcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
13320053529 16384 063865 17352 744opt-64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
14985063042 0 045306 936 776opt-32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
15817549262 0 034953 928 744opt-32gcc_-O2_-fomit-frame-pointer2019112620190816
16650055222 0 039042 840 760opt-32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112620190816
16650063218 0 045362 936 776opt-32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
17482548670 0 034069 912 744opt-32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
23310049230 0 034897 928 744opt-32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
23310051973 16384 062305 17352 744opt-64gcc_-O_-fomit-frame-pointer2019112620190816
23312856258 0 040234 936 776opt-32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
23365055238 0 039074 840 760opt-32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112620190816
23365056334 0 040290 936 776opt-32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
24142548614 0 034013 912 744opt-32gcc_-Os_-fomit-frame-pointer2019112620190816
24561748606 0 034005 912 744opt-32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
27472549382 0 035041 928 744opt-32gcc_-O_-fomit-frame-pointer2019112620190816
29137556846 0 041777 928 744opt-32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
30802555238 0 039074 840 760opt-32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112620190816
30802599750 0 062509 912 744opt-32gcc_-funroll-loops2019112620190816
32467548670 0 034069 912 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
49117599750 0 062509 912 744opt-32gcc2019112620190816
52447549470 0 035089 928 744opt-32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
109057599750 0 062509 912 744opt-32cc2019112620190816
12347373268 384 012868 1288 744refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
15189934169 384 014400 1304 744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
155677510620 384 021913 1216 760refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112620190816
17943663901 384 014160 1304 744refgcc_-O_-fomit-frame-pointer2019112620190816
243394216057 384 027985 1320 776refgcc_-O3_-fomit-frame-pointer2019112620190816
245170815993 384 027889 1320 776refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
245587510620 384 021913 1216 760refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112620190816
26473503244 384 012812 1288 744refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
26640003216 384 012780 1288 744refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
278088416145 384 028057 1320 776refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
279720011873 384 025112 1304 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
280552522913 384 036457 1320 776refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
28721254137 384 014368 1304 744refgcc_-O2_-fomit-frame-pointer2019112620190816
35298003268 384 012868 1288 744refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
358807510656 384 021929 1216 760refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112620190816
360472510620 384 021913 1216 760refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112620190816
462870011817 384 025096 1304 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
48784503244 384 012812 1288 744refgcc_-Os_-fomit-frame-pointer2019112620190816
48784504089 384 014280 1304 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
516982510829 384 024288 1304 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
526140010829 384 024288 1304 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
54528753901 384 014160 1304 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
56693253957 384 014224 1304 744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
653638722961 384 036537 1320 776refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
98817759805 384 022324 1288 744refgcc2019112620190816
99317259805 384 022324 1288 744refgcc_-funroll-loops2019112620190816
174492009805 384 022324 1288 744refcc2019112620190816

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: cc
hash.c: hash.c:242:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 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: 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: 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: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^
try.c: 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
cc opt-64
gcc opt-64
gcc -funroll-loops opt-64

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
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: ...
try.c: crypto_hash_mgrostl256.a(hash.o): In function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: crypto_hash_mgrostl256.a(hash.o): In function `Update':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: crypto_hash_mgrostl256.a(hash.o): In function `Final':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: clang: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments opt-64
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments opt-64
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments opt-64
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments opt-64

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: gcc -O2 -fomit-frame-pointer
hash.c: hash.c:242:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 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: 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: 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: static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: ^

Number of similar (compiler,implementation) pairs: 20, namely:
CompilerImplementations
gcc -O2 -fomit-frame-pointer opt-64
gcc -O3 -fomit-frame-pointer opt-64
gcc -O -fomit-frame-pointer opt-64
gcc -Os -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -O2 -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -O3 -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -O -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -Os -fomit-frame-pointer opt-64
gcc -funroll-loops -O2 -fomit-frame-pointer opt-64
gcc -funroll-loops -O3 -fomit-frame-pointer opt-64
gcc -funroll-loops -O -fomit-frame-pointer opt-64
gcc -funroll-loops -Os -fomit-frame-pointer opt-64
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer opt-64
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer opt-64
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer opt-64
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer opt-64
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv opt-64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv opt-64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv opt-64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv opt-64