Implementation notes: x86, thoth, crypto_hash/bmw512

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: bmw512
TimeImplementationCompilerBenchmark dateSUPERCOP version
32811optabeclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
32916optc04clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
33072optbbeclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
34136sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
34215optc03clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
38472optbgbeclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
40086optbbegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
40249optabegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
41601sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
42042optc01gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
42114optc02gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
42904optbgbegcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
43648optc04gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
43676optabegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
43693optc04gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
43921optbbegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
43949optc03gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
43974optbbegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
44010optabegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
44049sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
44071sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
44622optc04gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
44898optc01gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
44955optc02gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
45255optc02gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
45282optc01gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
45372optc03gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
45476optbgbegcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
45642optbgbegcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
45879optc03gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
45925optc04gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
46238optbgbegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
46265optbbegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
46267optabegcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
46611sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
47727optc03gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
47847optc02clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
48282optc01clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
52865sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
53625optc01gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
54108optc02gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
59255refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
61683sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
63937sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
68112sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
68370sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
71195refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
71856refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
74182refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
98846refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724

Compiler output

Implementation: crypto_hash/bmw512/optc01
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
BlueMidnightWish.c: BlueMidnightWish.c:1326:86: warning: '&' within '^' [-Wbitwise-op-parentheses]
BlueMidnightWish.c: hashState256(state)->gt;LastPart[LastByte] = hashState256(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: BlueMidnightWish.c:1326:86: note: place parentheses around the '&' expression to silence this warning
BlueMidnightWish.c: hashState256(state)->gt;LastPart[LastByte] = hashState256(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: BlueMidnightWish.c:1360:86: warning: '&' within '^' [-Wbitwise-op-parentheses]
BlueMidnightWish.c: hashState512(state)->gt;LastPart[LastByte] = hashState512(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: BlueMidnightWish.c:1360:86: note: place parentheses around the '&' expression to silence this warning
BlueMidnightWish.c: hashState512(state)->gt;LastPart[LastByte] = hashState512(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: 2 warnings generated.

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

Compiler output

Implementation: crypto_hash/bmw512/optx86sse2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
BlueMidnightWish.c: BlueMidnightWish.c:390:44: warning: incompatible pointer types passing 'u_int64_t *' (aka 'unsigned long long *') to parameter of type 'const __m128i *' [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[00], _mm_load_si128(&hashState512(state)->gt;DoublePipe[0]));
BlueMidnightWish.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1106:31: note: passing argument to parameter '__p' here
BlueMidnightWish.c: _mm_load_si128(__m128i const *__p)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:390:18: warning: incompatible pointer types passing 'u_int64_t *' (aka 'unsigned long long *') to parameter of type '__m128i *' [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[00], _mm_load_si128(&hashState512(state)->gt;DoublePipe[0]));
BlueMidnightWish.c: ^~~~~~~~~
BlueMidnightWish.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1226:26: note: passing argument to parameter '__p' here
BlueMidnightWish.c: _mm_store_si128(__m128i *__p, __m128i __b)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:391:44: warning: incompatible pointer types passing 'u_int64_t *' (aka 'unsigned long long *') to parameter of type 'const __m128i *' [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[02], _mm_load_si128(&hashState512(state)->gt;DoublePipe[2]));
BlueMidnightWish.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1106:31: note: passing argument to parameter '__p' here
BlueMidnightWish.c: _mm_load_si128(__m128i const *__p)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:391:18: warning: incompatible pointer types passing 'u_int64_t *' (aka 'unsigned long long *') to parameter of type '__m128i *' [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[02], _mm_load_si128(&hashState512(state)->gt;DoublePipe[2]));
BlueMidnightWish.c: ^~~~~~~~~
BlueMidnightWish.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.0/include/emmintrin.h:1226:26: note: passing argument to parameter '__p' here
BlueMidnightWish.c: _mm_store_si128(__m128i *__p, __m128i __b)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:392:44: warning: incompatible pointer types passing 'u_int64_t *' (aka 'unsigned long long *') to parameter of type 'const __m128i *' [-Wincompatible-pointer-types]
BlueMidnightWish.c: ...

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

Compiler output

Implementation: crypto_hash/bmw512/optc03
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
BlueMidnightWish.c: BlueMidnightWish.c:688:84: warning: '&' within '^' [-Wbitwise-op-parentheses]
BlueMidnightWish.c: hashState512(state)->gt;LastPart[LastByte] = hashState512(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: BlueMidnightWish.c:688:84: note: place parentheses around the '&' expression to silence this warning
BlueMidnightWish.c: hashState512(state)->gt;LastPart[LastByte] = hashState512(state)->gt;LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: 1 warning generated.

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

Compiler output

Implementation: crypto_hash/bmw512/optc04
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
BlueMidnightWish.c: BlueMidnightWish.c:988:84: warning: '&' within '^' [-Wbitwise-op-parentheses]
BlueMidnightWish.c: hashState512_(state).LastPart[LastByte] = hashState512_(state).LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: BlueMidnightWish.c:988:84: note: place parentheses around the '&' expression to silence this warning
BlueMidnightWish.c: hashState512_(state).LastPart[LastByte] = hashState512_(state).LastPart[LastByte] & (0xff BlueMidnightWish.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
BlueMidnightWish.c: 1 warning generated.

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

Compiler output

Implementation: crypto_hash/bmw512/optx86sse2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
BlueMidnightWish.c: BlueMidnightWish.c: In function 's64_0sse':
BlueMidnightWish.c: BlueMidnightWish.c:87:1: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
BlueMidnightWish.c: {
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c: In function 'Compress512':
BlueMidnightWish.c: BlueMidnightWish.c:390:44: warning: passing argument 1 of '_mm_load_si128' from incompatible pointer type [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[00], _mm_load_si128(&hashState512(state)->gt;DoublePipe[0]));
BlueMidnightWish.c: ^
BlueMidnightWish.c: In file included from BlueMidnightWish.c:12:0:
BlueMidnightWish.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:690:1: note: expected 'const __vector(2) long long int *' but argument is of type 'u_int64_t * {aka long long unsigned int *}'
BlueMidnightWish.c: _mm_load_si128 (__m128i const *__P)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:390:18: warning: passing argument 1 of '_mm_store_si128' from incompatible pointer type [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[00], _mm_load_si128(&hashState512(state)->gt;DoublePipe[0]));
BlueMidnightWish.c: ^
BlueMidnightWish.c: In file included from BlueMidnightWish.c:12:0:
BlueMidnightWish.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:708:1: note: expected '__vector(2) long long int *' but argument is of type 'u_int64_t * {aka long long unsigned int *}'
BlueMidnightWish.c: _mm_store_si128 (__m128i *__P, __m128i __B)
BlueMidnightWish.c: ^
BlueMidnightWish.c: BlueMidnightWish.c:391:44: warning: passing argument 1 of '_mm_load_si128' from incompatible pointer type [-Wincompatible-pointer-types]
BlueMidnightWish.c: _mm_store_si128(&p512[02], _mm_load_si128(&hashState512(state)->gt;DoublePipe[2]));
BlueMidnightWish.c: ^
BlueMidnightWish.c: In file included from BlueMidnightWish.c:12:0:
BlueMidnightWish.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:690:1: note: expected 'const __vector(2) long long int *' but argument is of type 'u_int64_t * {aka long long unsigned int *}'
BlueMidnightWish.c: _mm_load_si128 (__m128i const *__P)
BlueMidnightWish.c: ...

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