Implementation notes: amd64, waldorf, crypto_hash/keccakc512

Computer: waldorf
Architecture: amd64
CPU ID: GenuineIntel-000106e5-bfebfbff
SUPERCOP version: 20160715
Operation: crypto_hash
Primitive: keccakc512
TimeImplementationCompilerBenchmark dateSUPERCOP version
39864opt64lcu24gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
41080x86_64_asmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
42508simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
44904opt64lcu24shldgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
45032opt64lcu6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
45156opt64lcu24gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
45168opt64u6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
45172opt64lcu24shldgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
45264opt64lcu6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
45624opt64lcu24shldclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
45872opt64lcu6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
46708x86_64_asmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
46720opt64u6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
46804x86_64_shldgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
46916x86_64_shldgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
47248simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
47380opt64lcu6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
47400inplaceclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
47480opt64lcu24gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
47580x86_64_asmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
47640sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
47728x86_64_asmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
47756x86_64_shldgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
47908opt64lcu24clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
47940inplacegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
48080opt64lcu6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
48416x86_64_shldgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
48444opt64u6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
48716sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
49296sseu2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
49356opt64u6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
49364simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
49968opt64lcu24shldgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
50204opt64lcu24shldgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
50288opt64lcu24gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
50360opt64u6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
50396simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
50420simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
50480sseu2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
50704sseu2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
51248sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
51596inplacegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
52060sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
52900inplacegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
53184sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
53276sseu2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
53996inplacegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
54048sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
54924sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
55452sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
60648sseu2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
61188mmxu1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
62464mmxu1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
65500sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
66924mmxu1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
66932mmxu1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
70956mmxu1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
87092sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
93372opt32bi-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
94828opt32biT-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
98728opt32biT-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
101624inplace32biclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
102700opt32biT-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
103452simple32bigcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
106140opt32bi-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
107040opt32biT-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
107924opt32bi-rvku2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
107980opt32biT-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
109344simple32bigcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
109732opt32bi-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
111572opt32bi-rvku2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
112104compactgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
114040opt32bi-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
114680opt32bi-rvku2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
115164inplace32bigcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
116268opt32bi-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
116676inplace32bigcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
117720simple32biclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
118424inplace32bigcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
118484simple32bigcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
119320opt32bi-rvku2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
121464inplace32bigcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
124104opt32bi-rvku2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
125620compactclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
127208simple32bigcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
199168compactgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
201160compactgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
202624compactgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
395476compact8gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
413220compact8gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
449528compact8gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
465184compact8clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
879392compact8gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715

Checksum failure

Implementation: crypto_hash/keccakc512/gil/singlefile
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
ebbed3a47232047ad399cb77b6324d6c902f4715de871750545b1a3b12046ebe
Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments gil/singlefile gil/singlefile_unrolled
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv gil/singlefile gil/singlefile_unrolled
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv gil/singlefile gil/singlefile_unrolled
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv gil/singlefile gil/singlefile_unrolled
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv gil/singlefile gil/singlefile_unrolled

Compiler output

Implementation: crypto_hash/keccakc512/xopu24
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:185:5: warning: implicit declaration of function '_mm_roti_epi64' is invalid in C99 [-Wimplicit-function-declaration]
KeccakF-1600-opt64.c: rounds
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
KeccakF-1600-opt64.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:53:5: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
KeccakF-1600-opt64.c: computeD \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:40:23: note: expanded from macro 'computeD'
KeccakF-1600-opt64.c: Dei = XOR128(Cae, ROL6464same(Cio, 1)); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:102:33: note: expanded from macro 'ROL6464same'
KeccakF-1600-opt64.c: #define ROL6464same(a, o) _mm_roti_epi64(a, o)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:90:50: note: expanded from macro 'XOR128'
KeccakF-1600-opt64.c: #define XOR128(a, b) _mm_xor_si128(a, b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:185:5: error: passing 'int' to parameter of incompatible type '__m128i' (vector of 2 'long long' values)
KeccakF-1600-opt64.c: rounds
KeccakF-1600-opt64.c: ^~~~~~
KeccakF-1600-opt64.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
KeccakF-1600-opt64.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
KeccakF-1600-opt64.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:53:5: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
KeccakF-1600-opt64.c: ...

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

Compiler output

Implementation: crypto_hash/keccakc512/x86_64_asm
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:50:16: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ apState, %rdi
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:51:16: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ apInput, %rsi
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:52:18: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ aNbrWords, %rdx
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:55:16: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ xpState, %r9
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:58:12: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ rT1, %rax
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:59:16: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ rpState, %rdi
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:60:16: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ rpStack, %rsp
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:62:12: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: .equ rDa, %rbx
KeccakF-1600-x86-64-gas.s: ^
KeccakF-1600-x86-64-gas.s: KeccakF-1600-x86-64-gas.s:63:12: error: unknown token in expression
KeccakF-1600-x86-64-gas.s: ...

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

Compiler output

Implementation: crypto_hash/keccakc512/x86_64_shld
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:50:16: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ apState, %rdi
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:51:16: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ apInput, %rsi
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:52:18: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ aNbrWords, %rdx
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:55:16: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ xpState, %r9
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:58:12: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ rT1, %rax
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:59:16: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ rpState, %rdi
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:60:16: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ rpStack, %rsp
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:62:12: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: .equ rDa, %rbx
KeccakF-1600-x86-64-shld-gas.s: ^
KeccakF-1600-x86-64-shld-gas.s: KeccakF-1600-x86-64-shld-gas.s:63:12: error: unknown token in expression
KeccakF-1600-x86-64-shld-gas.s: ...

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

Compiler output

Implementation: crypto_hash/keccakc512/xopu24
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
KeccakF-1600-opt64.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/x86intrin.h:52:0,
KeccakF-1600-opt64.c: from KeccakF-1600-opt64.c:74:
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c: In function 'KeccakPermutationOnWords':
KeccakF-1600-opt64.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xopintrin.h:266:1: error: inlining failed in call to always_inline '_mm_roti_epi64': target specific option mismatch
KeccakF-1600-opt64.c: _mm_roti_epi64(__m128i __A, const int __B)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:90:33: error: called from here
KeccakF-1600-opt64.c: #define XOR128(a, b) _mm_xor_si128(a, b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-xop.macros:40:11: note: in expansion of macro 'XOR128'
KeccakF-1600-opt64.c: Dei = XOR128(Cae, ROL6464same(Cio, 1)); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-xop.macros:53:5: note: in expansion of macro 'computeD'
KeccakF-1600-opt64.c: computeD \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-unrolling.macros:17:5: note: in expansion of macro 'thetaRhoPiChiIotaPrepareTheta'
KeccakF-1600-opt64.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:185:5: note: in expansion of macro 'rounds'
KeccakF-1600-opt64.c: rounds
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.9/include/x86intrin.h:52:0,
KeccakF-1600-opt64.c: from KeccakF-1600-opt64.c:74:
KeccakF-1600-opt64.c: /usr/lib/gcc/x86_64-linux-gnu/4.9/include/xopintrin.h:266:1: error: inlining failed in call to always_inline '_mm_roti_epi64': target specific option mismatch
KeccakF-1600-opt64.c: _mm_roti_epi64(__m128i __A, const int __B)
KeccakF-1600-opt64.c: ...

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