Implementation notes: amd64, wintermute, crypto_hash/keccakc256treed2

Computer: wintermute
Architecture: amd64
CPU ID: GenuineIntel-000306c3-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_hash
Primitive: keccakc256treed2
TimeImplementationCompilerBenchmark dateSUPERCOP version
13396sseu4clang -O3 -mavx22014050820140505
13588sseu4clang -O3 -mavx2014050820140505
15296sseu24clang -O3 -mavx2014050820140505
15308sseu24clang -O3 -mavx22014050820140505

Compiler output

Implementation: crypto_hash/keccakc256treed2/xopu24
Compiler: cc
DoublePermutation.c: DoublePermutation.c:507:5: warning: implicit declaration of function '_mm_roti_epi64' is invalid in C99 [-Wimplicit-function-declaration]
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:78:21: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Da = XOR128(Cu, ROL64in128(Ce, 1)); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:33:37: note: expanded from macro 'ROL64in128'
DoublePermutation.c: #define ROL64in128(a, o) _mm_roti_epi64(a, o)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:44:50: note: expanded from macro 'XOR128'
DoublePermutation.c: #define XOR128(a, b) _mm_xor_si128(a, b)
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:507:5: error: passing 'int' to parameter of incompatible type '__m128i'
DoublePermutation.c: rounds
DoublePermutation.c: ^~~~~~
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
DoublePermutation.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:78:21: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Da = XOR128(Cu, ROL64in128(Ce, 1)); \
DoublePermutation.c: ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:33:37: note: expanded from macro 'ROL64in128'
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
cc xopu24
clang -O3 xopu24
clang -O3 -mavx xopu24
clang -O3 -mavx2 xopu24

Compiler output

Implementation: crypto_hash/keccakc256treed2/sseu24
Compiler: cc
DoublePermutation.c: DoublePermutation.c:507:5: warning: implicit declaration of function '_mm_shuffle_epi8' is invalid in C99 [-Wimplicit-function-declaration]
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:136:11: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Bko = ROL64in128_8(A##mu); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:38:37: note: expanded from macro 'ROL64in128_8'
DoublePermutation.c: #define ROL64in128_8(a) _mm_shuffle_epi8(a, CONST128(rho8))
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:507:5: error: assigning to 'V128' (aka '__m128i') from incompatible type 'int'
DoublePermutation.c: rounds
DoublePermutation.c: ^~~~~~
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta( 0, A, E) \
DoublePermutation.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:136:9: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Bko = ROL64in128_8(A##mu); \
DoublePermutation.c: ^ ~~~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:507:5: error: assigning to 'V128' (aka '__m128i') from incompatible type 'int'
DoublePermutation.c: rounds
DoublePermutation.c: ^~~~~~
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:17:5: note: expanded from macro 'rounds'
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc sseu24
clang -O3 sseu24

Compiler output

Implementation: crypto_hash/keccakc256treed2/sseu4
Compiler: cc
DoublePermutation.c: DoublePermutation.c:507:5: warning: implicit declaration of function '_mm_shuffle_epi8' is invalid in C99 [-Wimplicit-function-declaration]
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:90:9: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta(i , A, E) \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:136:11: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Bko = ROL64in128_8(A##mu); \
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:38:37: note: expanded from macro 'ROL64in128_8'
DoublePermutation.c: #define ROL64in128_8(a) _mm_shuffle_epi8(a, CONST128(rho8))
DoublePermutation.c: ^
DoublePermutation.c: DoublePermutation.c:507:5: error: assigning to 'V128' (aka '__m128i') from incompatible type 'int'
DoublePermutation.c: rounds
DoublePermutation.c: ^~~~~~
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:90:9: note: expanded from macro 'rounds'
DoublePermutation.c: thetaRhoPiChiIotaPrepareTheta(i , A, E) \
DoublePermutation.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:136:9: note: expanded from macro 'thetaRhoPiChiIotaPrepareTheta'
DoublePermutation.c: Bko = ROL64in128_8(A##mu); \
DoublePermutation.c: ^ ~~~~~~~~~~~~~~~~~~~
DoublePermutation.c: DoublePermutation.c:507:5: error: assigning to 'V128' (aka '__m128i') from incompatible type 'int'
DoublePermutation.c: rounds
DoublePermutation.c: ^~~~~~
DoublePermutation.c: ./KeccakF-1600-unrolling.macros:90:9: note: expanded from macro 'rounds'
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
cc sseu4
clang -O3 sseu4