Implementation notes: riscv64, hifiveunleashedriscv, crypto_hash/groestl256

Computer: hifiveunleashedriscv
Architecture: riscv64
CPU ID: unknown CPU ID
SUPERCOP version: 20191221
Operation: crypto_hash
Primitive: groestl256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
20372540500 0 046282 720 728sphlibgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
20913343548 0 049338 720 728sphlib-adaptedgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
22350139872 0 045972 736 728sphlibgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
22554543330 0 049438 736 728sphlib-adaptedgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
28557918104 0 023870 720 728sphlib-smallgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
29596018364 0 024472 736 728sphlib-smallgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
32729860436 0 068028 736 728sphlibgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
32885858606 0 064810 736 728sphlibgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
33354663234 0 069446 736 728sphlib-adaptedgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
35707264296 0 071896 736 728sphlib-adaptedgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
41749823912 0 031512 736 728sphlib-smallgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
42656622118 0 028330 736 728sphlib-smallgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
43393728629 0 036260 752 728opt32gcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
43974826133 0 032339 744 728opt32gcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
58433923583 0 029411 728 728opt32gcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
61587211066 0 016791 712 72832bit-2ktablegcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
62151623795 0 029897 744 728opt32gcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
68388013778 0 021334 736 72832bit-2ktablegcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
68812712492 0 018599 728 72832bit-2ktablegcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
7508314076 0 011708 736 7288bit_cgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
77737711664 0 017663 728 72832bit-2ktablegcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
7778653842 0 010074 736 7288bit_cgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
8093174754 0 012458 736 72832bit-bytesliced-c-smallgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
8260243754 0 09604 720 7288bit_cgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
8861005972 0 013598 736 72832bit-bytesliced-c-fastgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
9121663080 0 09265 728 72832bit-bytesliced-c-fastgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
9308562430 0 08165 712 72832bit-bytesliced-c-fastgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
9659283822 0 09950 736 7288bit_cgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
10015142586 0 08601 728 72832bit-bytesliced-c-fastgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
13183551636 0 07879 728 72832bit-bytesliced-c-smallgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
13515901510 0 07359 712 72832bit-bytesliced-c-smallgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
18935901976 0 08043 728 72832bit-bytesliced-c-smallgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221

Compiler output

Implementation: opt64
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c:194:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 194 | static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~
hash.c: hash.c:193:14: warning: 'outQ' is static but declared in inline function 'F1024' which is not static
hash.c: 193 | static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~~
hash.c: hash.c:192:14: warning: 'z' is static but declared in inline function 'F1024' which is not static
hash.c: 192 | static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
hash.c: hash.c:191:14: warning: 'y' is static but declared in inline function 'F1024' which is not static
hash.c: 191 | static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `Transform':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
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: 2, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt64
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE opt64

Compiler output

Implementation: opt64
Security model: unknown
Compiler: gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c:194:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 194 | static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~
hash.c: hash.c:193:14: warning: 'outQ' is static but declared in inline function 'F1024' which is not static
hash.c: 193 | static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~~
hash.c: hash.c:192:14: warning: 'z' is static but declared in inline function 'F1024' which is not static
hash.c: 192 | static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
hash.c: hash.c:191:14: warning: 'y' is static but declared in inline function 'F1024' which is not static
hash.c: 191 | static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L11':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L15':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L35':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L69':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L42':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L45':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L74':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L106':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L94':
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=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt64

Compiler output

Implementation: opt64
Security model: unknown
Compiler: gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: hash.c:194:14: warning: 'inP' is static but declared in inline function 'F1024' which is not static
hash.c: 194 | static u64 inP[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~
hash.c: hash.c:193:14: warning: 'outQ' is static but declared in inline function 'F1024' which is not static
hash.c: 193 | static u64 outQ[COLS1024] __attribute__((aligned(16)));
hash.c: | ^~~~
hash.c: hash.c:192:14: warning: 'z' is static but declared in inline function 'F1024' which is not static
hash.c: 192 | static u64 z[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
hash.c: hash.c:191:14: warning: 'y' is static but declared in inline function 'F1024' which is not static
hash.c: 191 | static u64 y[COLS1024] __attribute__((aligned(16)));
hash.c: | ^
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L8':
try.c: hash.c:(.text+0x...): undefined reference to `F512'
try.c: /usr/bin/ld: crypto_hash_groestl256.a(hash.o): in function `.L9':
try.c: hash.c:(.text+0x...): undefined reference to `F1024'
try.c: collect2: error: ld returned 1 exit status

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE opt64

Compiler output

Implementation: vperm-intr
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.c: In file included from hash.c:34:
hash.c: groestl-intr-vperm.h:13:10: fatal error: tmmintrin.h: No such file or directory
hash.c: 13 | #include <tmmintrin.h>
hash.c: | ^~~~~~~~~~~~~
hash.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE vperm-intr
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE vperm-intr
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE vperm-intr
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE vperm-intr

Namespace violations

Implementation: 32bit-2ktable
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.o F512 T
hash.o Final T
hash.o Hash T
hash.o Init T
hash.o OutputTransformation T
hash.o RND512P T
hash.o RND512Q T
hash.o T R
hash.o Transform T
hash.o Update T
hash.o indices_cyclic R
hash.o shift_Values R

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-2ktable
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-2ktable
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-2ktable
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-2ktable

Namespace violations

Implementation: 32bit-bytesliced-c-fast
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.o F512 T
hash.o MUL2_32Bit T
hash.o P T
hash.o Q T
hash.o RND512P T
hash.o RND512Q T
hash.o S R
hash.o mixBytes T
hash.o mix_bytes_half_state T
hash.o rotate_line_left T
hash.o subBytes T

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-fast
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-fast
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-fast
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-fast

Namespace violations

Implementation: 32bit-bytesliced-c-small
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.o memxor T
hash.o mixbytes T
hash.o permutation T
hash.o setmessage T

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-small
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-small
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-small
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE 32bit-bytesliced-c-small

Namespace violations

Implementation: 8bit_c
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.o mix_bytes T
hash.o mul2 R
hash.o perm_P T
hash.o perm_Q T
hash.o sbox R

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE 8bit_c
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE 8bit_c
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE 8bit_c
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE 8bit_c

Namespace violations

Implementation: opt32
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
hash.o F1024 T
hash.o F512 T
hash.o Final T
hash.o Hash T
hash.o Init T
hash.o OutputTransformation T
hash.o PrintHash T
hash.o RND1024P T
hash.o RND1024Q T
hash.o RND512P T
hash.o RND512Q T
hash.o T R
hash.o Transform T
hash.o Update T

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt32
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE opt32
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE opt32
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE opt32

Namespace violations

Implementation: sphlib
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
groestl.o sph_groestl224 T
groestl.o sph_groestl224_addbits_and_close T
groestl.o sph_groestl224_close T
groestl.o sph_groestl224_init T
groestl.o sph_groestl256 T
groestl.o sph_groestl256_addbits_and_close T
groestl.o sph_groestl256_close T
groestl.o sph_groestl256_init T
groestl.o sph_groestl384 T
groestl.o sph_groestl384_addbits_and_close T
groestl.o sph_groestl384_close T
groestl.o sph_groestl384_init T
groestl.o sph_groestl512 T
groestl.o sph_groestl512_addbits_and_close T
groestl.o sph_groestl512_close T
groestl.o sph_groestl512_init T

Number of similar (compiler,implementation) pairs: 12, namely:
CompilerImplementations
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-adapted
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-adapted
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-adapted
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-adapted
gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-small
gcc -march=rv64gc -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-small
gcc -march=rv64gc -O -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-small
gcc -march=rv64gc -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE sphlib-small