Implementation notes: amd64, renoir, crypto_hash/mgrostl256

Computer: renoir
Microarchitecture: amd64; Zen 2 (860f01)
Architecture: amd64
CPU ID: AuthenticAMD-00860f01-178bfbff
SUPERCOP version: 20240107
Operation: crypto_hash
Primitive: mgrostl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
6038246881 0 034832 796 952T:opt-32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
6040645852 0 033815 788 952T:opt-32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
6086249105 0 037720 796 952T:opt-32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
6660747722 0 034382 820 888T:opt-32clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
6665855010 0 040878 836 888T:opt-32clang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
6708849329 0 037854 836 920T:opt-32clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
6719149041 0 037566 836 920T:opt-32clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
6835142598 0 031227 772 920T:opt-32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
7214045191 0 033358 820 888T:opt-32clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
12402439919 384 022673 1220 920T:refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
12423218743 384 021353 1220 920T:refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
125436815943 384 028961 1220 888T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
12762924676 384 015321 1204 888T:refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
13126774288 384 014665 1204 888T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2023121320231212
35300105352 384 016471 1180 952T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
375054515552 384 028383 1180 952T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
40286673865 384 013642 1156 920T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212
40915774561 384 015310 1172 952T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2023121320231212

Compiler output

Implementation: T:opt-64
Security model: timingleaks
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: ...
try.c: /usr/bin/ld: libcrypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: libcrypto_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: libcrypto_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: 3, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt-64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt-64
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt-64

Compiler output

Implementation: T:opt-64
Security model: timingleaks
Compiler: clang -march=native -O -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: ...
try.c: /usr/bin/ld: libcrypto_hash_mgrostl256.a(hash.o): in function `Transform':
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: 2, namely:
CompilerImplementations
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt-64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE T:opt-64

Compiler output

Implementation: T:opt-64
Security model: timingleaks
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: /usr/bin/ld: libcrypto_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 T:opt-64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:opt-64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:opt-64

Compiler output

Implementation: T:opt-64
Security model: timingleaks
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: /usr/bin/ld: libcrypto_hash_mgrostl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: libcrypto_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: libcrypto_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: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:opt-64