Implementation notes: x86, thoth, crypto_hash/blake64

Computer: thoth
Architecture: x86
CPU ID: AuthenticAMD-00000622-0183f9ff
SUPERCOP version: 20160806
Operation: crypto_hash
Primitive: blake64
TimeImplementationCompilerBenchmark dateSUPERCOP version
73915refclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
76810sphlibclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
77154sphlib-smallclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016072620160724
108129sphlib-smallgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
110525sphlibgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
116094sphlib-smallgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
116163sphlibgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
118493refgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016072620160724
119661sphlibgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
119691sphlib-smallgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724
122844refgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
127206sphlibgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
127230refgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016072620160724
128941sphlib-smallgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016072620160724
130273refgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016072620160724

Compiler output

Implementation: crypto_hash/blake64/sse2
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:123:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row1b = _mm_set_epi64((__m64)state->gt;h[3],(__m64)state->gt;h[2]);
hash.c: ^
hash.c: hash.c:124:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row1a = _mm_set_epi64((__m64)state->gt;h[1],(__m64)state->gt;h[0]);
hash.c: ^
hash.c: hash.c:125:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row2b = _mm_set_epi64((__m64)state->gt;h[7],(__m64)state->gt;h[6]);
hash.c: ^
hash.c: hash.c:126:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row2a = _mm_set_epi64((__m64)state->gt;h[5],(__m64)state->gt;h[4]);
hash.c: ^
hash.c: hash.c:127:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row3b = _mm_set_epi64((__m64)0x082EFA98EC4E6C89ULL,
hash.c: ^
hash.c: hash.c:129:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row3a = _mm_set_epi64((__m64)0x13198A2E03707344ULL,
hash.c: ^
hash.c: hash.c:133:13: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row4b = _mm_set_epi64((__m64)0x3F84D5B5B5470917ULL,
hash.c: ^
hash.c: hash.c:135:13: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row4a = _mm_set_epi64((__m64)0xBE5466CF34E90C6CULL,
hash.c: ^
hash.c: hash.c:139:13: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake64/ssse3
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
hash.c: hash.c:75:17: error: always_inline function '_mm_load_si128' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: __m128i r16 = _mm_load_si128((__m128i*)rot16);
hash.c: ^
hash.c: hash.c:128:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row1b = _mm_set_epi64((__m64)state->gt;h[3],(__m64)state->gt;h[2]);
hash.c: ^
hash.c: hash.c:129:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row1a = _mm_set_epi64((__m64)state->gt;h[1],(__m64)state->gt;h[0]);
hash.c: ^
hash.c: hash.c:130:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row2b = _mm_set_epi64((__m64)state->gt;h[7],(__m64)state->gt;h[6]);
hash.c: ^
hash.c: hash.c:131:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row2a = _mm_set_epi64((__m64)state->gt;h[5],(__m64)state->gt;h[4]);
hash.c: ^
hash.c: hash.c:132:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row3b = _mm_set_epi64((__m64)0x082EFA98EC4E6C89ULL,
hash.c: ^
hash.c: hash.c:134:11: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row3a = _mm_set_epi64((__m64)0x13198A2E03707344ULL,
hash.c: ^
hash.c: hash.c:138:13: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: row4b = _mm_set_epi64((__m64)0x3F84D5B5B5470917ULL,
hash.c: ^
hash.c: hash.c:140:13: error: always_inline function '_mm_set_epi64' requires target feature 'sse2', but would be inlined into function 'blake64_compress' that is compiled without support for 'sse2'
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake64/sse2
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: hash.c: In function 'blake64_compress':
hash.c: hash.c:123:9: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
hash.c: row1b = _mm_set_epi64((__m64)state->gt;h[3],(__m64)state->gt;h[2]);
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:129:9: error: called from here
hash.c: row3a = _mm_set_epi64((__m64)0x13198A2E03707344ULL,
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:127:9: error: called from here
hash.c: row3b = _mm_set_epi64((__m64)0x082EFA98EC4E6C89ULL,
hash.c: ^
hash.c: In file included from hash.c:3:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:126:9: error: called from here
hash.c: row2a = _mm_set_epi64((__m64)state->gt;h[5],(__m64)state->gt;h[4]);
hash.c: ^
hash.c: ...

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

Compiler output

Implementation: crypto_hash/blake64/ssse3
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv
hash.c: hash.c: In function 'blake64_compress':
hash.c: hash.c:75:11: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]
hash.c: __m128i r16 = _mm_load_si128((__m128i*)rot16);
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:134:9: error: called from here
hash.c: row3a = _mm_set_epi64((__m64)0x13198A2E03707344ULL,
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:132:9: error: called from here
hash.c: row3b = _mm_set_epi64((__m64)0x082EFA98EC4E6C89ULL,
hash.c: ^
hash.c: In file included from hash.c:4:0:
hash.c: /usr/lib/gcc/i686-linux-gnu/5/include/emmintrin.h:591:1: error: inlining failed in call to always_inline '_mm_set_epi64': target specific option mismatch
hash.c: _mm_set_epi64 (__m64 __q1, __m64 __q0)
hash.c: ^
hash.c: hash.c:131:9: error: called from here
hash.c: row2a = _mm_set_epi64((__m64)state->gt;h[5],(__m64)state->gt;h[4]);
hash.c: ^
hash.c: ...

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