Implementation notes: armeabi, pi2, crypto_stream/chacha20

Computer: pi2
Architecture: armeabi
CPU ID: unknown CPU ID
SUPERCOP version: 20160731
Operation: crypto_stream
Primitive: chacha20
TimeImplementationCompilerBenchmark dateSUPERCOP version
20912dolbeau/arm-neongcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
20921dolbeau/arm-neongcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
21834moon/neon/32gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
21839moon/neon/32gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
21842moon/neon/32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
22040moon/neon/32gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
22589moon/neon/32gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
26806dolbeau/arm-neongcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
29370moon/armv6/32gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
29371moon/armv6/32gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
29376moon/armv6/32gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
29377moon/armv6/32gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
29381moon/armv6/32clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
30364dolbeau/arm-neonclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
35236dolbeau/arm-neongcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
35824e/mergedgcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
39508e/regsclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
40686e/mergedgcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
40688e/mergedgcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
40882e/regsgcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
41488e/refclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
42073dolbeau/mipsel-msagcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
42183e/refgcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv2016080620160731
42267dolbeau/mipsel-msaclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
43124e/mergedclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016080620160731
49143e/regsgcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
49532e/mergedgcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
53488dolbeau/mipsel-msagcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
53916e/regsgcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
54349e/refgcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv2016080620160731
58906e/refgcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
59496dolbeau/mipsel-msagcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731
60488e/refgcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
60524dolbeau/mipsel-msagcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv2016080620160731
65745e/regsgcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv2016080620160731

Test failure

Implementation: crypto_stream/chacha20/krovetz/vec128
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111
crypto_stream_xor does not handle n=c overlap

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments krovetz/vec128
gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv krovetz/vec128
gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv krovetz/vec128
gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv krovetz/vec128
gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv krovetz/vec128

Compiler output

Implementation: crypto_stream/chacha20/dolbeau/ppc-altivec
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
chacha.c: In file included from chacha.c:11:
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:27:2: error: "AltiVec support not enabled"
chacha.c: #error "AltiVec support not enabled"
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:39:8: error: unknown type name 'vector'
chacha.c: static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:39:15: error: expected identifier or '('
chacha.c: static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:43:8: error: unknown type name 'vector'
chacha.c: static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:43:15: error: expected identifier or '('
chacha.c: static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:47:8: error: unknown type name 'vector'
chacha.c: static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:47:19: error: expected ';' after top level declarator
chacha.c: static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a,
chacha.c: ^
chacha.c: /usr/bin/../lib/clang/3.8.1/include/altivec.h:47:47: error: unknown type name 'vector'
chacha.c: static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a,
chacha.c: ^
chacha.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments dolbeau/ppc-altivec

Compiler output

Implementation: crypto_stream/chacha20/amd64-ssse3
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
chacha.s: chacha.s:22:5: error: unexpected token in operand
chacha.s: mov %rsp,%r11
chacha.s: ^
chacha.s: chacha.s:23:9: error: unknown token in expression
chacha.s: and $31,%r11
chacha.s: ^
chacha.s: chacha.s:23:9: error: malformed expression
chacha.s: and $31,%r11
chacha.s: ^
chacha.s: chacha.s:24:10: error: unknown token in expression
chacha.s: add $384,%r11
chacha.s: ^
chacha.s: chacha.s:24:10: error: malformed expression
chacha.s: add $384,%r11
chacha.s: ^
chacha.s: chacha.s:25:5: error: unexpected token in operand
chacha.s: sub %r11,%rsp
chacha.s: ^
chacha.s: chacha.s:26:6: error: unexpected token in operand
chacha.s: mov %rdi,%r8
chacha.s: ^
chacha.s: chacha.s:27:6: error: unexpected token in operand
chacha.s: mov %rsi,%rsi
chacha.s: ^
chacha.s: chacha.s:28:6: error: unexpected token in operand
chacha.s: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments amd64-ssse3

Compiler output

Implementation: crypto_stream/chacha20/goll_gueron
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
stream.c: In file included from stream.c:11:
stream.c: In file included from /usr/bin/../lib/clang/3.8.1/include/immintrin.h:27:
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:45:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:69:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:75:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:81:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:87:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:93:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:99:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:105:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
stream.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments goll_gueron

Compiler output

Implementation: crypto_stream/chacha20/krovetz/avx2
Compiler: clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
stream.c: In file included from stream.c:8:
stream.c: In file included from /usr/bin/../lib/clang/3.8.1/include/immintrin.h:27:
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:45:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:69:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:75:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:81:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:87:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:93:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:99:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: /usr/bin/../lib/clang/3.8.1/include/mmintrin.h:105:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
stream.c: return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
stream.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments krovetz/avx2

Compiler output

Implementation: crypto_stream/chacha20/dolbeau/ppc-altivec
Compiler: gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv
chacha.c: chacha.c:11:21: fatal error: altivec.h: No such file or directory
chacha.c: #include gt;
chacha.c: ^
chacha.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv dolbeau/ppc-altivec
gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv dolbeau/ppc-altivec
gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv dolbeau/ppc-altivec
gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv dolbeau/ppc-altivec

Compiler output

Implementation: crypto_stream/chacha20/amd64-ssse3
Compiler: gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv
chacha.s: chacha.s: Assembler messages:
chacha.s: chacha.s:22: Error: ARM register expected -- `mov %rsp,%r11'
chacha.s: chacha.s:23: Error: ARM register expected -- `and $31,%r11'
chacha.s: chacha.s:24: Error: ARM register expected -- `add $384,%r11'
chacha.s: chacha.s:25: Error: immediate expression requires a # prefix -- `sub %r11,%rsp'
chacha.s: chacha.s:26: Error: ARM register expected -- `mov %rdi,%r8'
chacha.s: chacha.s:27: Error: ARM register expected -- `mov %rsi,%rsi'
chacha.s: chacha.s:28: Error: ARM register expected -- `mov %rsi,%rdi'
chacha.s: chacha.s:29: Error: ARM register expected -- `mov %rdx,%rdx'
chacha.s: chacha.s:30: Error: ARM register expected -- `cmp $0,%rdx'
chacha.s: chacha.s:32: Error: bad instruction `jbe ._done'
chacha.s: chacha.s:34: Error: ARM register expected -- `mov $0,%rax'
chacha.s: chacha.s:36: Error: ARM register expected -- `mov %rdx,%rcx'
chacha.s: chacha.s:38: Error: bad instruction `rep stosb'
chacha.s: chacha.s:40: Error: ARM register expected -- `sub %rdx,%rdi'
chacha.s: chacha.s:42: Error: bad instruction `jmp ._start'
chacha.s: chacha.s:50: Error: ARM register expected -- `mov %rsp,%r11'
chacha.s: chacha.s:51: Error: ARM register expected -- `and $31,%r11'
chacha.s: chacha.s:52: Error: ARM register expected -- `add $384,%r11'
chacha.s: chacha.s:53: Error: immediate expression requires a # prefix -- `sub %r11,%rsp'
chacha.s: chacha.s:55: Error: ARM register expected -- `mov %rdi,%r8'
chacha.s: chacha.s:57: Error: ARM register expected -- `mov %rsi,%rsi'
chacha.s: chacha.s:59: Error: ARM register expected -- `mov %rdx,%rdi'
chacha.s: chacha.s:61: Error: ARM register expected -- `mov %rcx,%rdx'
chacha.s: chacha.s:63: Error: ARM register expected -- `cmp $0,%rdx'
chacha.s: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv amd64-ssse3
gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv amd64-ssse3
gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv amd64-ssse3
gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv amd64-ssse3

Compiler output

Implementation: crypto_stream/chacha20/goll_gueron
Compiler: gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv
stream.c: stream.c:11:23: fatal error: immintrin.h: No such file or directory
stream.c: #include gt;
stream.c: ^
stream.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv goll_gueron
gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv goll_gueron
gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv goll_gueron
gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv goll_gueron

Compiler output

Implementation: crypto_stream/chacha20/krovetz/avx2
Compiler: gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv
stream.c: stream.c:8:23: fatal error: immintrin.h: No such file or directory
stream.c: #include gt;
stream.c: ^
stream.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -mcpu=native -mfpu=neon -O2 -fomit-frame-pointer -fwrapv krovetz/avx2
gcc -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv krovetz/avx2
gcc -mcpu=native -mfpu=neon -O -fomit-frame-pointer -fwrapv krovetz/avx2
gcc -mcpu=native -mfpu=neon -Os -fomit-frame-pointer -fwrapv krovetz/avx2