Implementation notes: amd64, floodyberry, crypto_hash/keccakc256treed2

Computer: floodyberry
Architecture: amd64
CPU ID: GenuineIntel-00010676-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_hash
Primitive: keccakc256treed2
TimeImplementationCompilerBenchmark dateSUPERCOP version
15237sseu4gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
15238sseu4gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
15725sseu4icc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
16137sseu4icc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
18362sseu4clang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505
18388sseu4clang -O3 -march=native -m64 -fomit-frame-pointer2014050820140505
55075sseu24gcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2014050820140505
55600sseu24gcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2014050820140505
58550sseu24icc -m64 -O3 -static -xHost -fomit-frame-pointer2014050820140505
63762sseu24icc -m64 -O1 -static -xHost -fomit-frame-pointer2014050820140505
75888sseu24clang -O1 -march=native -m64 -fomit-frame-pointer2014050820140505
77850sseu24clang -O3 -march=native -m64 -fomit-frame-pointer2014050820140505

Compiler output

Implementation: crypto_hash/keccakc256treed2/xopu24
Compiler: clang -O1 -march=native -m64 -fomit-frame-pointer
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: 2, namely:
CompilerImplementations
clang -O1 -march=native -m64 -fomit-frame-pointer xopu24
clang -O3 -march=native -m64 -fomit-frame-pointer xopu24

Compiler output

Implementation: crypto_hash/keccakc256treed2/xopu24
Compiler: gcc -m64 -O2 -fomit-frame-pointer
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWords':
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible type for argument 2 of '_mm_xor_si128'
DoublePermutation.c: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:1249:1: note: expected '__m128i' but argument is of type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible type for argument 2 of '_mm_xor_si128'
DoublePermutation.c: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:1249:1: note: expected '__m128i' but argument is of type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible type for argument 2 of '_mm_xor_si128'
DoublePermutation.c: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:1249:1: note: expected '__m128i' but argument is of type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible type for argument 2 of '_mm_xor_si128'
DoublePermutation.c: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:1249:1: note: expected '__m128i' but argument is of type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible type for argument 2 of '_mm_xor_si128'
DoublePermutation.c: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:1249:1: note: expected '__m128i' but argument is of type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: ...

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

Compiler output

Implementation: crypto_hash/keccakc256treed2/sseu4
Compiler: gcc -m64 -O2 -fomit-frame-pointer
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWords':
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWordsAfterXoring2x512bits':
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:521:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWordsAfterXoring2x1024bits':
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:535:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
gcc -m64 -O2 -fomit-frame-pointer sseu4
gcc -m64 -O3 -fomit-frame-pointer sseu4

Compiler output

Implementation: crypto_hash/keccakc256treed2/sseu24
Compiler: gcc -m64 -O2 -fomit-frame-pointer
DoublePermutation.c: DoublePermutation.c: In function 'KeccakDoublePermutationOnWords':
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: DoublePermutation.c:507:5: error: incompatible types when assigning to type 'V128' from type 'int'
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
gcc -m64 -O2 -fomit-frame-pointer sseu24
gcc -m64 -O3 -fomit-frame-pointer sseu24

Compiler output

Implementation: crypto_hash/keccakc256treed2/xopu24
Compiler: icc -m64 -O1 -static -xHost -fomit-frame-pointer
DoublePermutation.c: DoublePermutation.c(507): error: argument of type "int" is incompatible with parameter of type "__m128i"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: argument of type "int" is incompatible with parameter of type "__m128i"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: argument of type "int" is incompatible with parameter of type "__m128i"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: argument of type "int" is incompatible with parameter of type "__m128i"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: argument of type "int" is incompatible with parameter of type "__m128i"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: a value of type "int" cannot be assigned to an entity of type "V128"
DoublePermutation.c: rounds
DoublePermutation.c: ^
DoublePermutation.c:
DoublePermutation.c: DoublePermutation.c(507): error: a value of type "int" cannot be assigned to an entity of type "V128"
DoublePermutation.c: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
icc -m64 -O1 -static -xHost -fomit-frame-pointer xopu24
icc -m64 -O3 -static -xHost -fomit-frame-pointer xopu24