Implementation notes: aarch64, rockpi4, crypto_hash/mgrostl256

Computer: rockpi4
Architecture: aarch64
CPU ID: unknown CPU ID
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: mgrostl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
11233653406 0 043415 912 760opt-32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
11274957046 0 041822 904 744opt-32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019091120190816
11274957250 0 042639 912 760opt-32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019091120190816
11357558022 0 043510 904 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
11398853666 0 043687 912 760opt-32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
11481450506 0 036398 904 744opt-32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
11522750774 0 036670 904 744opt-32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
11564050698 0 036558 904 744opt-32gcc_-O2_-fomit-frame-pointer2019091120190816
11811862430 0 044802 824 768opt-32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091120190816
11853162422 0 044850 824 768opt-32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091120190816
11935762422 0 044850 824 768opt-32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091120190816
12431349518 0 035254 888 736opt-32gcc_-Os_-fomit-frame-pointer2019091120190816
12431349510 0 035254 888 736opt-32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
15404953582 0 043535 912 760opt-32gcc_-O3_-fomit-frame-pointer2019091120190816
15694050818 0 036726 904 744opt-32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
16437457170 0 042567 912 760opt-32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
16561357446 0 042118 904 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
17593849662 0 035390 888 736opt-32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019091120190816
17593849662 0 035390 888 736opt-32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
17759062422 0 044850 824 768opt-32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091120190816
19369762014 0 044642 824 768opt-32clang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
24201849518 0 035254 888 736opt-32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
27918858022 0 043510 904 744opt-32gcc_-funroll-loops_-O_-fomit-frame-pointer2019091120190816
28331850774 0 036670 904 744opt-32gcc_-O_-fomit-frame-pointer2019091120190816
28331850734 0 036654 904 744opt-32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
322140100670 0 063806 888 744opt-32gcc2019091120190816
1015154100670 0 063806 888 744opt-32gcc_-funroll-loops2019091120190816
1015980100670 0 063806 888 744opt-32cc2019091120190816
141659012144 384 025565 1200 768refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019091120190816
14901049796 384 023261 1200 768refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019091120190816
15384259752 384 023229 1200 768refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019091120190816
188369316377 384 030126 1296 760refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019091120190816
191632013209 384 025598 1296 760refgcc_-O3_-fomit-frame-pointer2019091120190816
194357812689 384 025949 1280 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
199850713105 384 025462 1296 760refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
20740864937 384 016141 1280 744refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019091120190816
21393409796 384 023261 1200 768refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019091120190816
21401669796 384 023261 1200 768refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019091120190816
21641204705 384 015749 1280 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019091120190816
22425903700 384 014101 1264 736refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019091120190816
22603493720 384 014053 1264 736refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019091120190816
293766912793 384 025957 1280 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019091120190816
314169113217 384 025702 1296 760refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019091120190816
32965664777 384 015877 1280 744refgcc_-O2_-fomit-frame-pointer2019091120190816
340353316233 384 029950 1296 760refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019091120190816
40717673700 384 014101 1264 736refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
42014493700 384 014037 1264 736refgcc_-Os_-fomit-frame-pointer2019091120190816
42307723700 384 014037 1264 736refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019091120190816
471976412461 384 026853 1280 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019091120190816
474289212461 384 026853 1280 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
50216674437 384 015605 1280 744refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019091120190816
50229064397 384 015573 1280 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019091120190816
50262104397 384 015573 1280 744refgcc_-O_-fomit-frame-pointer2019091120190816
1282943210217 384 027669 1264 744refgcc_-funroll-loops2019091120190816
2414769710217 384 027669 1264 744refgcc2019091120190816
2417206410217 384 027669 1264 744refcc2019091120190816

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: /usr/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: 18, namely:
CompilerImplementations
cc opt-64
gcc opt-64
gcc -O2 -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 -O -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -Os -fomit-frame-pointer opt-64
gcc -funroll-loops opt-64
gcc -funroll-loops -O2 -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 -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 -O -fomit-frame-pointer -fwrapv opt-64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv 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: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Update':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Final':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: 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: 5, 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
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments opt-64

Compiler output

Implementation: opt-64
Security model: unknown
Compiler: gcc -O3 -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: ^
try.c: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Update':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_mgrostl256.a(hash.o): in function `Final':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/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: 5, namely:
CompilerImplementations
gcc -O3 -fomit-frame-pointer opt-64
gcc -fno-schedule-insns -O3 -fomit-frame-pointer opt-64
gcc -funroll-loops -O3 -fomit-frame-pointer opt-64
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer opt-64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv opt-64