Implementation notes: amd64, wintermute, crypto_stream/chacha8

Computer: wintermute
Architecture: amd64
CPU ID: GenuineIntel-000306c3-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_stream
Primitive: chacha8
TimeImplementationCompilerBenchmark dateSUPERCOP version
920krovetz/avx2clang -O3 -mavx22014050820140505
940moon/avx2/64clang -O32014050820140505
940moon/avx2/64clang -O3 -mavx2014050820140505
944moon/avx2/64cc2014050820140505
944moon/avx2/64clang -O3 -mavx22014050820140505
1676moon/avx/64cc2014050820140505
1676moon/avx/64clang -O32014050820140505
1676moon/avx/64clang -O3 -mavx2014050820140505
1676moon/avx/64clang -O3 -mavx22014050820140505
1700moon/ssse3/64clang -O32014050820140505
1700moon/ssse3/64clang -O3 -mavx2014050820140505
1704moon/ssse3/64clang -O3 -mavx22014050820140505
1708moon/ssse3/64cc2014050820140505
1812krovetz/vec128clang -O3 -mavx22014050820140505
1816krovetz/vec128clang -O3 -mavx2014050820140505
1924krovetz/vec128clang -O32014050820140505
2040moon/sse2/64clang -O3 -mavx2014050820140505
2040moon/sse2/64clang -O3 -mavx22014050820140505
2044moon/sse2/64clang -O32014050820140505
2052moon/sse2/64cc2014050820140505
4216e/amd64-3clang -O32014050820140505
4224e/amd64-3clang -O3 -mavx2014050820140505
4232e/amd64-3clang -O3 -mavx22014050820140505
4236e/amd64-3cc2014050820140505
4876e/mergedclang -O3 -mavx2014050820140505
4880e/mergedclang -O32014050820140505
4880e/mergedclang -O3 -mavx22014050820140505
4992e/regsclang -O32014050820140505
5052e/regsclang -O3 -mavx22014050820140505
5060e/regsclang -O3 -mavx2014050820140505
5320e/refclang -O3 -mavx22014050820140505
5848e/refclang -O3 -mavx2014050820140505
6000e/refclang -O32014050820140505
11624krovetz/vec128cc2014050820140505
24772e/mergedcc2014050820140505
39416e/regscc2014050820140505
45628e/refcc2014050820140505

Test failure

Implementation: crypto_stream/chacha8/e/amd64-xmm6
Compiler: cc
error 111

Number of similar (compiler,implementation) pairs: 24, namely:
CompilerImplementations
cc e/amd64-xmm6 moon/avx/32 moon/avx2/32 moon/ssse3/32 moon/xop/32 moon/xop/64
clang -O3 e/amd64-xmm6 moon/avx/32 moon/avx2/32 moon/ssse3/32 moon/xop/32 moon/xop/64
clang -O3 -mavx e/amd64-xmm6 moon/avx/32 moon/avx2/32 moon/ssse3/32 moon/xop/32 moon/xop/64
clang -O3 -mavx2 e/amd64-xmm6 moon/avx/32 moon/avx2/32 moon/ssse3/32 moon/xop/32 moon/xop/64

Compiler output

Implementation: crypto_stream/chacha8/amd64-ssse3
Compiler: cc
api.c: In file included from api.c:1:
api.c: /home/dch/tmp/supercop-20140505/supercop-data/wintermute/amd64/include/estream-convert-api.h:7:10: fatal error: 'e/ecrypt-sync.h' file not found
api.c: #include "e/ecrypt-sync.h"
api.c: ^
api.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
cc amd64-ssse3
clang -O3 amd64-ssse3
clang -O3 -mavx amd64-ssse3
clang -O3 -mavx2 amd64-ssse3

Compiler output

Implementation: crypto_stream/chacha8/e/amd64-3
Compiler: cc
chacha.s: cc: warning: argument unused during compilation: '-D SUPERCOP'
chacha.s: cc: warning: argument unused during compilation: '-I .'
chacha.s: cc: warning: argument unused during compilation: '-I /home/dch/tmp/supercop-20140505/supercop-data/wintermute/amd64/include'

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc e/amd64-3 e/amd64-xmm6

Compiler output

Implementation: crypto_stream/chacha8/goll_gueron
Compiler: cc
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: 3, namely:
CompilerImplementations
cc goll_gueron
clang -O3 goll_gueron
clang -O3 -mavx goll_gueron

Compiler output

Implementation: crypto_stream/chacha8/krovetz/avx2
Compiler: cc
stream.c: stream.c:54:5: error: use of undeclared identifier '__m256i'
stream.c: __m256i v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;
stream.c: ^
stream.c: stream.c:56:5: error: use of undeclared identifier '__m256i'
stream.c: __m256i s0 = _mm_broadcastsi128_si256((__m128i *)sigma);
stream.c: ^
stream.c: stream.c:60:5: error: use of undeclared identifier '__m256i'
stream.c: __m256i s1 = _mm256_loadu_si256((__m256i *)k);
stream.c: ^
stream.c: stream.c:61:5: error: use of undeclared identifier '__m256i'
stream.c: __m256i s2 = _mm256_permute2x128_si256(s1,s1,0x11);
stream.c: ^
stream.c: stream.c:62:5: error: use of undeclared identifier 's1'
stream.c: s1 = _mm256_permute2x128_si256(s1,s1,0x00);
stream.c: ^
stream.c: stream.c:62:10: warning: implicit declaration of function '_mm256_permute2x128_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: s1 = _mm256_permute2x128_si256(s1,s1,0x00);
stream.c: ^
stream.c: stream.c:62:36: error: use of undeclared identifier 's1'
stream.c: s1 = _mm256_permute2x128_si256(s1,s1,0x00);
stream.c: ^
stream.c: stream.c:63:5: error: use of undeclared identifier '__m256i'
stream.c: __m256i s3 = _mm256_or_si256(
stream.c: ^
stream.c: stream.c:68:9: error: use of undeclared identifier 'v8'
stream.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc krovetz/avx2
clang -O3 krovetz/avx2

Compiler output

Implementation: crypto_stream/chacha8/e/amd64-3
Compiler: clang -O3
chacha.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
chacha.s: clang: warning: argument unused during compilation: '-I .'
chacha.s: clang: warning: argument unused during compilation: '-I /home/dch/tmp/supercop-20140505/supercop-data/wintermute/amd64/include'

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 e/amd64-3 e/amd64-xmm6

Compiler output

Implementation: crypto_stream/chacha8/e/amd64-3
Compiler: clang -O3 -mavx
chacha.s: clang: warning: argument unused during compilation: '-mavx'
chacha.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
chacha.s: clang: warning: argument unused during compilation: '-I .'
chacha.s: clang: warning: argument unused during compilation: '-I /home/dch/tmp/supercop-20140505/supercop-data/wintermute/amd64/include'

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -mavx e/amd64-3 e/amd64-xmm6

Compiler output

Implementation: crypto_stream/chacha8/krovetz/avx2
Compiler: clang -O3 -mavx
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' with an expression of incompatible type 'int'
stream.c: __m256i s0 = _mm_broadcastsi128_si256((__m128i *)sigma);
stream.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:61:18: warning: implicit declaration of function '_mm256_permute2x128_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: __m256i s2 = _mm256_permute2x128_si256(s1,s1,0x11);
stream.c: ^
stream.c: stream.c:61:13: error: initializing '__m256i' with an expression of incompatible type 'int'
stream.c: __m256i s2 = _mm256_permute2x128_si256(s1,s1,0x11);
stream.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:62:8: error: assigning to '__m256i' from incompatible type 'int'
stream.c: s1 = _mm256_permute2x128_si256(s1,s1,0x00);
stream.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:63:18: warning: implicit declaration of function '_mm256_or_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: __m256i s3 = _mm256_or_si256(
stream.c: ^
stream.c: stream.c:64:9: warning: implicit declaration of function '_mm256_slli_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: _mm256_slli_si256(_mm256_broadcastq_epi64(*(__m128i *)n), 8),
stream.c: ^
stream.c: stream.c:64:27: warning: implicit declaration of function '_mm256_broadcastq_epi64' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: _mm256_slli_si256(_mm256_broadcastq_epi64(*(__m128i *)n), 8),
stream.c: ^
stream.c: stream.c:63:13: error: initializing '__m256i' with an expression of incompatible type 'int'
stream.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -mavx krovetz/avx2

Compiler output

Implementation: crypto_stream/chacha8/e/amd64-3
Compiler: clang -O3 -mavx2
chacha.s: clang: warning: argument unused during compilation: '-mavx2'
chacha.s: clang: warning: argument unused during compilation: '-D SUPERCOP'
chacha.s: clang: warning: argument unused during compilation: '-I .'
chacha.s: clang: warning: argument unused during compilation: '-I /home/dch/tmp/supercop-20140505/supercop-data/wintermute/amd64/include'

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang -O3 -mavx2 e/amd64-3 e/amd64-xmm6

Compiler output

Implementation: crypto_stream/chacha8/goll_gueron
Compiler: clang -O3 -mavx2
stream.c: stream.c:302:15: warning: implicit declaration of function '_mm256_broadcastsi128_si256' is invalid in C99 [-Wimplicit-function-declaration]
stream.c: d0 = (vec256)_mm256_broadcastsi128_si256(*(__m128i*)chacha_const);
stream.c: ^
stream.c: stream.c:302:7: error: invalid conversion between vector type 'vec256' and integer type 'int' of different size
stream.c: d0 = (vec256)_mm256_broadcastsi128_si256(*(__m128i*)chacha_const);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:303:7: error: invalid conversion between vector type 'vec256' and integer type 'int' of different size
stream.c: d1 = (vec256)_mm256_broadcastsi128_si256(((__m128i*)key)[0]);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:304:7: error: invalid conversion between vector type 'vec256' and integer type 'int' of different size
stream.c: d2 = (vec256)_mm256_broadcastsi128_si256(((__m128i*)key)[1]);
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:305:7: error: invalid conversion between vector type '__m256i' and integer type 'int' of different size
stream.c: d3 = ADD256_64(_mm256_broadcastsi128_si256((__m128i)s3), _mm256_set_epi64x(0,1,0,0));
stream.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: stream.c:38:49: note: expanded from macro 'ADD256_64'
stream.c: #define ADD256_64(a,b) (vec256)_mm256_add_epi64((__m256i)a, (__m256i)b)
stream.c: ^~~~~~~~~~
stream.c: 1 warning and 4 errors generated.

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -mavx2 goll_gueron