Implementation notes: x86, thoth, crypto_hash/keccakc512treed2

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: keccakc512treed2

Compiler output

Implementation: crypto_hash/keccakc512treed2/sseu24
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
DoublePermutation.c: DoublePermutation.c:506:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakDoublePermutationOnWords' that is compiled without support for 'sse2'
DoublePermutation.c: copyFromState(A, state)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:417:13: note: expanded from macro 'copyFromState'
DoublePermutation.c: X##ba = LOAD128(state[ 0]); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:30:33: note: expanded from macro 'LOAD128'
DoublePermutation.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:506:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakDoublePermutationOnWords' that is compiled without support for 'sse2'
DoublePermutation.c: DoublePermutation.c:418:13: note: expanded from macro 'copyFromState'
DoublePermutation.c: X##be = LOAD128(state[ 1]); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:30:33: note: expanded from macro 'LOAD128'
DoublePermutation.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:506:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakDoublePermutationOnWords' that is compiled without support for 'sse2'
DoublePermutation.c: DoublePermutation.c:419:13: note: expanded from macro 'copyFromState'
DoublePermutation.c: X##bi = LOAD128(state[ 2]); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:30:33: note: expanded from macro 'LOAD128'
DoublePermutation.c: #define LOAD128(a) _mm_load_si128((const V128 *)&(a))
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:506:5: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'KeccakDoublePermutationOnWords' that is compiled without support for 'sse2'
DoublePermutation.c: DoublePermutation.c:420:13: note: expanded from macro 'copyFromState'
DoublePermutation.c: ...

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

Compiler output

Implementation: crypto_hash/keccakc512treed2/sseu4
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWords':
DoublePermutation.c: DoublePermutation.c:417:11: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
DoublePermutation.c: X##ba = LOAD128(state[ 0]); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:506:5: note: in expansion of macro 'copyFromState'
DoublePermutation.c: copyFromState(A, state)
DoublePermutation.c: ^
DoublePermutation.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
DoublePermutation.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
DoublePermutation.c: from DoublePermutation.c:17:
DoublePermutation.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
DoublePermutation.c: _mm_xor_si128 (__m128i __A, __m128i __B)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:73:8: error: called from here
DoublePermutation.c: Cu = XOR128(Abu, XOR128(Agu, XOR128(Aku, XOR128(Amu, Asu)))); \
DoublePermutation.c: ^
DoublePermutation.c: KeccakF-1600-unrolling.macros:88:5: note: in expansion of macro 'prepareTheta'
DoublePermutation.c: prepareTheta \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:507:5: note: in expansion of macro 'rounds'
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
DoublePermutation.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
DoublePermutation.c: from DoublePermutation.c:17:
DoublePermutation.c: ...

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

Compiler output

Implementation: crypto_hash/keccakc512treed2/sseu24
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWords':
DoublePermutation.c: DoublePermutation.c:417:11: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
DoublePermutation.c: X##ba = LOAD128(state[ 0]); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:506:5: note: in expansion of macro 'copyFromState'
DoublePermutation.c: copyFromState(A, state)
DoublePermutation.c: ^
DoublePermutation.c: In file included from /usr/lib/gcc/i686-linux-gnu/5/include/xmmintrin.h:1249:0,
DoublePermutation.c: from /usr/lib/gcc/i686-linux-gnu/5/include/x86intrin.h:31,
DoublePermutation.c: from DoublePermutation.c:17:
DoublePermutation.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:708:1: error: inlining failed in call to always_inline '_mm_store_si128': target specific option mismatch
DoublePermutation.c: _mm_store_si128 (__m128i *__P, __m128i __B)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:43:33: error: called from here
DoublePermutation.c: #define STORE128(a, b) _mm_store_si128((V128 *)&(a), b)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:468:5: note: in expansion of macro 'STORE128'
DoublePermutation.c: STORE128(state[24], X##su); \
DoublePermutation.c: ^
DoublePermutation.c: KeccakF-1600-unrolling.macros:41:5: note: in expansion of macro 'copyToState'
DoublePermutation.c: copyToState(state, A)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:507:5: note: in expansion of macro 'rounds'
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c: ...

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