Implementation notes: amd64, h4atom, crypto_stream/chacha8

Computer: h4atom
Architecture: amd64
CPU ID: GenuineIntel-000106ca-bfe9fbff
SUPERCOP version: 20160806
Operation: crypto_stream
Primitive: chacha8
TimeImplementationCompilerBenchmark dateSUPERCOP version
5112moon/sse2/64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
5112moon/sse2/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
5112moon/sse2/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
5112moon/sse2/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
5120moon/sse2/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
5496krovetz/vec128clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
5528e/amd64-xmm6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
5528e/amd64-xmm6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
5536e/amd64-xmm6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
5920krovetz/vec128gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
6056krovetz/vec128gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
6344krovetz/vec128gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
6448krovetz/vec128gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
6648dolbeau/amd64-avx2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
7432dolbeau/amd64-avx2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
7880amd64-ssse3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
7888amd64-ssse3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
7896amd64-ssse3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
7920dolbeau/amd64-avx2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
7984moon/ssse3/64clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
7984moon/ssse3/64gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
7984moon/ssse3/64gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
7992moon/ssse3/64gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
8000moon/ssse3/64gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
8016e/mergedgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
8288e/mergedgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
8672dolbeau/amd64-avx2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
8712e/mergedclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
8720dolbeau/amd64-avx2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
9152e/amd64-3clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
9160e/amd64-3gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
9160e/amd64-3gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
9160e/amd64-3gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
9168e/amd64-3gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
9584e/refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
9584e/regsgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016081220160806
10560e/mergedgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
11784e/mergedgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
12640e/refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
13720e/regsclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016081220160806
14368e/regsgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
19912e/refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016081220160806
20232e/regsgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806
20656e/regsgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
25712e/refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016081220160806
30368e/refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016081220160806

Test failure

Implementation: crypto_stream/chacha8/amd64-ssse3
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
error 111

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments amd64-ssse3 e/amd64-xmm6 moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv moon/avx/64 moon/avx2/64 moon/xop/64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv amd64-ssse3 e/amd64-xmm6 moon/avx/64 moon/avx2/64 moon/xop/64

Compiler output

Implementation: crypto_stream/chacha8/dolbeau/ppc-altivec
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
chacha.c: In file included from chacha.c:11:
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/altivec.h:27:2: error: "AltiVec support not enabled"
chacha.c: #error "AltiVec support not enabled"
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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/lib/llvm-3.8/bin/../lib/clang/3.8.0/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 -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments dolbeau/ppc-altivec

Compiler output

Implementation: crypto_stream/chacha8/dolbeau/mipsel-msa
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
chacha.c: In file included from chacha.c:11:
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:28:2: error: "NEON support not enabled"
chacha.c: #error "NEON support not enabled"
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:48:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(8))) int8_t int8x8_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:49:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(16))) int8_t int8x16_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:50:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(4))) int16_t int16x4_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:51:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(8))) int16_t int16x8_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:52:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(2))) int32_t int32x2_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:53:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(4))) int32_t int32x4_t;
chacha.c: ^
chacha.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/arm_neon.h:54:24: error: 'neon_vector_type' attribute is not supported for this target
chacha.c: typedef __attribute__((neon_vector_type(1))) int64_t int64x1_t;
chacha.c: ^
chacha.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments dolbeau/mipsel-msa

Compiler output

Implementation: crypto_stream/chacha8/goll_gueron
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
stream.c: stream.c:126:2: error: -- Implementation supports only microarchitectures with support for Advanced Vector Extensions (AVX2 or AVX512).
stream.c: #error -- Implementation supports only microarchitectures with support for Advanced Vector Extensions (AVX2 or AVX512).
stream.c: ^
stream.c: 1 error generated.

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

Compiler output

Implementation: crypto_stream/chacha8/krovetz/avx2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
stream.c: stream.c:56:18: warning: implicit declaration of function '_mm_broadcastsi128_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: __m256i s0 = _mm_broadcastsi128_si256((__m128i *)sigma);
stream.c: ^
stream.c: stream.c:56:13: error: initializing '__m256i' (vector of 4 'long long' values) with an expression of incompatible type 'int'
stream.c: __m256i s0 = _mm_broadcastsi128_si256((__m128i *)sigma);
stream.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: 1 warning and 1 error generated.

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

Compiler output

Implementation: crypto_stream/chacha8/dolbeau/ppc-altivec
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
chacha.c: chacha.c:11:21: fatal error: altivec.h: No such file or directory
chacha.c: compilation terminated.

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

Compiler output

Implementation: crypto_stream/chacha8/dolbeau/mipsel-msa
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
chacha.c: chacha.c:11:22: fatal error: arm_neon.h: No such file or directory
chacha.c: compilation terminated.

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

Compiler output

Implementation: crypto_stream/chacha8/krovetz/avx2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
stream.c: stream.c: In function 'crypto_stream_chacha8_krovetz_avx2_xor':
stream.c: stream.c:58:13: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
stream.c: __m256i s0 = _mm256_broadcastsi128_si256(*(__m128i *)sigma);
stream.c: ^
stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:43:0,
stream.c: from stream.c:8:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/avx2intrin.h:574:1: error: inlining failed in call to always_inline '_mm256_or_si256': target specific option mismatch
stream.c: _mm256_or_si256 (__m256i __A, __m256i __B)
stream.c: ^
stream.c: stream.c:63:13: error: called from here
stream.c: __m256i s3 = _mm256_or_si256(
stream.c: ^
stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:43:0,
stream.c: from stream.c:8:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/avx2intrin.h:655:1: error: inlining failed in call to always_inline '_mm256_slli_si256': target specific option mismatch
stream.c: _mm256_slli_si256 (__m256i __A, const int __N)
stream.c: ^
stream.c: stream.c:63:18: error: called from here
stream.c: __m256i s3 = _mm256_or_si256(
stream.c: ^
stream.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/5/include/immintrin.h:43:0,
stream.c: from stream.c:8:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/5/include/avx2intrin.h:1006:1: error: inlining failed in call to always_inline '_mm256_broadcastq_epi64': target specific option mismatch
stream.c: _mm256_broadcastq_epi64 (__m128i __X)
stream.c: ^
stream.c: ...

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

Compiler output

Implementation: crypto_stream/chacha8/goll_gueron
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
stream.c: stream.c:126:2: error: #error -- Implementation supports only microarchitectures with support for Advanced Vector Extensions (AVX2 or AVX512).
stream.c: #error -- Implementation supports only microarchitectures with support for Advanced Vector Extensions (AVX2 or AVX512).
stream.c: ^

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