Implementation notes: amd64, waldorf, crypto_hash/keccakc1024

Computer: waldorf
Architecture: amd64
CPU ID: GenuineIntel-000106e5-bfebfbff
SUPERCOP version: 20160715
Operation: crypto_hash
Primitive: keccakc1024
TimeImplementationCompilerBenchmark dateSUPERCOP version
79132x86_64_asmgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
79940opt64lcu6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
80200opt64lcu6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
80476x86_64_shldgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
80560opt64lcu24shldgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
80664opt64lcu6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
81636opt64lcu6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
82128opt64lcu24clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
83016x86_64_asmgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
83132x86_64_shldgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
84752opt64u6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
84908opt64lcu24gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
85092simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
85384x86_64_shldgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
85420opt64lcu24gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
85544simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
85676sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
85980opt64lcu24shldgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
86188opt64u6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
86632opt64lcu6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
87012opt64lcu24shldgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
87020x86_64_asmgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
87144x86_64_asmgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
87272sseu2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
87500x86_64_shldgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
87564opt64u6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
88064opt64lcu24shldgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
89492simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
89724inplacegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
89980sseu2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
90568opt64lcu24shldclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
90612inplacegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
91036opt64lcu24gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
91168sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
91400sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
91516inplacegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
91820opt64lcu24gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
92876sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
93216sseu2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
93672simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
94040opt64u6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
94856inplaceclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
94944opt64u6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
95040sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
95532simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
96808sseu2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
97308sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
100204inplacegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
105756sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
107840sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
109388sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
112848mmxu1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
113448sseu2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
117560mmxu1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
119012mmxu1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
120800mmxu1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
128056mmxu1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
159740sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
165728opt32bi-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
177272simple32bigcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
179844opt32bi-rvku2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
180688opt32biT-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
181164inplace32bigcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
182024simple32bigcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
182124opt32biT-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
184292simple32bigcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
186320opt32bi-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
186384inplace32biclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
186736opt32biT-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
187196opt32bi-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
187544opt32bi-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
191060opt32bi-rvku2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
191360opt32bi-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
194644opt32biT-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
195844compactgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
197768opt32biT-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
199220simple32biclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
199844opt32bi-rvku2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
205012opt32bi-rvku2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
207560inplace32bigcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
212908inplace32bigcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
217416opt32bi-rvku2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
221772simple32bigcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
224752inplace32bigcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
232892compactclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
362040compactgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
373460compactgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715
378108compactgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
735052compact8gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016071820160715
741640compact8gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016071820160715
793464compact8gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016071820160715
842200compact8clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016071820160715
1750320compact8gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016071820160715

Compiler output

Implementation: crypto_hash/keccakc1024/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/keccakc1024/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/keccakc1024/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/keccakc1024/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