Implementation notes: amd64, cannon, crypto_hash/blake2b

Computer: cannon
Architecture: amd64
CPU ID: GenuineIntel-00060663-bfebfbff
SUPERCOP version: 20190910
Operation: crypto_hash
Primitive: blake2b
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
45322219 0 015843 832 752avx2-3clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
45322193 0 015507 832 752avx2-3clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
45342119 0 012137 824 736avx2-3clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
453610079 0 023331 832 752xmmclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
453610079 0 023331 832 752xmmclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
454010084 0 023667 832 752xmmclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
45409995 0 019993 824 736xmmclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
47202193 0 015507 832 752avx2-3clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
47747269 0 020547 832 752avx2-2clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
47767295 0 020883 832 752avx2-2clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
47787269 0 020547 832 752avx2-2clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
47887214 0 017225 824 736avx2-2clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
521211616 0 025235 848 752avxiccclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
522011616 0 021657 840 736avxiccclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
522811616 0 024915 848 752avxiccclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
523211616 0 021644 816 808avxiccgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
523411616 0 020796 800 776avxiccgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
526211616 0 024915 848 752avxiccclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
528811616 0 021692 816 808avxiccgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
53622044 0 011236 784 776avx2-3gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54162223 0 012300 800 808avx2-3gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54202223 0 015133 808 808avx2-3gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54262213 0 012236 800 808avx2-3gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
543011616 0 024573 824 808avxiccgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54627996 0 020909 808 808avx2-2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54667302 0 016452 784 776avx2-2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54683991 0 014012 800 808moon/avx/64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54683991 0 016941 808 808moon/avx/64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54707996 0 018044 800 808avx2-2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54747804 0 017804 800 808avx2-2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54803981 0 013956 800 808moon/avx/64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
54967526 0 021115 832 752avx2-1clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55027473 0 017489 824 736avx2-1clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55107483 0 020763 832 752avx2-1clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55127483 0 020763 832 752avx2-1clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55243924 0 013084 784 776moon/avx/64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
55603933 0 014001 824 736moon/avx/64clang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55663932 0 017227 832 752moon/avx/64clang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55663932 0 017227 832 752moon/avx/64clang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
55783932 0 017547 832 752moon/avx/64clang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
56907496 0 017500 800 808avx2-1gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
584813882 0 023908 800 808regsgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
585813869 0 026789 808 808regsgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
587213177 0 022292 784 776regsgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
590812610 0 025525 808 808xmmgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
591812610 0 022644 800 808xmmgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
598212119 0 021252 784 776xmmgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
604612607 0 022580 800 808xmmgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
625214089 0 024052 800 808regsgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
66209778 0 022757 808 808refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
68129050 0 019205 808 808refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
70968344 0 021611 832 752regsclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
71028344 0 021611 832 752regsclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
71048344 0 021931 832 752regsclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
71068302 0 018321 824 736regsclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
83589567 0 019661 808 808refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
87088170 0 017356 784 776refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2019091020190910
945013810 0 027467 832 752refclang_-march=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
951411752 0 021849 824 736refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
960615770 0 029011 832 752refclang_-march=native_-O2_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910
982015770 0 029011 832 752refclang_-march=native_-O_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2019091020190910

Checksum failure

Implementation: avx2-1
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
d2ec19eb0d5c4c4cd7519d8122118f94a34808fd00a9a72ab6830db530bcefc1
Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2-1
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2-1
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE avx2-1

Test failure

Implementation: moon/xop/64
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 111

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/xop/64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/xop/64
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/xop/64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/xop/64
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

Compiler output

Implementation: moon/avx2/64
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: /usr/bin/ld: crypto_hash_blake2b.a(blake2b.o): relocation R_X86_64_32 against `.text' 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: clang-8: error: linker command failed with exit code 1 (use -v to see invocation)

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/avx2/64
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/avx2/64
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/avx2/64
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE moon/avx2/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: /usr/bin/ld: crypto_hash_blake2b.a(blake2b.o): relocation R_X86_64_32 against `.text' 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 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: ymm
Security model: unknown
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
blake2b.c: blake2b.c:203:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:204:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m1 = _mm256_loadu_si256((__m256i*)(in + 32));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:205:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m2 = _mm256_loadu_si256((__m256i*)(in + 64));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:206:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m3 = _mm256_loadu_si256((__m256i*)(in + 96));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:225:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m0 = _mm256_loadu_si256((__m256i*)(buffer + 00));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:226:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m1 = _mm256_loadu_si256((__m256i*)(buffer + 32));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:227:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m2 = _mm256_loadu_si256((__m256i*)(buffer + 64));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:228:10: error: assigning to '__m128i' (vector of 2 'long long' values) from incompatible type '__m256i' (vector of 4 'long long' values)
blake2b.c: m3 = _mm256_loadu_si256((__m256i*)(buffer + 96));
blake2b.c: ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:241:5: error: invalid conversion between vector type '__m256i' (vector of 4 'long long' values) and '__m128i' (vector of 2 'long long' values) of different size
blake2b.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ymm
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ymm
clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ymm
clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ymm

Compiler output

Implementation: ymm
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
blake2b.c: blake2b.c: In function 'crypto_hash_blake2b_ymm':
blake2b.c: blake2b.c:203:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 203 | m0 = _mm256_loadu_si256((__m256i*)(in + 00));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:204:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 204 | m1 = _mm256_loadu_si256((__m256i*)(in + 32));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:205:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 205 | m2 = _mm256_loadu_si256((__m256i*)(in + 64));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:206:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 206 | m3 = _mm256_loadu_si256((__m256i*)(in + 96));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:225:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 225 | m0 = _mm256_loadu_si256((__m256i*)(buffer + 00));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:226:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 226 | m1 = _mm256_loadu_si256((__m256i*)(buffer + 32));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:227:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 227 | m2 = _mm256_loadu_si256((__m256i*)(buffer + 64));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: blake2b.c:228:12: error: incompatible types when assigning to type '__m128i' {aka '__vector(2) long long int'} from type '__m256i' {aka '__vector(4) long long int'}
blake2b.c: 228 | m3 = _mm256_loadu_si256((__m256i*)(buffer + 96));
blake2b.c: | ^~~~~~~~~~~~~~~~~~
blake2b.c: ...

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