Implementation notes: amd64, devoptimis, crypto_stream/chacha20

Computer: devoptimis
Architecture: amd64
CPU ID: GenuineIntel-000206c2-bfebfbff
SUPERCOP version: 20190910
Operation: crypto_stream
Primitive: chacha20
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
53762519 0 016621 784 856krovetz/vec128gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
68802462 0 014365 784 856krovetz/vec128gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
71452503 0 014413 784 856krovetz/vec128gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
77054565 0 418606 776 864e/amd64-xmm6gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
79145241 0 417053 768 864dolbeau/amd64-avx2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
80136079 0 420150 776 864dolbeau/amd64-avx2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
81794385 0 415081 752 832e/amd64-xmm6gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
81976447 0 420518 776 864dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
83414581 0 416341 768 864e/amd64-xmm6gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
87524533 0 416277 768 864e/amd64-xmm6gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
87615156 0 416933 768 864dolbeau/amd64-avx2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
94994636 0 415337 752 832dolbeau/amd64-avx2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
97205048 0 416821 768 864dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
97545161 0 416973 768 864dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
116242001 0 012768 760 824krovetz/vec128gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
116712471 0 414213 768 864e/mergedgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
120164658 0 415353 752 832dolbeau/generic-gccsimd128gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
173382484 0 413145 752 832e/amd64-3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
181602678 0 414437 768 864e/amd64-3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
196622662 0 416702 776 864e/amd64-3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
217812136 0 412809 752 832e/mergedgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
226522630 0 414373 768 864e/amd64-3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
227412425 0 414205 768 864e/mergedgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
232863631 0 417670 776 864e/mergedgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
248772972 0 417030 776 864e/refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
257722972 0 417030 776 864e/regsgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
267702228 0 414021 768 864e/regsgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
291442234 0 413989 768 864e/regsgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
317172196 0 413989 768 864e/refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
342651888 0 412553 752 832e/refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
352302013 0 412681 752 832e/regsgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910
369692134 0 413877 768 864e/refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019100320190910

Compiler output

Implementation: amd64-ssse3
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: /usr/bin/ld: crypto_stream_chacha20.a(chacha.o): relocation R_X86_64_32S against symbol `R16' can not be used when making a PIE object; recompile with -fPIC
try.c: /usr/bin/ld: final link failed: Nonrepresentable section on output
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

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

Compiler output

Implementation: krovetz/avx2
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
stream.c: stream.c: In function 'crypto_stream_chacha20_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/7/include/immintrin.h:43:0,
stream.c: from stream.c:8:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/7/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: note: 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/7/include/immintrin.h:43:0,
stream.c: from stream.c:8:
stream.c: /usr/lib/gcc/x86_64-linux-gnu/7/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: note: called from here
stream.c: __m256i s3 = _mm256_or_si256(
stream.c: ^~~~~~~~~~~~~~~~
stream.c: _mm256_slli_si256(_mm256_broadcastq_epi64(*(__m128i *)n), 8),
stream.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: _mm256_set_epi32(0,0,0,1,0,0,0,0)
stream.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stream.c: );
stream.c: ...

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

Compiler output

Implementation: moon/avx/64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx_64':
try.c: crypto_stream.c:(.text+0x...): multiple definition of `crypto_stream_chacha20_moon_avx_64'
try.c: crypto_stream_chacha20.a(chacha.o):(.text+0x...): first defined here
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx_64_xor':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_avx_64'
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx_64':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_avx_64'
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: moon/avx2/64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx2_64':
try.c: crypto_stream.c:(.text+0x...): multiple definition of `crypto_stream_chacha20_moon_avx2_64'
try.c: crypto_stream_chacha20.a(chacha.o):(.text+0x...): first defined here
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx2_64_xor':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_avx2_64'
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_avx2_64':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_avx2_64'
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: moon/sse2/64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_sse2_64':
try.c: crypto_stream.c:(.text+0x...): multiple definition of `crypto_stream_chacha20_moon_sse2_64'
try.c: crypto_stream_chacha20.a(chacha.o):(.text+0x...): first defined here
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_sse2_64_xor':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_sse2_64'
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_sse2_64':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_sse2_64'
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: moon/ssse3/64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_ssse3_64':
try.c: crypto_stream.c:(.text+0x...): multiple definition of `crypto_stream_chacha20_moon_ssse3_64'
try.c: crypto_stream_chacha20.a(chacha.o):(.text+0x...): first defined here
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_ssse3_64_xor':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_ssse3_64'
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_ssse3_64':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_ssse3_64'
try.c: collect2: error: ld returned 1 exit status

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

Compiler output

Implementation: moon/xop/64
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_xop_64':
try.c: crypto_stream.c:(.text+0x...): multiple definition of `crypto_stream_chacha20_moon_xop_64'
try.c: crypto_stream_chacha20.a(chacha.o):(.text+0x...): first defined here
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_xop_64_xor':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_xop_64'
try.c: crypto_stream_chacha20.a(crypto_stream.o): In function `crypto_stream_chacha20_moon_xop_64':
try.c: crypto_stream.c:(.text+0x...): undefined reference to `crypto_stream_chacha12_moon_xop_64'
try.c: collect2: error: ld returned 1 exit status

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