Implementation notes: riscv64, hifiveunleashedriscv, crypto_stream/chacha12

Computer: hifiveunleashedriscv
Architecture: riscv64
CPU ID: unknown CPU ID
SUPERCOP version: 20191221
Operation: crypto_stream
Primitive: chacha12
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
289363916 0 413036 752 792e/regsgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
315702576 0 411692 752 792e/refgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
401272002 0 49569 744 792e/regsgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
407992966 0 49903 728 792e/mergedgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
429293282 0 410677 744 792e/mergedgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
433133788 0 411365 744 792e/mergedgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
440544432 0 413556 752 792e/mergedgcc_-march=rv64gc_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
505881866 0 48799 728 792e/regsgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
512751968 0 49535 744 792e/refgcc_-march=rv64gc_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
514392604 0 49999 744 792e/regsgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
623641962 0 48895 728 792e/refgcc_-march=rv64gc_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221
654782238 0 49633 744 792e/refgcc_-march=rv64gc_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019123020191221

Compiler output

Implementation: amd64-ssse3
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
chacha.s: chacha.s: Assembler messages:
chacha.s: chacha.s:19: Error: unrecognized opcode `mov %rsp,%r11'
chacha.s: chacha.s:20: Error: illegal operands `and $31,%r11'
chacha.s: chacha.s:21: Error: illegal operands `add $384,%r11'
chacha.s: chacha.s:22: Error: illegal operands `sub %r11,%rsp'
chacha.s: chacha.s:23: Error: unrecognized opcode `mov %rdi,%r8'
chacha.s: chacha.s:24: Error: unrecognized opcode `mov %rsi,%rsi'
chacha.s: chacha.s:25: Error: unrecognized opcode `mov %rsi,%rdi'
chacha.s: chacha.s:26: Error: unrecognized opcode `mov %rdx,%rdx'
chacha.s: chacha.s:27: Error: unrecognized opcode `cmp $0,%rdx'
chacha.s: chacha.s:29: Error: unrecognized opcode `jbe ._done'
chacha.s: chacha.s:31: Error: unrecognized opcode `mov $0,%rax'
chacha.s: chacha.s:33: Error: unrecognized opcode `mov %rdx,%rcx'
chacha.s: chacha.s:35: Error: unrecognized opcode `rep stosb'
chacha.s: chacha.s:37: Error: illegal operands `sub %rdx,%rdi'
chacha.s: chacha.s:39: Error: unrecognized opcode `jmp ._start'
chacha.s: chacha.s:47: Error: unrecognized opcode `mov %rsp,%r11'
chacha.s: chacha.s:48: Error: illegal operands `and $31,%r11'
chacha.s: chacha.s:49: Error: illegal operands `add $384,%r11'
chacha.s: chacha.s:50: Error: illegal operands `sub %r11,%rsp'
chacha.s: chacha.s:52: Error: unrecognized opcode `mov %rdi,%r8'
chacha.s: chacha.s:54: Error: unrecognized opcode `mov %rsi,%rsi'
chacha.s: chacha.s:56: Error: unrecognized opcode `mov %rdx,%rdi'
chacha.s: chacha.s:58: Error: unrecognized opcode `mov %rcx,%rdx'
chacha.s: chacha.s:60: Error: unrecognized opcode `cmp $0,%rdx'
chacha.s: ...

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

Compiler output

Implementation: dolbeau/mipsel-msa
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
chacha.c: chacha.c:12:10: fatal error: arm_neon.h: No such file or directory
chacha.c: 12 | #include <arm_neon.h>
chacha.c: | ^~~~~~~~~~~~
chacha.c: compilation terminated.

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

Compiler output

Implementation: goll_gueron
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
stream.c: stream.c:11:10: fatal error: immintrin.h: No such file or directory
stream.c: 11 | #include <immintrin.h>
stream.c: | ^~~~~~~~~~~~~
stream.c: compilation terminated.

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

Compiler output

Implementation: krovetz/avx2
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
stream.c: stream.c:8:10: fatal error: immintrin.h: No such file or directory
stream.c: 8 | #include <immintrin.h>
stream.c: | ^~~~~~~~~~~~~
stream.c: compilation terminated.

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

Compiler output

Implementation: krovetz/vec128
Security model: unknown
Compiler: gcc -march=rv64gc -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
stream.c: stream.c:80:2: error: #error -- Implementation supports only machines with neon, altivec or SSE2
stream.c: 80 | #error -- Implementation supports only machines with neon, altivec or SSE2
stream.c: | ^~~~~
stream.c: stream.c: In function 'crypto_stream_chacha12_krovetz_vec128_xor':
stream.c: stream.c:151:14: warning: implicit declaration of function 'NONCE' [-Wimplicit-function-declaration]
stream.c: 151 | vec s3 = NONCE(np);
stream.c: | ^~~~~
stream.c: stream.c:151:14: error: incompatible types when initializing type 'vec' {aka '__vector(4) unsigned int'} using type 'int'
stream.c: stream.c:91:19: error: 'VBPI' undeclared (first use in this function); did you mean 'BPI'?
stream.c: 91 | #define BPI (VBPI + GPR_TOO) /* Blocks computed per loop iteration */
stream.c: | ^~~~
stream.c: stream.c:152:36: note: in expansion of macro 'BPI'
stream.c: 152 | for (iters = 0; iters < inlen/(BPI*64); iters++) {
stream.c: | ^~~
stream.c: stream.c:91:19: note: each undeclared identifier is reported only once for each function it appears in
stream.c: 91 | #define BPI (VBPI + GPR_TOO) /* Blocks computed per loop iteration */
stream.c: | ^~~~
stream.c: stream.c:152:36: note: in expansion of macro 'BPI'
stream.c: 152 | for (iters = 0; iters < inlen/(BPI*64); iters++) {
stream.c: | ^~~
stream.c: stream.c:91:26: error: 'GPR_TOO' undeclared (first use in this function)
stream.c: 91 | #define BPI (VBPI + GPR_TOO) /* Blocks computed per loop iteration */
stream.c: | ^~~~~~~
stream.c: stream.c:152:36: note: in expansion of macro 'BPI'
stream.c: 152 | for (iters = 0; iters < inlen/(BPI*64); iters++) {
stream.c: ...

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