Implementation notes: x86, thoth, crypto_hash/keccakc448

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: keccakc448
TimeImplementationCompilerBenchmark dateSUPERCOP version
53157mmxu1gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
53492mmxu1gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
55828mmxu1gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
56557mmxu1gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
68039opt32bi-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
69417opt32bi-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
70103opt32bi-rvku2gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
70677opt32biT-s2lcu4clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
70931opt32biT-s2lcu4gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
73885opt32biT-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
74005opt32bi-rvku2clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
74545opt32bi-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
75361opt32bi-rvku2gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
75676opt32bi-s2lcu4gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
76887opt32biT-s2lcu4gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
78170opt32bi-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
79292opt32bi-rvku2gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
80019opt32biT-s2lcu4gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
82895opt32bi-rvku2gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
86702opt64lcu6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
92423opt64u6clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
93099simpleclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
97639inplaceclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
111927opt64lcu24gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
118998opt64lcu24gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
119334opt64lcu24gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
123888opt64lcu6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
124380opt64lcu24gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
125274simplegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
125942inplacegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
127900opt64u6gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
130296inplacegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
130802inplacegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
133155inplacegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
134128simplegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
134133opt64lcu6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
134313simplegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
136617opt64lcu6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
137289opt64u6gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
137599opt64lcu6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
137807opt64u6gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
140622simplegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
142474opt64u6gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
144642opt64lcu24clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
236738compactgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
241833compactclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
307168mmxu1clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
320458compactgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
328767compactgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
340179compactgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
460579compact8clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
464838compact8gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
546349compact8gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
603280compact8gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
622195compact8gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724

Checksum failure

Implementation: crypto_hash/keccakc448/opt64lcu24shld
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
075f16adfda270662d83814751420b3128a4a5fe8095e7ed81b64ee49ac18279
Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments opt64lcu24shld
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv opt64lcu24shld
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv opt64lcu24shld
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv opt64lcu24shld
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv opt64lcu24shld

Compiler output

Implementation: crypto_hash/keccakc448/inplace32bi
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
Keccak-inplace32BI.c: Keccak-inplace32BI.c:73:6: error: "The output size must be a multiple of the lane size in this simple implementation."
Keccak-inplace32BI.c: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-inplace32BI.c: ^
Keccak-inplace32BI.c: 1 error generated.

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

Compiler output

Implementation: crypto_hash/keccakc448/simple32bi
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
Keccak-simple32BI.c: Keccak-simple32BI.c:73:6: error: "The output size must be a multiple of the lane size in this simple implementation."
Keccak-simple32BI.c: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-simple32BI.c: ^
Keccak-simple32BI.c: 1 error generated.

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

Compiler output

Implementation: crypto_hash/keccakc448/sseu2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: copyFromState(A, state)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: ./KeccakF-1600-simd128.macros:547:19: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##bae.v128 = LOAD128(state[ 0]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:51:33: note: expanded from macro 'LOAD128'
KeccakF-1600-opt64.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_unpackhi_epi64' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-simd128.macros:549:13: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##be = GET64HIHI(X##bae.v128, X##bae.v128); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:58:33: note: expanded from macro 'GET64HIHI'
KeccakF-1600-opt64.c: #define GET64HIHI(a, b) _mm_unpackhi_epi64(a, b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-simd128.macros:551:19: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##bio.v128 = LOAD128(state[ 2]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:51:33: note: expanded from macro 'LOAD128'
KeccakF-1600-opt64.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_unpackhi_epi64' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-simd128.macros:553:13: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: ...

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

Compiler output

Implementation: crypto_hash/keccakc448/xopu24
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: copyFromState(A, state)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:482:14: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##bae = LOAD128(state[ 0]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:87:33: note: expanded from macro 'LOAD128'
KeccakF-1600-opt64.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_unpackhi_epi64' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:484:13: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##be = GET64HIHI(X##bae, X##bae); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:96:33: note: expanded from macro 'GET64HIHI'
KeccakF-1600-opt64.c: #define GET64HIHI(a, b) _mm_unpackhi_epi64(a, b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:486:14: note: expanded from macro 'copyFromState'
KeccakF-1600-opt64.c: X##bio = LOAD128(state[ 2]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:87:33: note: expanded from macro 'LOAD128'
KeccakF-1600-opt64.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: error: always_inline function '_mm_unpackhi_epi64' requires target feature 'sse2', but would be inlined into function 'KeccakPermutationOnWords' that is compiled without support for 'sse2'
KeccakF-1600-opt64.c: ./KeccakF-1600-xop.macros:488:13: note: expanded from macro 'copyFromState'
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/keccakc448/inplace32bi
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
Keccak-inplace32BI.c: Keccak-inplace32BI.c: In function 'crypto_hash_keccakc448_inplace32bi':
Keccak-inplace32BI.c: Keccak-inplace32BI.c:73:6: error: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-inplace32BI.c: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-inplace32BI.c: ^

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

Compiler output

Implementation: crypto_hash/keccakc448/simple32bi
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
Keccak-simple32BI.c: Keccak-simple32BI.c: In function 'crypto_hash_keccakc448_simple32bi':
Keccak-simple32BI.c: Keccak-simple32BI.c:73:6: error: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-simple32BI.c: #error "The output size must be a multiple of the lane size in this simple implementation."
Keccak-simple32BI.c: ^

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

Compiler output

Implementation: crypto_hash/keccakc448/xopu24
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
KeccakF-1600-opt64.c: In file included from KeccakF-1600-opt64.c:130:0:
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c: In function 'KeccakPermutationOnWords':
KeccakF-1600-opt64.c: KeccakF-1600-xop.macros:482:12: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
KeccakF-1600-opt64.c: X##bae = LOAD128(state[ 0]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: note: in expansion of macro 'copyFromState'
KeccakF-1600-opt64.c: copyFromState(A, state)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
KeccakF-1600-opt64.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
KeccakF-1600-opt64.c: from KeccakF-1600-opt64.c:74:
KeccakF-1600-opt64.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:720:1: error: inlining failed in call to always_inline '_mm_storel_epi64': target specific option mismatch
KeccakF-1600-opt64.c: _mm_storel_epi64 (__m128i *__P, __m128i __B)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:80:33: error: called from here
KeccakF-1600-opt64.c: #define STORE64(a, b) _mm_storel_epi64((V64 *)&(a), b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-xop.macros:557:5: note: in expansion of macro 'STORE64'
KeccakF-1600-opt64.c: STORE64(state[24], X##su); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-unrolling.macros:41:5: note: in expansion of macro 'copyToState'
KeccakF-1600-opt64.c: copyToState(state, A)
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: ...

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

Compiler output

Implementation: crypto_hash/keccakc448/sseu2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
KeccakF-1600-opt64.c: In file included from KeccakF-1600-opt64.c:67:0:
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c: In function 'KeccakPermutationOnWords':
KeccakF-1600-opt64.c: KeccakF-1600-simd128.macros:547:17: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
KeccakF-1600-opt64.c: X##bae.v128 = LOAD128(state[ 0]); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: note: in expansion of macro 'copyFromState'
KeccakF-1600-opt64.c: copyFromState(A, state)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
KeccakF-1600-opt64.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
KeccakF-1600-opt64.c: from KeccakF-1600-opt64.c:31:
KeccakF-1600-opt64.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:1286:1: error: inlining failed in call to always_inline '_mm_xor_si128': target specific option mismatch
KeccakF-1600-opt64.c: _mm_xor_si128 (__m128i __A, __m128i __B)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:45:35: error: called from here
KeccakF-1600-opt64.c: #define XOReq64(a, b) a = _mm_xor_si128(a, b)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-simd128.macros:600:5: note: in expansion of macro 'XOReq64'
KeccakF-1600-opt64.c: XOReq64(Cu, X##su); \
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: KeccakF-1600-opt64.c:184:5: note: in expansion of macro 'copyFromState'
KeccakF-1600-opt64.c: copyFromState(A, state)
KeccakF-1600-opt64.c: ^
KeccakF-1600-opt64.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
KeccakF-1600-opt64.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
KeccakF-1600-opt64.c: ...

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