Implementation notes: aarch64, pmnod145, crypto_stream/chacha20

Computer: pmnod145
Architecture: aarch64
CPU ID: 431f0af1
SUPERCOP version: 20191017
Operation: crypto_stream
Primitive: chacha20
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
1012514404 0 130704 864 816dolbeau/generic-gccsimd256armclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
1022515192 0 132208 864 824dolbeau/generic-gccsimd256armclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
118757996 0 420302 856 808dolbeau/generic-gccsimd256gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
119258596 0 422147 864 824dolbeau/generic-gccsimd256gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
137503212 0 416747 864 824e/mergedgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
139751928 0 413274 840 800e/mergedgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
140252268 0 414534 856 808e/mergedgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
140502804 0 416339 864 824e/refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
141254612 0 418163 864 824e/regsgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
1477511160 0 128208 864 824dolbeau/arm-neonarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
147753820 0 416110 856 808dolbeau/arm-neongcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
148003168 0 414514 840 800dolbeau/arm-neongcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
148754516 0 418043 864 824dolbeau/arm-neongcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
1490010372 0 126704 864 816dolbeau/arm-neonarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
149254068 0 416390 856 808dolbeau/arm-neongcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
1505010820 0 127152 864 816dolbeau/generic-gccsimd128armclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
1505011544 0 128592 864 824dolbeau/generic-gccsimd128armclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
152003284 0 414642 840 800dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
155504612 0 418155 864 824dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
158003900 0 416206 856 808dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
159504156 0 416486 856 808dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
162506772 0 418138 840 800dolbeau/generic-gccsimd256gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
167257720 0 420046 856 808dolbeau/generic-gccsimd256gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
173757200 0 123552 864 816e/mergedarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
176757200 0 124256 864 824e/mergedarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
178757684 0 124032 864 816e/regsarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
178757704 0 124768 864 824e/regsarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
185257576 0 124640 864 824e/refarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O3_-fPIC_-fPIE2019101820191017
196502028 0 414302 856 808e/regsgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
205506916 0 123264 864 816e/refarmclang_-march=armv8a+crypto_-mcpu=thunderx2t99_-mtune=thunderx2t99_-O2_-fPIC_-fPIE2019101820191017
207753544 0 415830 856 808e/mergedgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
218001800 0 413146 840 800e/regsgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
236001996 0 414270 856 808e/refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
241002948 0 415246 856 808e/regsgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
252501664 0 413010 840 800e/refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017
268002424 0 414718 856 808e/refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019101820191017

Compiler output

Implementation: dolbeau/arm-sve
Security model: unknown
Compiler: armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O2 -fPIC -fPIE
chacha.c: In file included from chacha.c:12:
chacha.c: /dibona_home_nfs/rdolbeau/opt/arm/arm-hpc-compiler-19.3_Generic-AArch64_RHEL-7_aarch64-linux/lib/clang/7.1.0/include/arm_sve.h:28:2: error: "SVE support not enabled"
chacha.c: #error "SVE support not enabled"
chacha.c: ^
chacha.c: In file included from chacha.c:95:
chacha.c: ./uX.h:21:9: error: expected ';' after expression
chacha.c: uint64_t vc = svcntb(); /* how many bytes in a vector */
chacha.c: ^
chacha.c: ;
chacha.c: ./uX.h:21:1: error: use of undeclared identifier 'uint64_t'
chacha.c: uint64_t vc = svcntb(); /* how many bytes in a vector */
chacha.c: ^
chacha.c: ./uX.h:21:10: error: use of undeclared identifier 'vc'
chacha.c: uint64_t vc = svcntb(); /* how many bytes in a vector */
chacha.c: ^
chacha.c: ./uX.h:21:15: warning: implicit declaration of function 'svcntb' is invalid in C99 [-Wimplicit-function-declaration]
chacha.c: uint64_t vc = svcntb(); /* how many bytes in a vector */
chacha.c: ^
chacha.c: ./uX.h:22:15: error: use of undeclared identifier 'vc'
chacha.c: if (bytes>=16*vc) {
chacha.c: ^
chacha.c: ./uX.h:24:3: error: unknown type name 'svuint32_t'; did you mean '__uint32_t'?
chacha.c: svuint32_t x_0 = svdup_n_u32(x[0]);
chacha.c: ^~~~~~~~~~
chacha.c: __uint32_t
chacha.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O2 -fPIC -fPIE dolbeau/arm-sve
armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O3 -fPIC -fPIE dolbeau/arm-sve

Compiler output

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

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

Compiler output

Implementation: krovetz/vec128
Security model: unknown
Compiler: armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O2 -fPIC -fPIE
stream.c: stream.c:80:2: error: -- Implementation supports only machines with neon, altivec or SSE2
stream.c: #error -- Implementation supports only machines with neon, altivec or SSE2
stream.c: ^
stream.c: stream.c:151:14: warning: implicit declaration of function 'NONCE' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: vec s3 = NONCE(np);
stream.c: ^
stream.c: stream.c:151:9: error: initializing 'vec' (vector of 4 'unsigned int' values) with an expression of incompatible type 'int'
stream.c: vec s3 = NONCE(np);
stream.c: ^ ~~~~~~~~~
stream.c: stream.c:152:36: error: use of undeclared identifier 'VBPI'
stream.c: for (iters = 0; iters < inlen/(BPI*64); iters++) {
stream.c: ^
stream.c: stream.c:91:19: note: expanded from macro 'BPI'
stream.c: #define BPI (VBPI + GPR_TOO) /* Blocks computed per loop iteration */
stream.c: ^
stream.c: stream.c:152:36: error: use of undeclared identifier 'GPR_TOO'
stream.c: stream.c:91:26: note: expanded from macro 'BPI'
stream.c: #define BPI (VBPI + GPR_TOO) /* Blocks computed per loop iteration */
stream.c: ^
stream.c: stream.c:155:19: error: use of undeclared identifier 'ONE'
stream.c: v7 = v3 + ONE;
stream.c: ^
stream.c: stream.c:176:13: warning: implicit declaration of function 'ROTW16' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: DQROUND_VECTORS(v0,v1,v2,v3)
stream.c: ^
stream.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O2 -fPIC -fPIE krovetz/vec128
armclang -march=armv8a+crypto -mcpu=thunderx2t99 -mtune=thunderx2t99 -O3 -fPIC -fPIE krovetz/vec128

Compiler output

Implementation: krovetz/vec128
Security model: unknown
Compiler: gcc -march=native -mtune=native -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_chacha20_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=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE krovetz/vec128
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE krovetz/vec128
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE krovetz/vec128
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE krovetz/vec128