Implementation notes: aarch64, supercoplxc, crypto_hash/mgrostl256

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: mgrostl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
19160057250 0 042121 912 760opt-32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019090120190816
19560057046 0 041304 904 744opt-32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019090120190816
20272050698 0 036032 904 744opt-32gcc_-O2_-fomit-frame-pointer2019090120190816
20336053582 0 043017 912 760opt-32gcc_-O3_-fomit-frame-pointer2019090120190816
20600057170 0 042041 912 760opt-32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090120190816
20728057446 0 041592 904 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090120190816
22008049662 0 034872 888 736opt-32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019090120190816
22056049662 0 034872 888 736opt-32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090120190816
22272062422 0 044324 824 768opt-32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090120190816
22280062422 0 044324 824 768opt-32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090120190816
22288062422 0 044324 824 768opt-32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090120190816
22424062430 0 044276 824 768opt-32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090120190816
24216062014 0 044124 824 768opt-32clang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090120190816
28984053406 0 042897 912 760opt-32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090120190816
29640050506 0 035880 904 744opt-32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090120190816
30328049518 0 034736 888 736opt-32gcc_-Os_-fomit-frame-pointer2019090120190816
30328049518 0 034736 888 736opt-32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090120190816
34992058022 0 042992 904 744opt-32gcc_-funroll-loops_-O_-fomit-frame-pointer2019090120190816
35032058022 0 042992 904 744opt-32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090120190816
35504050774 0 036152 904 744opt-32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090120190816
35512050774 0 036152 904 744opt-32gcc_-O_-fomit-frame-pointer2019090120190816
1269360100670 0 063280 888 744opt-32cc2019090120190816
1269520100670 0 063280 888 744opt-32gcc2019090120190816
1269840100670 0 063280 888 744opt-32gcc_-funroll-loops2019090120190816
255424012144 384 025039 1200 768refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019090120190816
27067209796 384 022743 1200 768refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019090120190816
27071209796 384 022743 1200 768refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019090120190816
27172009796 384 022743 1200 768refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019090120190816
27429609752 384 022703 1200 768refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019090120190816
371656012793 384 025439 1280 744refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019090120190816
379272016377 384 029608 1296 760refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019090120190816
394264013209 384 025072 1296 760refgcc_-O3_-fomit-frame-pointer2019090120190816
41323204777 384 015351 1280 744refgcc_-O2_-fomit-frame-pointer2019090120190816
425088016233 384 029432 1296 760refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090120190816
436232012689 384 025431 1280 744refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090120190816
475208013105 384 024944 1296 760refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019090120190816
49463204705 384 015223 1280 744refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019090120190816
50791203700 384 013575 1264 736refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090120190816
50802403700 384 013575 1264 736refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019090120190816
52654403700 384 013511 1264 736refgcc_-Os_-fomit-frame-pointer2019090120190816
52671203700 384 013511 1264 736refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019090120190816
590720012461 384 026335 1280 744refgcc_-funroll-loops_-O_-fomit-frame-pointer2019090120190816
593384012461 384 026335 1280 744refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019090120190816
62640004397 384 015055 1280 744refgcc_-O_-fomit-frame-pointer2019090120190816
62656004397 384 015055 1280 744refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019090120190816
3007368010217 384 027143 1264 744refcc2019090120190816
3025656010217 384 027143 1264 744refgcc2019090120190816
3037576010217 384 027143 1264 744refgcc_-funroll-loops2019090120190816

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: 15, 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

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: 4, 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